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 df80672d..598ee048 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 @@ -2,12 +2,18 @@ package jace.assembly; import org.ibex.nestedvm.UnixRuntime; +// Note: Based on R336 branch of ACME cross assembler +// https://sourceforge.net/projects/acme-crossass/ +// Compiled with these C flags: +// CFLAGS= -O3 -mmemcpy -ffunction-sections -fdata-sections -falign-functions=512 -fno-rename-registers -fno-schedule-insns -fno-delayed-branch -Wstrict-prototypes -march=mips1 -specs=/Users/brobert/Documents/code/nestedvm/upstream/install/mips-unknown-elf/lib/crt0-override.spec -static -mmemcpy --static -Wl,--gc-sections +// Converted with NestedVM using: +// java -cp ../nestedvm/build:../nestedvm/upstream/build/classgen/build org.ibex.nestedvm.Compiler -outformat java -outfile acme.java -o unixRuntime -o assumeTailCalls -o onePage -o maxInsnPerMethod=512 jace.assembly.AcmeCrossAssembler acme + // Auto-generated file, don't perform any code lint checks @SuppressWarnings("all") /* - * This file was generated from acme by Mips2Java on Thu Feb 15 14:30:54 CST - * 2024 + * This file was generated from acme by Mips2Java on Thu Feb 15 14:30:54 CST 2024 */ public final class AcmeCrossAssembler extends UnixRuntime { @@ -16,343 +22,291 @@ 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 */ + private final int[] page = readPages[0]; + private final void run_10000() throws ExecutionException { /* 0x10000 - 0x10800 */ 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; + page[(r29+20)>>>2] = r31; + if(r0 >= 0) { + r31=0x10010; + pc=0x10010; continue; } case 0x10010: - /* Next insn is delay slot */ - r31 = 0x10018; - pc = 0x101ac; + r31=0x10018; + pc=0x101ac; continue; case 0x10018: - if (r0 >= 0) { - /* Next insn is delay slot */ - r31 = 0x10020; - pc = 0x10020; + if(r0 >= 0) { + r31=0x10020; + pc=0x10020; continue; } case 0x10020: - /* Next insn is delay slot */ - r31 = 0x10028; - pc = 0x10208; - run_10200(); - return; + r31=0x10028; + pc=0x10208; + continue; case 0x10028: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; + page[(r29+20)>>>2] = r31; + if(r0 >= 0) { + r31=0x10048; + pc=0x10048; continue; } case 0x10048: - /* Next insn is delay slot */ - r31 = 0x10050; - pc = 0x100e4; + r31=0x10050; + pc=0x100e4; continue; case 0x10050: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; case 0x10060: r4 = 6 << 16; r2 = 6 << 16; - r4 = r4 + -15344; - r2 = r2 + -15341; + r4 = r4 + 26296; + r2 = r2 + 26299; 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) { r25 = 0 << 16; - pc = 0x10088; + pc=0x10088; continue; } r25 = 0 << 16; case 0x10080: - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; case 0x10088: r25 = r25 + 0; - if (r25 == r0) { - /* Next insn is delay slot */ - pc = 0x10080; + if(r25 == r0) { + pc=0x10080; continue; } - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; case 0x1009c: r4 = 6 << 16; r2 = 6 << 16; - r4 = r4 + -15344; - r2 = r2 + -15344; + r4 = r4 + 26296; + r2 = r2 + 26296; 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) { r25 = 0 << 16; - pc = 0x100d0; + pc=0x100d0; continue; } r25 = 0 << 16; case 0x100c8: - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; case 0x100d0: r25 = r25 + 0; - if (r25 == r0) { - /* Next insn is delay slot */ - pc = 0x100c8; + if(r25 == r0) { + pc=0x100c8; continue; } - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; case 0x100e4: r29 = r29 + -40; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + page[(r29+32)>>>2] = r19; r19 = 6 << 16; - addr = r19 + -13832; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r19+27816; + tmp= page[(addr)>>>2]; + 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; + page[(r29+36)>>>2] = r31; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + if(r2 != r0) { + page[(r29+20)>>>2] = r16; + pc=0x10190; continue; } - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; - r18 = 5 << 16; - r17 = 5 << 16; - r18 = r18 + 18440; - r17 = r17 + 18444; + page[(r29+20)>>>2] = r16; + r18 = 6 << 16; + r17 = 6 << 16; + r18 = r18 + -8184; + r17 = r17 + -8180; r16 = 6 << 16; r17 = r17 - r18; - r2 = readPages[(r16 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff]; + r2= page[(r16+27820)>>>2]; r17 = r17 >> 2; r17 = r17 + -1; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ + if(r3 == r0) { 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 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff] = r2; - pc = r3; - r31 = 0x10150; + r3= page[(r3+0)>>>2]; + page[(r16+27820)>>>2] = r2; + pc=r3; + r31=0x10150; return; case 0x10150: - r2 = readPages[(r16 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff]; + r2= page[(r16+27820)>>>2]; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ + if(r3 != r0) { r2 = r2 + 1; - pc = 0x10138; + pc=0x10138; continue; } r2 = r2 + 1; case 0x10164: - /* Next insn is delay slot */ - r31 = 0x1016c; - pc = 0x10060; + r31=0x1016c; + pc=0x10060; continue; case 0x1016c: r2 = 0 << 16; r2 = r2 + 0; - if (r2 == r0) { - /* Next insn is delay slot */ + if(r2 == r0) { r2 = r0 + 1; - pc = 0x1018c; + pc=0x1018c; continue; } r2 = r0 + 1; r4 = 6 << 16; - /* Next insn is delay slot */ - r4 = r4 + -26384; - r31 = 0x10188; - pc = 0x0; + r4 = r4 + 15256; + r31=0x10188; + pc=0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x10188: r2 = r0 + 1; case 0x1018c: - 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; + addr=r19+27816; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; 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) { + page[(r29+20)>>>2] = r31; + pc=0x101d4; continue; } - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + page[(r29+20)>>>2] = r31; r4 = 6 << 16; r5 = 6 << 16; - r4 = r4 + -26384; - /* Next insn is delay slot */ - r5 = r5 + -13824; - r31 = 0x101d4; - pc = 0x0; + r4 = r4 + 15256; + r5 = r5 + 27824; + r31=0x101d4; + pc=0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x101d4: r4 = 6 << 16; - r2 = readPages[(r4 + -26380) >>> 12][((r4 + -26380) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ + r2= page[(r4+15260)>>>2]; + if(r2 == r0) { 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) { + pc=0x101fc; continue; } - /* Next insn is delay slot */ - r4 = r4 + -26380; - pc = r2; - r31 = 0x101fc; + r4 = r4 + 15260; + pc=r2; + r31=0x101fc; return; case 0x101fc: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - case 0x10200: - pc = 0x10200; - return; - 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) { - case 0x10200: - /* Next insn is delay slot */ + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - pc = 0x1009c; - run_10000(); - return; + pc=0x1009c; + continue; case 0x10208: - r2 = 5 << 16; - r2 = readPages[(r2 + 18432) >>> 12][((r2 + 18432) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r2= page[(r2+-8192)>>>2]; r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x10260; + if(r2 == r3) { + pc=0x10260; continue; } r29 = r29 + -32; - 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; + page[(r29+20)>>>2] = r16; + r16 = 6 << 16; + page[(r29+24)>>>2] = r17; + page[(r29+28)>>>2] = r31; + r16 = r16 + -8196; r17 = r0 + -1; case 0x10238: - /* 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= page[(r16+4)>>>2]; + if(r2 != r17) { + 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= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; case 0x10260: - /* Next insn is delay slot */ - pc = r31; + 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - if (r3 != r0) { - /* Next insn is delay slot */ + if(r3 != r0) { r4 = r4 + 1; - pc = 0x1026c; + pc=0x1026c; continue; } r4 = r4 + 1; - /* Next insn is delay slot */ r2 = r4 - r2; - pc = r31; + pc=r31; return; case 0x10284: r29 = r29 + -32; @@ -361,17 +315,16 @@ 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; + page[(r29+16)>>>2] = r17; + page[(r29+20)>>>2] = r18; + 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; @@ -380,34515 +333,46775 @@ 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; - return; - 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) { case 0x10400: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r28 == r0) { - /* Next insn is delay slot */ - pc = 0x1047c; + if(r28 == r0) { + pc=0x1047c; continue; } case 0x10418: - writePages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff] = r5; - /* Next insn is delay slot */ - r31 = 0x10424; - pc = 0x10000; - run_10000(); - return; + page[(r28+-31520)>>>2] = r5; + r31=0x10424; + pc=0x10000; + continue; case 0x10424: r4 = 1 << 16; r4 = r4 + 56; - /* Next insn is delay slot */ - r31 = 0x10434; - pc = 0x3fe00; - run_3fe00(); - return; + r31=0x10434; + pc=0x49600; + run_49000(); return; case 0x10434: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1048c; + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x1048c; continue; } r2 = r16 + 4; r4 = r0 + r0; case 0x1044c: r2 = r2 + 4; - r6 = readPages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff]; + r6= page[(r2+-4)>>>2]; r4 = r4 + 1; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x1044c; + if(r6 != r0) { + pc=0x1044c; continue; } case 0x10460: - r6 = readPages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff]; + r6= page[(r28+-31520)>>>2]; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x10470; - pc = 0x12200; - run_12200(); - return; + r31=0x10470; + pc=0x12400; + run_12000(); return; case 0x10470: r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x1047c; - pc = 0x40200; - run_40200(); - return; + r31=0x1047c; + pc=0x49a00; + run_49800(); return; case 0x1047c: - r2 = 6 << 16; - r28 = r2 + 17424; - /* Next insn is delay slot */ - pc = 0x10418; + r2 = 7 << 16; + r28 = r2 + -6464; + pc=0x10418; continue; case 0x1048c: r4 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x10460; + pc=0x10460; continue; case 0x10600: - pc = 0x10600; - return; - 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) { - case 0x10600: - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r2= page[(r28+-31512)>>>2]; r7 = r4 + r0; - r5 = 5 << 16; - r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; - r6 = 5 << 16; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; r29 = r29 + -24; - 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; + r5 = r5 + -4096; + r6 = r6 + 3672; + page[(r29+20)>>>2] = r31; + r31=0x1062c; + pc=0x4b800; + run_4b800(); return; case 0x1062c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x10638; - pc = 0x40200; - run_40200(); - return; + r31=0x10638; + pc=0x49a00; + run_49800(); 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 */ + private final void run_10800() throws ExecutionException { /* 0x10800 - 0x11000 */ int addr, tmp; - for (;;) { - switch (pc) { + for(;;) { + switch(pc) { case 0x10800: - 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; - case 0x10824: - r4 = r16 + -24536; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x10834; - pc = 0x1cc00; - run_1cc00(); - return; + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r29 = r29 + -24; + r5 = r5 + -4068; + r6 = r6 + 10824; + page[(r29+20)>>>2] = r31; + r31=0x10828; + pc=0x4b800; + run_4b800(); return; + case 0x10828: + r4 = r0 + 1; + r31=0x10834; + pc=0x49a00; + run_49800(); 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; + r2= page[(r28+-31512)>>>2]; + r7 = r4 + r0; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r29 = r29 + -24; + r5 = r5 + -4036; + r6 = r6 + 3672; + page[(r29+20)>>>2] = r31; + r31=0x10860; + pc=0x4b800; + run_4b800(); return; + case 0x10860: + r4 = r0 + 1; + r31=0x1086c; + pc=0x49a00; + run_49800(); return; + case 0x1086c: 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) { - case 0x10a00: - 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; - r3 = r0 + 37; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x10a74; + r4 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -3992; + page[(r29+20)>>>2] = r31; + r31=0x10a18; + pc=0x4f800; + run_4f800(); return; + case 0x10a18: + r4 = 6 << 16; + r4 = r4 + -3896; + r31=0x10a28; + pc=0x4f800; + run_4f800(); return; + case 0x10a28: + r4 = 6 << 16; + r4 = r4 + -3816; + r31=0x10a38; + pc=0x4f800; + run_4f800(); return; + case 0x10a38: + r4 = r0 + r0; + r31=0x10a44; + pc=0x49a00; + run_49800(); return; + case 0x10a44: + case 0x10c00: + r29 = r29 + -64; + page[(r29+32)>>>2] = r17; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r23; + page[(r29+52)>>>2] = r22; + page[(r29+48)>>>2] = r21; + page[(r29+44)>>>2] = r20; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + page[(r29+28)>>>2] = r16; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + r17 = r4 + r0; + if(r16 == r0) { + pc=0x10df0; continue; } + r22 = 6 << 16; + r20 = 6 << 16; + r19 = 6 << 16; + r22 = r22 + 360; + r21 = 6 << 16; + r20 = r20 + 588; + r19 = r19 + 628; + r18 = 6 << 16; + case 0x10c58: + r2 = r16 + -68; + r2 = r2 & 255; + r3 = (r2&0xffffffffL) < (51&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x10d74; + continue; + } + r2 = r2 << 2; + r2 = r22 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x10c84: + r19 = 6 << 16; + r4 = r19 + 17104; + r31=0x10c94; + pc=0x1be00; + run_1b800(); return; + case 0x10c94: + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r20 = r17 + 1; + r2 = r0 + 61; + r16 = r20 + r0; + if(r5 == r2) { + pc=0x10cec; + continue; + } + if(r5 == r0) { + pc=0x10fbc; + continue; + } + r18 = r19 + 17104; + r17 = r0 + 61; + pc=0x10ccc; + continue; + case 0x10cc4: + if(r5 == r0) { + pc=0x10fbc; + continue; + } + case 0x10ccc: + r16 = r16 + 1; + r4 = r18 + r0; + r31=0x10cdc; + pc=0x1c400; + run_1c000(); return; + case 0x10cdc: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + if(r5 != r17) { + pc=0x10cc4; + continue; + } + case 0x10cec: + addr=r16+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 == r0) { + pc=0x10fbc; + continue; + } + r3 = r0 + 37; + r4 = r16 + 1; + if(r2 == r3) { + pc=0x1101c; + run_11000(); return; + } r3 = r0 + 38; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x10a84; - continue; + if(r2 == r3) { + pc=0x11044; + run_11000(); return; } r3 = r0 + 36; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x10a94; - continue; + if(r2 == r3) { + pc=0x11054; + run_11000(); return; } r3 = r0 + 48; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x10aa4; + if(r2 == r3) { + pc=0x10ff0; continue; } - case 0x10a3c: + case 0x10d30: r6 = r0 + 10; - case 0x10a40: + case 0x10d34: r5 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x10a4c; - pc = 0x48800; - run_48800(); + r31=0x10d40; + pc=0x52000; + run_52000(); return; + case 0x10d40: + r4= page[(r29+16)>>>2]; + r17 = r2 + r0; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + if(r16 != r0) { + pc=0x11064; + run_11000(); return; + } + r4 = r19 + 17104; + r5 = r0 + r0; + r31=0x10d68; + pc=0x1c400; + run_1c000(); return; + case 0x10d68: + r4 = r17 + r0; + r31=0x10d74; + pc=0x41200; + run_41000(); return; + case 0x10d74: + r31= page[(r29+60)>>>2]; + r2 = r16 + r0; + r23= page[(r29+56)>>>2]; + r22= page[(r29+52)>>>2]; + r21= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 64; + pc=r31; return; - 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; + case 0x10da8: + r2 = r21 + 31340; + r3= page[(r2+4)>>>2]; + r3 = r3 + 1; + page[(r2+4)>>>2] = r3; + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + r3 = r16 + -48; + r4 = r3 & 255; + r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x10de4; continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + page[(r2+4)>>>2] = r3; + addr=r17+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + r17 = r17 + 1; + case 0x10de4: + r17 = r17 + 1; + if(r16 != r0) { + pc=0x10c58; + continue; + } + case 0x10df0: + r16 = r0 + r0; + pc=0x10d74; + continue; + case 0x10dfc: + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + if(r16 == r0) { + pc=0x10f98; + continue; + } + r4 = r17 + 1; + r31=0x10e18; + pc=0x28000; + run_28000(); return; + case 0x10e18: + r16 = r0 + r0; + pc=0x10d74; + continue; + case 0x10e24: + r4 = 6 << 16; + r4 = r4 + -3896; + r31=0x10e34; + pc=0x4f800; + run_4f800(); return; + case 0x10e34: + r4 = r0 + r0; + r31=0x10e40; + pc=0x49a00; + run_49800(); return; + case 0x10e40: + r31=0x10e48; + pc=0x10a00; + continue; + case 0x10e48: + r4 = r18 + 604; + r31=0x10e54; + pc=0x1b000; + run_1b000(); return; + case 0x10e54: + page[(r28+-31396)>>>2] = r2; + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + pc=0x10de4; + continue; + case 0x10e64: + r4 = r19 + r0; + r31=0x10e70; + pc=0x1b000; + run_1b000(); return; + case 0x10e70: + page[(r28+-31404)>>>2] = r2; + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + pc=0x10de4; + continue; + case 0x10e80: + r4 = r20 + r0; + r31=0x10e8c; + pc=0x1b000; + run_1b000(); return; + case 0x10e8c: + page[(r28+-31408)>>>2] = r2; + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + pc=0x10de4; + continue; + case 0x10e9c: + r17 = r17 + 1; + r5 = 6 << 16; + r4 = r17 + r0; + r5 = r5 + -1392; + r31=0x10eb4; + pc=0x51600; + run_51000(); return; + case 0x10eb4: + if(r2 == r0) { + pc=0x10fc8; + continue; + } + r5 = 6 << 16; + r4 = r17 + r0; + r5 = r5 + -1376; + r31=0x10ed0; + pc=0x51600; + run_51000(); return; + case 0x10ed0: + if(r2 == r0) { + pc=0x1102c; + run_11000(); return; + } + r5 = 6 << 16; + r4 = r17 + r0; + r5 = r5 + -1364; + r31=0x10eec; + pc=0x51600; + run_51000(); return; + case 0x10eec: + if(r2 == r0) { + pc=0x10fdc; + continue; + } + r5 = 6 << 16; + r4 = r17 + r0; + r5 = r5 + -1352; + r31=0x10f08; + pc=0x51600; + run_51000(); return; + case 0x10f08: + if(r2 != r0) { + pc=0x1106c; + run_11000(); return; + } + r3 = r0 + 1; + r2 = 6 << 16; + page[(r2+31352)>>>2] = r3; + r16 = r0 + r0; + pc=0x10d74; + continue; + case 0x10f28: + r31=0x10f30; + pc=0x1ac00; + run_1a800(); return; + case 0x10f30: + r23 = r2 + r0; + if(r2 == r0) { + pc=0x110c0; + run_11000(); return; + } + r16 = 6 << 16; + r4 = r16 + 17104; + r31=0x10f4c; + pc=0x1be00; + run_1b800(); return; + case 0x10f4c: + r4 = r16 + 17104; + r5 = r23 + r0; + r31=0x10f5c; + pc=0x1c600; + run_1c000(); return; + case 0x10f5c: + r4 = r16 + 17104; + r5 = r0 + r0; + r31=0x10f6c; + pc=0x1c400; + run_1c000(); return; + case 0x10f6c: + r4 = r16 + 17104; + r5 = r4 + r0; + r31=0x10f7c; + pc=0x1cc00; + run_1c800(); return; + case 0x10f7c: + r31=0x10f84; + pc=0x34e00; + run_34800(); return; + case 0x10f84: + if(r2 != r0) { + pc=0x11098; + run_11000(); return; + } + addr=r17+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r16 = tmp; + pc=0x10de4; + continue; + case 0x10f98: + r4 = 6 << 16; + r4 = r4 + -1408; + r31=0x10fa8; + pc=0x1b000; + run_1b000(); return; + case 0x10fa8: + r4 = r2 + r0; + r31=0x10fb4; + pc=0x28000; + run_28000(); return; + case 0x10fb4: + pc=0x10d74; + continue; + case 0x10fbc: + r4 = r20 + r0; + r31=0x10fc8; + pc=0x10600; + run_10000(); return; + case 0x10fc8: + r2 = 6 << 16; + page[(r2+31348)>>>2] = r0; + r16 = r0 + r0; + pc=0x10d74; + continue; + case 0x10fdc: + r2 = 6 << 16; + page[(r2+31356)>>>2] = r0; + r16 = r0 + r0; + pc=0x10d74; + continue; + case 0x10ff0: + addr=r16+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r2 = r0 + 88; + r3 = r3 & 223; + r3 = r3 << 24; + case 0x11000: + pc=0x11000; return; - case 0x10a74: - r4 = r4 + 1; - r6 = r0 + 2; - /* 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; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_11000() throws ExecutionException { /* 0x11000 - 0x11800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x11000: + r3 = r3 >> 24; + if(r3 != r2) { + pc=0x10d30; + run_10800(); return; + } + r4 = r16 + 3; r6 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x10a40; + pc=0x10d34; + run_10800(); return; + case 0x1101c: + r4 = r16 + 2; + r6 = r0 + 2; + pc=0x10d34; + run_10800(); return; + case 0x1102c: + r3 = r0 + 4; + r2 = 6 << 16; + page[(r2+31392)>>>2] = r3; + r16 = r0 + r0; + pc=0x10d74; + run_10800(); return; + case 0x11044: + r4 = r16 + 2; + r6 = r0 + 8; + pc=0x10d34; + run_10800(); return; + case 0x11054: + r4 = r16 + 2; + r6 = r0 + 16; + pc=0x10d34; + run_10800(); return; + case 0x11064: + r31=0x1106c; + pc=0x10600; + run_10000(); return; + case 0x1106c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r5 = r5 + -1336; + r6 = r6 + 3672; + r31=0x1108c; + pc=0x4b800; + run_4b800(); return; + case 0x1108c: + r4 = r0 + 1; + r31=0x11098; + pc=0x49a00; + run_49800(); return; + case 0x11098: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1476; + r5 = r0 + 1; + r6 = r0 + 30; + r31=0x110b8; + pc=0x4d600; + run_4d000(); return; + case 0x110b8: + r31=0x110c0; + pc=0x10800; + run_10800(); return; + case 0x110c0: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1444; + r5 = r0 + 1; + r6 = r0 + 35; + r31=0x110e0; + pc=0x4d600; + run_4d000(); return; + case 0x110e0: + r31=0x110e8; + pc=0x10800; + run_10800(); return; + case 0x110e8: + case 0x11200: + r5 = 6 << 16; + r29 = r29 + -40; + r5 = r5 + -1308; + page[(r29+24)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + r16 = r4 + r0; + r31=0x11228; + pc=0x51600; + run_51000(); return; + case 0x11228: + if(r2 == r0) { + pc=0x11e08; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1300; + r31=0x11244; + pc=0x51600; + run_51000(); return; + case 0x11244: + if(r2 == r0) { + pc=0x11540; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1292; + r31=0x11260; + pc=0x51600; + run_51000(); return; + case 0x11260: + if(r2 == r0) { + pc=0x115c4; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1284; + r31=0x1127c; + pc=0x51600; + run_51000(); return; + case 0x1127c: + if(r2 == r0) { + pc=0x114ec; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1272; + r31=0x11298; + pc=0x51600; + run_51000(); return; + case 0x11298: + if(r2 == r0) { + pc=0x114ec; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1260; + r31=0x112b4; + pc=0x51600; + run_51000(); return; + case 0x112b4: + if(r2 == r0) { + pc=0x115fc; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1248; + r31=0x112d0; + pc=0x51600; + run_51000(); return; + case 0x112d0: + if(r2 == r0) { + pc=0x1161c; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1240; + r31=0x112ec; + pc=0x51600; + run_51000(); return; + case 0x112ec: + if(r2 == r0) { + pc=0x11654; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1216; + r31=0x11308; + pc=0x51600; + run_51000(); return; + case 0x11308: + if(r2 == r0) { + pc=0x11710; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1152; + r31=0x11324; + pc=0x51600; + run_51000(); return; + case 0x11324: + if(r2 == r0) { + pc=0x1187c; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -1060; + r31=0x11340; + pc=0x51600; + run_51000(); return; + case 0x11340: + if(r2 == r0) { + pc=0x118f0; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -996; + r31=0x1135c; + pc=0x51600; + run_51000(); return; + case 0x1135c: + if(r2 == r0) { + pc=0x119fc; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -964; + r31=0x11378; + pc=0x51600; + run_51000(); return; + case 0x11378: + if(r2 == r0) { + pc=0x11aac; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -936; + r31=0x11394; + pc=0x51600; + run_51000(); return; + case 0x11394: + if(r2 == r0) { + pc=0x1150c; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -924; + r31=0x113b0; + pc=0x51600; + run_51000(); return; + case 0x113b0: + if(r2 == r0) { + pc=0x114d4; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -916; + r31=0x113cc; + pc=0x51600; + run_51000(); return; + case 0x113cc: + if(r2 == r0) { + pc=0x11528; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -904; + r31=0x113e8; + pc=0x51600; + run_51000(); return; + case 0x113e8: + if(r2 == r0) { + pc=0x115b0; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -888; + r31=0x11404; + pc=0x51600; + run_51000(); return; + case 0x11404: + if(r2 == r0) { + pc=0x115e4; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -872; + r31=0x11420; + pc=0x51600; + run_51000(); return; + case 0x11420: + if(r2 == r0) { + pc=0x1163c; + continue; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -864; + r31=0x1143c; + pc=0x51600; + run_51000(); return; + case 0x1143c: + if(r2 == r0) { + pc=0x11b74; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -704; + r31=0x11458; + pc=0x51600; + run_51000(); return; + case 0x11458: + if(r2 == r0) { + pc=0x11bec; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -680; + r31=0x11474; + pc=0x51600; + run_51000(); return; + case 0x11474: + if(r2 == r0) { + pc=0x119d0; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -672; + r31=0x11490; + pc=0x51600; + run_51000(); return; + case 0x11490: + if(r2 == r0) { + pc=0x11b5c; + run_11800(); return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -664; + r31=0x114ac; + pc=0x51600; + run_51000(); return; + case 0x114ac: + if(r2 == r0) { + pc=0x11c9c; + run_11800(); return; + } + case 0x114b4: + r31= page[(r29+36)>>>2]; + r2 = r16 + r0; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x114d4: + r3 = r0 + 1; + r2 = 6 << 16; + page[(r2+31364)>>>2] = r3; + r16 = r0 + r0; + pc=0x114b4; continue; - case 0x10aa4: - addr = r4 + 1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x114ec: + r4 = 6 << 16; + r4 = r4 + 604; + r31=0x114fc; + pc=0x1b000; + run_1b000(); return; + case 0x114fc: + page[(r28+-31396)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x1150c: + r2= page[(r28+-31512)>>>2]; + r16 = r0 + r0; + r3= page[(r2+8)>>>2]; + r2 = 6 << 16; + page[(r2+31372)>>>2] = r3; + pc=0x114b4; + continue; + case 0x11528: + r3 = r0 + 46; + r2 = 6 << 16; + addr=r2+31340; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x11540: + r31=0x11548; + pc=0x1ac00; + run_1a800(); return; + case 0x11548: + r17 = r2 + r0; + if(r2 == r0) { + pc=0x11ee4; + run_11800(); return; + } + r16 = 6 << 16; + r4 = r16 + 17104; + r31=0x11564; + pc=0x1be00; + run_1b800(); return; + case 0x11564: + r4 = r16 + 17104; + r5 = r17 + r0; + r31=0x11574; + pc=0x1c600; + run_1c000(); return; + case 0x11574: + r4 = r16 + 17104; + r5 = r0 + r0; + r31=0x11584; + pc=0x1c400; + run_1c000(); return; + case 0x11584: + r4 = r16 + 17104; + r5 = r4 + r0; + r31=0x11594; + pc=0x1cc00; + run_1c800(); return; + case 0x11594: + r31=0x1159c; + pc=0x34e00; + run_34800(); return; + case 0x1159c: + if(r2 != r0) { + pc=0x11f0c; + run_11800(); return; + } + case 0x115a4: + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x115b0: + r2 = 6 << 16; + page[(r2+31376)>>>2] = r0; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x115c4: + r4 = 6 << 16; + r4 = r4 + 628; + r31=0x115d4; + pc=0x1b000; + run_1b000(); return; + case 0x115d4: + page[(r28+-31404)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x115e4: + r3 = r0 + -2; + r2 = 6 << 16; + page[(r2+31380)>>>2] = r3; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x115fc: + r4 = 6 << 16; + r4 = r4 + 564; + r31=0x1160c; + pc=0x1b000; + run_1b000(); return; + case 0x1160c: + page[(r28+-31400)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x1161c: + r4 = 6 << 16; + r4 = r4 + 588; + r31=0x1162c; + pc=0x1b000; + run_1b000(); return; + case 0x1162c: + page[(r28+-31408)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x1163c: + r3 = r0 + 1; + r2 = 6 << 16; + page[(r2+31384)>>>2] = r3; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x11654: + r4 = 6 << 16; + r4 = r4 + -1232; + r31=0x11664; + pc=0x1b000; + run_1b000(); return; + case 0x11664: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r16 = r2 + r0; + r2 = r0 + 37; + if(r3 == r2) { + pc=0x11cb8; + run_11800(); return; + } + r2 = r0 + 38; + if(r3 == r2) { + pc=0x11d18; + run_11800(); return; + } + r2 = r0 + 36; + if(r3 == r2) { + pc=0x11d78; + run_11800(); return; + } + r2 = r0 + 48; + if(r3 == r2) { + pc=0x116e4; + continue; + } + case 0x1169c: + r4 = r16 + r0; + r6 = r0 + 10; + case 0x116a4: + r5 = r29 + 16; + r31=0x116b0; + pc=0x52000; + run_52000(); return; + case 0x116b0: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + run_11800(); return; + } + if(r2 < 0) { + pc=0x11f34; + run_11800(); return; + } + r3 = 6 << 16; + page[(r3+31408)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + continue; + case 0x116e4: + addr=r16+1; + tmp= page[(addr)>>>2]; + 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 = 0x10a3c; + if(r3 != r2) { + pc=0x1169c; continue; } - r4 = r4 + 2; + r4 = r16 + 2; r6 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x10a40; + pc=0x116a4; continue; - case 0x10ad0: - /* Next insn is delay slot */ - r31 = 0x10ad8; - pc = 0x10600; - run_10600(); + case 0x11710: + r4 = 6 << 16; + r4 = r4 + -1208; + r31=0x11720; + pc=0x1b000; + run_1b000(); return; + case 0x11720: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r16 = r2 + r0; + r2 = r0 + 37; + if(r3 == r2) { + pc=0x11cd8; + run_11800(); return; + } + r2 = r0 + 38; + if(r3 == r2) { + pc=0x11d38; + run_11800(); return; + } + r2 = r0 + 36; + if(r3 == r2) { + pc=0x11d98; + run_11800(); return; + } + r2 = r0 + 48; + if(r3 == r2) { + pc=0x11850; + run_11800(); return; + } + case 0x11758: + r4 = r16 + r0; + r6 = r0 + 10; + case 0x11760: + r5 = r29 + 16; + r31=0x1176c; + pc=0x52000; + run_52000(); return; + case 0x1176c: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + run_11800(); return; + } + if(r2 < 0) { + pc=0x11f34; + run_11800(); return; + } + r17 = 6 << 16; + r4 = 6 << 16; + r17 = r17 + 31340; + r4 = r4 + -1176; + page[(r17+72)>>>2] = r2; + r31=0x117a8; + pc=0x1b000; + run_1b000(); return; + case 0x117a8: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r16 = r2 + r0; + r2 = r0 + 37; + if(r3 == r2) { + pc=0x11cc8; + run_11800(); return; + } + r2 = r0 + 38; + if(r3 == r2) { + pc=0x11d28; + run_11800(); return; + } + r2 = r0 + 36; + if(r3 == r2) { + pc=0x11d88; + run_11800(); return; + } + r2 = r0 + 48; + if(r3 == r2) { + pc=0x11824; + run_11800(); return; + } + case 0x117e0: + r4 = r16 + r0; + r6 = r0 + 10; + case 0x117e8: + r5 = r29 + 16; + r31=0x117f4; + pc=0x52000; + run_52000(); return; + case 0x117f4: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + case 0x11800: + pc=0x11800; return; - case 0x10ad8: - case 0x10c00: - pc = 0x10c00; - 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_10c00() throws ExecutionException { /* 0x10c00 - 0x10e00 */ + private final void run_11800() throws ExecutionException { /* 0x11800 - 0x12000 */ 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; + for(;;) { + switch(pc) { + case 0x11800: + if(r3 != r0) { + pc=0x11f40; 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; + if(r2 < 0) { + pc=0x11f34; 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) { - case 0x11000: - 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 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; - return; - 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) { - case 0x11200: - 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: - 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: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x11574; - run_11400(); - return; - } - 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 0x112ec: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x11604; - run_11600(); - return; - } - r5 = 5 << 16; - r4 = r16 + r0; - r5 = r5 + 23260; - /* Next insn is delay slot */ - r31 = 0x11308; - pc = 0x47e00; - run_47e00(); - return; - 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) { - case 0x11400: - case 0x11404: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x11594; - continue; - } - r5 = 5 << 16; - r4 = r16 + r0; - r5 = r5 + 23604; - /* Next insn is delay slot */ - r31 = 0x11420; - pc = 0x47e00; - run_47e00(); - return; - 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; + page[(r17+76)>>>2] = r2; 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) { - case 0x11600: - case 0x11604: - r4 = 5 << 16; - r4 = r4 + 23244; - /* Next insn is delay slot */ - r31 = 0x11614; - pc = 0x1b400; - run_1b400(); - return; - 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; + pc=0x114b4; + run_11000(); return; + case 0x11824: + addr=r16+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r2 = r0 + 88; + r3 = r3 & 223; + r3 = r3 << 24; + r3 = r3 >> 24; + if(r3 != r2) { + pc=0x117e0; + run_11000(); 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; + r4 = r16 + 2; + r6 = r0 + 16; + pc=0x117e8; + run_11000(); return; + case 0x11850: + addr=r16+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r2 = r0 + 88; + r3 = r3 & 223; + r3 = r3 << 24; + r3 = r3 >> 24; + if(r3 != r2) { + pc=0x11758; + run_11000(); 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: + r4 = r16 + 2; + r6 = r0 + 16; + pc=0x11760; + run_11000(); return; + case 0x1187c: + r31=0x11884; + pc=0x1ac00; + run_1a800(); return; + case 0x11884: r17 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1193c; - run_11800(); - return; + if(r2 == r0) { + pc=0x11f94; + continue; + } + r16 = 6 << 16; + r4 = r16 + 17104; + r31=0x118a0; + pc=0x1be00; + run_1b800(); return; + case 0x118a0: + r4 = r16 + 17104; + r5 = r17 + r0; + r31=0x118b0; + pc=0x1c600; + run_1c000(); return; + case 0x118b0: + r4 = r16 + 17104; + r5 = r0 + r0; + r31=0x118c0; + pc=0x1c400; + run_1c000(); return; + case 0x118c0: + r4 = r16 + 17104; + r5 = r4 + r0; + r31=0x118d0; + pc=0x1cc00; + run_1c800(); return; + case 0x118d0: + r31=0x118d8; + pc=0x1b600; + run_1b000(); return; + case 0x118d8: + if(r2 == r0) { + pc=0x11f48; + continue; + } + page[(r28+-31392)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + run_11000(); return; + case 0x118f0: + r4 = 6 << 16; + r4 = r4 + -1052; + r31=0x11900; + pc=0x1b000; + run_1b000(); return; + case 0x11900: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r4 = r0 + 37; + if(r3 == r4) { + pc=0x11ce8; + continue; + } + r4 = r0 + 38; + if(r3 == r4) { + pc=0x11d48; + continue; + } + r4 = r0 + 36; + if(r3 == r4) { + pc=0x11da8; + continue; + } + r4 = r0 + 48; + if(r3 == r4) { + pc=0x119a4; + continue; + } + case 0x11934: + r6 = r0 + 10; + case 0x11938: + r4 = r2 + r0; + r5 = r29 + 16; + r31=0x11948; + pc=0x52000; + run_52000(); return; + case 0x11948: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + continue; + } + r3 = 6 << 16; + page[(r3+31404)>>>2] = r2; + r2 = r2 + 128; + r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x115a4; + run_11000(); return; + } + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r5 = r5 + -1036; + r6 = r6 + 3672; + r31=0x11998; + pc=0x4b800; + run_4b800(); return; + case 0x11998: + r4 = r0 + 1; + r31=0x119a4; + pc=0x49a00; + run_49800(); return; + case 0x119a4: + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r3 = r0 + 88; + r4 = r4 & 223; + r4 = r4 << 24; + r4 = r4 >> 24; + if(r4 != r3) { + pc=0x11934; + continue; + } + r2 = r2 + 2; + r6 = r0 + 16; + pc=0x11938; + continue; + case 0x119d0: + r2 = 6 << 16; + r2 = r2 + 31340; + r3 = r0 + 8; + page[(r2+52)>>>2] = r3; + r3 = r0 + 1; + page[(r2+48)>>>2] = r3; + r3 = 256 << 16; + page[(r2+60)>>>2] = r3; + r16 = r0 + r0; + pc=0x114b4; + run_11000(); return; + case 0x119fc: + r4 = 6 << 16; + r4 = r4 + -984; + r31=0x11a0c; + pc=0x1b000; + run_1b000(); return; + case 0x11a0c: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r4 = r0 + 37; + if(r3 == r4) { + pc=0x11cf8; + continue; + } + r4 = r0 + 38; + if(r3 == r4) { + pc=0x11d58; + continue; + } + r4 = r0 + 36; + if(r3 == r4) { + pc=0x11db8; + continue; + } + r4 = r0 + 48; + if(r3 == r4) { + pc=0x11a80; + continue; + } + case 0x11a40: + r6 = r0 + 10; + case 0x11a44: + r4 = r2 + r0; + r5 = r29 + 16; + r31=0x11a54; + pc=0x52000; + run_52000(); return; + case 0x11a54: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + continue; + } + r3 = 6 << 16; + page[(r3+31360)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + run_11000(); return; + case 0x11a80: + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r3 = r0 + 88; + r4 = r4 & 223; + r4 = r4 << 24; + r4 = r4 >> 24; + if(r4 != r3) { + pc=0x11a40; + continue; + } + r2 = r2 + 2; + r6 = r0 + 16; + pc=0x11a44; + continue; + case 0x11aac: + r4 = 6 << 16; + r4 = r4 + -952; + r31=0x11abc; + pc=0x1b000; + run_1b000(); return; + case 0x11abc: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r4 = r0 + 37; + if(r3 == r4) { + pc=0x11d08; + continue; + } + r4 = r0 + 38; + if(r3 == r4) { + pc=0x11d68; + continue; + } + r4 = r0 + 36; + if(r3 == r4) { + pc=0x11dc8; + continue; + } + r4 = r0 + 48; + if(r3 == r4) { + pc=0x11b30; + continue; + } + case 0x11af0: + r6 = r0 + 10; + case 0x11af4: + r4 = r2 + r0; + r5 = r29 + 16; + r31=0x11b04; + pc=0x52000; + run_52000(); return; + case 0x11b04: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + continue; + } + page[(r28+-32768)>>>2] = r2; + page[(r28+-32764)>>>2] = r2; + r16 = r0 + r0; + pc=0x114b4; + run_11000(); return; + case 0x11b30: + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r3 = r0 + 88; + r4 = r4 & 223; + r4 = r4 << 24; + r4 = r4 >> 24; + if(r4 != r3) { + pc=0x11af0; + continue; + } + r2 = r2 + 2; + r6 = r0 + 16; + pc=0x11af4; + continue; + case 0x11b5c: + r3 = r0 + 1; + r2 = 6 << 16; + page[(r2+31368)>>>2] = r3; + r16 = r0 + r0; + pc=0x114b4; + run_11000(); return; + case 0x11b74: + r31=0x11b7c; + pc=0x1ac00; + run_1a800(); return; + case 0x11b7c: + r17 = r2 + r0; + if(r2 == r0) { + pc=0x11eb4; + continue; } 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; + r18 = r18 + 15264; + r5= page[(r18+4)>>>2]; + if(r5 == r0) { + pc=0x11e10; + continue; } 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) { - case 0x11800: - case 0x11804: + pc=0x11bc0; + continue; + case 0x11bac: r16 = r16 + 12; - r5 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x11898; + r5= page[(r16+4)>>>2]; + if(r5 == r0) { + pc=0x11e10; continue; } - case 0x11818: + case 0x11bc0: 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; + r31=0x11bcc; + pc=0x51600; + run_51000(); return; + case 0x11bcc: + if(r2 != r0) { + pc=0x11bac; continue; } - r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3= page[(r16+0)>>>2]; r2 = 6 << 16; - writePages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff] = r3; + page[(r2+31392)>>>2] = 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: + pc=0x114b4; + run_11000(); return; + case 0x11bec: + r4 = 6 << 16; + r4 = r4 + -692; + r31=0x11bfc; + pc=0x1b000; + run_1b000(); return; + case 0x11bfc: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r4 = r0 + 37; + if(r3 == r4) { + pc=0x11dd8; + continue; + } + r4 = r0 + 38; + if(r3 == r4) { + pc=0x11de8; + continue; + } + r4 = r0 + 36; + if(r3 == r4) { + pc=0x11df8; + continue; + } + r4 = r0 + 48; + if(r3 == r4) { + pc=0x11c70; + continue; + } + case 0x11c30: + r6 = r0 + 10; + case 0x11c34: r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x11860; - pc = 0x10a00; - run_10a00(); - return; - case 0x11860: + r5 = r29 + 16; + r31=0x11c44; + pc=0x52000; + run_52000(); return; + case 0x11c44: + r4= page[(r29+16)>>>2]; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x11f40; + continue; + } r3 = 6 << 16; - writePages[(r3 + -10252) >>> 12][((r3 + -10252) >>> 2) & 0x3ff] = r2; + page[(r3+31396)>>>2] = 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: + pc=0x114b4; + run_11000(); return; + case 0x11c70: + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r3 = r0 + 88; + r4 = r4 & 223; + r4 = r4 << 24; + r4 = r4 >> 24; + if(r4 != r3) { + pc=0x11c30; + continue; + } + r2 = r2 + 2; + r6 = r0 + 16; + pc=0x11c34; + continue; + case 0x11c9c: + r4 = 6 << 16; + r4 = r4 + -3896; + r31=0x11cac; + pc=0x4f800; + run_4f800(); return; + case 0x11cac: 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: - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - r4 = 5 << 16; - r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; - r4 = r4 + 23620; + r31=0x11cb8; + pc=0x49a00; + run_49800(); return; + case 0x11cb8: + r4 = r16 + 1; + r6 = r0 + 2; + pc=0x116a4; + run_11000(); return; + case 0x11cc8: + r4 = r16 + 1; + r6 = r0 + 2; + pc=0x117e8; + run_11000(); return; + case 0x11cd8: + r4 = r16 + 1; + r6 = r0 + 2; + pc=0x11760; + run_11000(); return; + case 0x11ce8: + r2 = r2 + 1; + r6 = r0 + 2; + pc=0x11938; + continue; + case 0x11cf8: + r2 = r2 + 1; + r6 = r0 + 2; + pc=0x11a44; + continue; + case 0x11d08: + r2 = r2 + 1; + r6 = r0 + 2; + pc=0x11af4; + continue; + case 0x11d18: + r4 = r16 + 1; + r6 = r0 + 8; + pc=0x116a4; + run_11000(); return; + case 0x11d28: + r4 = r16 + 1; + r6 = r0 + 8; + pc=0x117e8; + run_11000(); return; + case 0x11d38: + r4 = r16 + 1; + r6 = r0 + 8; + pc=0x11760; + run_11000(); return; + case 0x11d48: + r2 = r2 + 1; + r6 = r0 + 8; + pc=0x11938; + continue; + case 0x11d58: + r2 = r2 + 1; + r6 = r0 + 8; + pc=0x11a44; + continue; + case 0x11d68: + r2 = r2 + 1; + r6 = r0 + 8; + pc=0x11af4; + continue; + case 0x11d78: + r4 = r16 + 1; + r6 = r0 + 16; + pc=0x116a4; + run_11000(); return; + case 0x11d88: + r4 = r16 + 1; + r6 = r0 + 16; + pc=0x117e8; + run_11000(); return; + case 0x11d98: + r4 = r16 + 1; + r6 = r0 + 16; + pc=0x11760; + run_11000(); return; + case 0x11da8: + r2 = r2 + 1; + r6 = r0 + 16; + pc=0x11938; + continue; + case 0x11db8: + r2 = r2 + 1; + r6 = r0 + 16; + pc=0x11a44; + continue; + case 0x11dc8: + r2 = r2 + 1; + r6 = r0 + 16; + pc=0x11af4; + continue; + case 0x11dd8: + r2 = r2 + 1; + r6 = r0 + 2; + pc=0x11c34; + continue; + case 0x11de8: + r2 = r2 + 1; + r6 = r0 + 8; + pc=0x11c34; + continue; + case 0x11df8: + r2 = r2 + 1; + r6 = r0 + 16; + pc=0x11c34; + continue; + case 0x11e08: + r31=0x11e10; + pc=0x10a00; + run_10800(); return; + case 0x11e10: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -856; 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]; + r31=0x11e30; + pc=0x4d600; + run_4d000(); return; + case 0x11e30: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; r6 = r0 + 69; - r4 = r4 + 23688; + r4 = r4 + -788; r5 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x118d8; - pc = 0x43e00; - run_43e00(); - return; - case 0x118d8: - r6 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x1191c; + r31=0x11e50; + pc=0x4d600; + run_4d000(); return; + case 0x11e50: + r6= page[(r18+4)>>>2]; + if(r6 == r0) { + pc=0x11e94; 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]; + r16 = 6 << 16; + r16 = r16 + -716; + case 0x11e68: + r2= page[(r28+-31512)>>>2]; + r7= page[(r18+8)>>>2]; + r4= page[(r2+12)>>>2]; 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; + r31=0x11e84; + pc=0x4b800; + run_4b800(); return; + case 0x11e84: + r6= page[(r18+4)>>>2]; + if(r6 != r0) { + pc=0x11e68; continue; } - case 0x1191c: - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + case 0x11e94: + r2= page[(r28+-31512)>>>2]; 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 0x11930: + r5= page[(r2+12)>>>2]; + r31=0x11ea8; + pc=0x4ba00; + run_4b800(); return; + case 0x11ea8: 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; + r31=0x11eb4; + pc=0x49a00; + run_49800(); return; + case 0x11eb4: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -820; 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; + r31=0x11ed8; + pc=0x4d600; + run_4d000(); return; + case 0x11ed8: + r18 = r18 + 15264; + pc=0x11e30; 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; + case 0x11ee4: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1444; 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; + r6 = r0 + 35; + r31=0x11f04; + pc=0x4d600; + run_4d000(); return; + case 0x11f04: + r31=0x11f0c; + pc=0x10800; + run_10800(); return; + case 0x11f0c: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1476; 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; + r31=0x11f2c; + pc=0x4d600; + run_4d000(); return; + case 0x11f2c: + pc=0x11f04; continue; - case 0x11a00: - pc = 0x11a00; - return; - 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) { - case 0x11a00: - 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; - } - 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; - } - 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; - 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: - 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 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; - return; - 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) { - case 0x11c00: - r4 = r16 + 1; - /* Next insn is delay slot */ - r31 = 0x11c0c; - pc = 0x10a00; - run_10a00(); - return; - 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: + case 0x11f34: 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: + r31=0x11f40; + pc=0x10834; + run_10800(); return; + case 0x11f40: + r31=0x11f48; + pc=0x10600; + run_10000(); return; + case 0x11f48: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1148; + r5 = r0 + 1; + r6 = r0 + 25; + r31=0x11f68; + pc=0x4d600; + run_4d000(); return; + case 0x11f68: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r5 = r5 + -1088; + r6 = r6 + 3824; + r31=0x11f88; + pc=0x4b800; + run_4b800(); return; + case 0x11f88: 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) { - case 0x11e00: - 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 = 0x11f14; - continue; - } - r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x11e70; - pc = 0x38000; - run_38000(); - return; - case 0x11e70: - r4 = r16 + r0; - /* 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; - } - r5 = r28 + -32756; - /* Next insn is delay slot */ - r31 = 0x11e98; - pc = 0x41e00; - run_41e00(); - return; - 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; + r31=0x11f94; + pc=0x49a00; + run_49800(); return; + case 0x11f94: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -1120; + r5 = r0 + 1; + r6 = r0 + 30; + r31=0x11fb4; + pc=0x4d600; + run_4d000(); return; + case 0x11fb4: + pc=0x11f68; continue; case 0x12000: - pc = 0x12000; + pc=0x12000; 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_12000() throws ExecutionException { /* 0x12000 - 0x12200 */ + private final void run_12000() throws ExecutionException { /* 0x12000 - 0x12800 */ int addr, tmp; - for (;;) { - switch (pc) { + for(;;) { + switch(pc) { case 0x12000: - 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; + r29 = r29 + -32; + page[(r29+20)>>>2] = r16; + r16= page[(r28+-31340)>>>2]; + page[(r29+24)>>>2] = r17; + page[(r29+28)>>>2] = r31; + r17 = r4 + r0; + if(r16 == r0) { + pc=0x1203c; + continue; + } + r4= page[(r16+0)>>>2]; + if(r4 == r0) { + pc=0x1203c; + continue; + } + r31=0x12038; + pc=0x49e00; + run_49800(); return; case 0x12038: - r4 = readPages[(r28 + -31392) >>> 12][((r28 + -31392) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - r31 = 0x12044; - pc = 0x1be00; - run_1be00(); + page[(r16+0)>>>2] = r0; + case 0x1203c: + r4= page[(r28+-31396)>>>2]; + if(r4 == r0) { + pc=0x1207c; + continue; + } + r5 = r28 + -32756; + r31=0x12058; + pc=0x4b600; + run_4b000(); return; + case 0x12058: + r16 = r2 + r0; + if(r2 == r0) { + pc=0x12114; + continue; + } + r4 = r2 + r0; + r31=0x12070; + pc=0x41400; + run_41000(); return; + case 0x12070: + r4 = r16 + r0; + r31=0x1207c; + pc=0x49e00; + run_49800(); return; + case 0x1207c: + r4= page[(r28+-31400)>>>2]; + if(r4 == r0) { + pc=0x120bc; + continue; + } + r5 = r28 + -32756; + r31=0x12098; + pc=0x4b600; + run_4b000(); return; + case 0x12098: + r16 = r2 + r0; + if(r2 == r0) { + pc=0x120d8; + continue; + } + r4 = r2 + r0; + r31=0x120b0; + pc=0x41600; + run_41000(); return; + case 0x120b0: + r4 = r16 + r0; + r31=0x120bc; + pc=0x49e00; + run_49800(); return; + case 0x120bc: + r31= page[(r29+28)>>>2]; + r2 = r17 + r0; + r16= page[(r29+20)>>>2]; + r17= page[(r29+24)>>>2]; + r29 = r29 + 32; + pc=r31; return; - case 0x12044: + case 0x120d8: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6= page[(r28+-31400)>>>2]; + r5 = r5 + -612; + r31=0x120f4; + pc=0x4b800; + run_4b800(); return; + case 0x120f4: + r31= page[(r29+28)>>>2]; + r17 = r0 + 1; + r2 = r17 + r0; + r16= page[(r29+20)>>>2]; + r17= page[(r29+24)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x12114: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6= page[(r28+-31396)>>>2]; + r5 = r5 + -656; + r31=0x12130; + pc=0x4b800; + run_4b800(); return; + case 0x12130: + r17 = r0 + 1; + pc=0x1207c; + continue; + case 0x12200: + r29 = r29 + -48; + page[(r29+32)>>>2] = r19; + r19 = 6 << 16; + r2= page[(r19+31320)>>>2]; + page[(r29+44)>>>2] = r31; + r2 = r2 + 1; + page[(r19+31320)>>>2] = r2; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r31=0x12238; + pc=0x35c00; + run_35800(); return; + case 0x12238: + r4= page[(r28+-31392)>>>2]; + r31=0x12244; + pc=0x1ba00; + run_1b800(); return; + case 0x12244: r2 = 6 << 16; - r4 = readPages[(r2 + -10240) >>> 12][((r2 + -10240) >>> 2) & 0x3ff]; + r4= page[(r2+31408)>>>2]; r2 = r0 + -1; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x12064; + if(r4 == r2) { + pc=0x12264; continue; } r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x12064; - pc = 0x2d800; - run_2d800(); - return; - 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; + r31=0x12264; + pc=0x36800; + run_36800(); return; + case 0x12264: + r31=0x1226c; + pc=0x1d800; + run_1d800(); return; + case 0x1226c: + r31=0x12274; + pc=0x40000; + run_40000(); return; + case 0x12274: + r2= page[(r28+-31388)>>>2]; + r19 = r19 + 31320; + page[(r19+4)>>>2] = r0; + page[(r19+8)>>>2] = r0; + page[(r19+12)>>>2] = r0; + if(r2 <= 0) { + pc=0x12370; continue; } r18 = 6 << 16; - r20 = 5 << 16; - r21 = 5 << 16; + r20 = 6 << 16; + r21 = 6 << 16; r16 = r0 + r0; - r18 = r18 + -15264; - r20 = r20 + 24012; - r21 = r21 + 24052; - /* Next insn is delay slot */ - pc = 0x120e4; + r18 = r18 + 26384; + r20 = r20 + -564; + r21 = r21 + -524; + pc=0x122e4; continue; - case 0x120b4: - r3 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + case 0x122b4: + r3= page[(r28+-31384)>>>2]; r4 = r2 + r0; r17 = r3 + r17; - r5 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r5= page[(r17+0)>>>2]; r16 = r16 + 1; - /* Next insn is delay slot */ - r31 = 0x120d0; - pc = 0x1f600; - run_1f600(); - return; - case 0x120d0: - r2 = readPages[(r28 + -31388) >>> 12][((r28 + -31388) >>> 2) & 0x3ff]; + r31=0x122d0; + pc=0x1ee00; + run_1e800(); return; + case 0x122d0: + r2= page[(r28+-31388)>>>2]; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x12170; + if(r2 == r0) { + pc=0x12370; continue; } - case 0x120e4: - r2 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + case 0x122e4: + r2= page[(r28+-31384)>>>2]; r17 = r16 << 2; r2 = r2 + r17; - r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4= page[(r2+0)>>>2]; r5 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x12100; - pc = 0x41e00; - run_41e00(); - return; - case 0x12100: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x120b4; + r31=0x12300; + pc=0x4b600; + run_4b000(); return; + case 0x12300: + if(r2 != r0) { + pc=0x122b4; continue; } - r2 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; - r3 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r2= page[(r28+-31384)>>>2]; + r3= page[(r28+-31512)>>>2]; r2 = r2 + r17; - r4 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; - r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4= page[(r3+12)>>>2]; + r6= page[(r2+0)>>>2]; 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]; + r31=0x12328; + pc=0x4b800; + run_4b800(); return; + case 0x12328: + r2= page[(r28+-31384)>>>2]; 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 */ + r2= page[(r17+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 45; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x121b0; + if(r3 == r2) { + pc=0x123b0; continue; } - case 0x1214c: - r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + case 0x1234c: + r2= page[(r19+8)>>>2]; r16 = r16 + 1; r2 = r2 + 1; - writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r28 + -31388) >>> 12][((r28 + -31388) >>> 2) & 0x3ff]; + page[(r19+8)>>>2] = r2; + r2= page[(r28+-31388)>>>2]; r2 = r16 < r2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x120e4; + if(r2 != r0) { + pc=0x122e4; 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; + case 0x12370: + r31=0x12378; + pc=0x35e00; + run_35800(); return; + case 0x12378: + r2= page[(r19+8)>>>2]; + if(r2 != r0) { + pc=0x123d4; 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]; + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x121b0: - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + case 0x123b0: + r2= page[(r28+-31512)>>>2]; r4 = r21 + r0; - r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r7= page[(r2+12)>>>2]; 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; + r31=0x123cc; + pc=0x4d600; + run_4d000(); return; + case 0x123cc: + pc=0x1234c; continue; - case 0x121d4: + case 0x123d4: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x121e0; - pc = 0x11e00; - run_11e00(); - return; - case 0x121e0: + r31=0x123e0; + pc=0x12000; + continue; + case 0x123e0: r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x121ec; - pc = 0x40200; - run_40200(); - return; - case 0x121ec: - case 0x12200: - pc = 0x12200; - return; - 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) { - case 0x12200: + r31=0x123ec; + pc=0x49a00; + run_49800(); return; + case 0x123ec: + case 0x12400: r29 = r29 + -48; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + page[(r29+32)>>>2] = r17; r17 = 6 << 16; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + page[(r29+28)>>>2] = 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: + r4 = r17 + 31340; + page[(r29+16)>>>2] = r5; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + r31=0x12430; + pc=0x1f000; + run_1f000(); return; + case 0x12430: 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; + r5= page[(r29+16)>>>2]; + if(r16 == r2) { + pc=0x127e0; + continue; } 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: + r31=0x1244c; + pc=0x1b200; + run_1b000(); return; + case 0x1244c: + r31=0x12454; + pc=0x37a00; + run_37800(); return; + case 0x12454: r4 = 1 << 16; r5 = 1 << 16; - r4 = r4 + 6656; + r4 = r4 + 3072; r5 = r5 + 4608; - /* Next insn is delay slot */ - r31 = 0x1226c; - pc = 0x1b200; - run_1b200(); - return; - case 0x1226c: - r6 = 5 << 16; + r31=0x1246c; + pc=0x1ae00; + run_1a800(); return; + case 0x1246c: + r6 = 6 << 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]; + r6 = r6 + -456; + r17 = r17 + 31340; + r31=0x12488; + pc=0x1b400; + run_1b000(); return; + case 0x12488: + r2= page[(r17+68)>>>2]; r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x122ac; + if(r2 == r3) { + pc=0x124ac; continue; } - r3 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + r3= page[(r17+60)>>>2]; 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; + if(r2 == r0) { + pc=0x127c8; continue; } - r3 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + case 0x124ac: + r2= page[(r17+72)>>>2]; + r3 = r0 + -1; + if(r2 == r3) { + pc=0x124d0; + continue; + } + r3= page[(r17+60)>>>2]; 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; + if(r3 == r0) { + pc=0x127b0; 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; + case 0x124d0: + r3= page[(r17+76)>>>2]; + r4 = r0 + -1; + if(r3 == r4) { + pc=0x12508; + continue; } - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x12308; + r5= page[(r17+60)>>>2]; + r5 = r5 < r3 ? 1 : 0; + if(r5 != r0) { + pc=0x12798; + continue; + } + if(r2 == r4) { + pc=0x12508; continue; } r2 = r2 < r3 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1256c; - run_12400(); - return; + if(r2 == r0) { + pc=0x1276c; + continue; } - case 0x12308: - /* Next insn is delay slot */ - r31 = 0x12310; - pc = 0x2bc00; - run_2bc00(); - return; - case 0x12310: + case 0x12508: + r31=0x12510; + pc=0x35400; + run_35000(); return; + case 0x12510: 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 = r3 + 27848; + page[(r28+-31340)>>>2] = r2; + page[(r2+8)>>>2] = r0; + page[(r2+12)>>>2] = r0; + page[(r2+4)>>>2] = r0; + r2= page[(r17+4)>>>2]; + page[(r3+27848)>>>2] = r0; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1234c; + if(r2 != r0) { + pc=0x1254c; continue; } - r4 = 5 << 16; - r4 = r4 + 24344; - /* Next insn is delay slot */ - r31 = 0x1234c; - pc = 0x46000; - run_46000(); - return; - case 0x1234c: + r4 = 6 << 16; + r4 = r4 + -232; + r31=0x1254c; + pc=0x4f800; + run_4f800(); return; + case 0x1254c: r2 = 6 << 16; - r18 = r2 + -10328; + r18 = r2 + 31320; 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; + page[(r18+16)>>>2] = r0; + page[(r2+31320)>>>2] = r3; + r31=0x12568; + pc=0x12200; + continue; + case 0x12568: + r16= page[(r18+4)>>>2]; + if(r16 == r0) { + pc=0x125d0; continue; } - r19 = 5 << 16; - r19 = r19 + 24356; - /* Next insn is delay slot */ - pc = 0x12398; + r19 = 6 << 16; + r19 = r19 + -220; + pc=0x12598; continue; - case 0x12388: + case 0x12588: r16 = r2 < r16 ? 1 : 0; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x124c0; - run_12400(); - return; + if(r16 == r0) { + pc=0x126c0; + continue; } r16 = r2 + r0; - case 0x12398: - r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + case 0x12598: + r2= page[(r17+4)>>>2]; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x123b8; + if(r2 != r0) { + pc=0x125b8; continue; } r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x123b8; - pc = 0x46000; - run_46000(); - return; - 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; + r31=0x125b8; + pc=0x4f800; + run_4f800(); return; + case 0x125b8: + r31=0x125c0; + pc=0x12200; + continue; + case 0x125c0: + r2= page[(r18+4)>>>2]; + if(r2 != r0) { + pc=0x12588; 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; + case 0x125d0: + r16= page[(r28+-31408)>>>2]; + if(r16 == r0) { + pc=0x1265c; + continue; } - r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2= page[(r17+4)>>>2]; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x12408; - run_12400(); - return; + if(r2 != r0) { + pc=0x12608; + continue; } - r4 = 5 << 16; - r4 = r4 + 24372; - /* Next insn is delay slot */ - r31 = 0x12404; - pc = 0x46000; - run_46000(); - return; - case 0x12400: - pc = 0x12400; - return; - 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) { - case 0x12400: - case 0x12404: - r16 = readPages[(r28 + -31408) >>> 12][((r28 + -31408) >>> 2) & 0x3ff]; - case 0x12408: - r17 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -204; + r31=0x12604; + pc=0x4f800; + run_4f800(); return; + case 0x12604: + r16= page[(r28+-31408)>>>2]; + case 0x12608: + r17= page[(r28+-31340)>>>2]; 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; + r31=0x1261c; + pc=0x4b600; + run_4b000(); return; + case 0x1261c: + page[(r17+0)>>>2] = r2; + if(r2 == r0) { + pc=0x126fc; continue; } - /* 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; + r31=0x12630; + pc=0x12200; + continue; + case 0x12630: + r16= page[(r28+-31340)>>>2]; + if(r16 == r0) { + pc=0x1265c; continue; } - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x1245c; + r4= page[(r16+0)>>>2]; + if(r4 == r0) { + pc=0x1265c; continue; } - /* Next insn is delay slot */ - r31 = 0x12458; - pc = 0x40600; - run_40600(); - return; - 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; + r31=0x12658; + pc=0x49e00; + run_49800(); return; + case 0x12658: + page[(r16+0)>>>2] = r0; + case 0x1265c: + r4= page[(r28+-31404)>>>2]; + if(r4 == r0) { + pc=0x12720; continue; } r5 = r28 + -32760; - /* Next insn is delay slot */ - r31 = 0x12478; - pc = 0x41e00; - run_41e00(); - return; - case 0x12478: + r31=0x12678; + pc=0x4b600; + run_4b000(); return; + case 0x12678: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x12548; + if(r2 == r0) { + pc=0x12748; continue; } r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x12490; - pc = 0x2be00; - run_2be00(); - return; - case 0x12490: + r31=0x12690; + pc=0x35600; + run_35000(); return; + case 0x12690: 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]; + r31=0x1269c; + pc=0x49e00; + run_49800(); return; + case 0x1269c: + r31= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; 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]; + pc=0x12000; + continue; + case 0x126c0: + r2= page[(r17+4)>>>2]; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x124e4; + if(r2 != r0) { + pc=0x126e4; continue; } - r4 = 5 << 16; - r4 = r4 + 24452; - /* Next insn is delay slot */ - r31 = 0x124e4; - pc = 0x46000; - run_46000(); - return; - case 0x124e4: + r4 = 6 << 16; + r4 = r4 + -124; + r31=0x126e4; + pc=0x4f800; + run_4f800(); return; + case 0x126e4: 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; + page[(r18+16)>>>2] = r2; + r31=0x126f4; + pc=0x12200; 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; + case 0x126f4: + pc=0x1269c; + continue; + case 0x126fc: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + -164; r6 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x12518; - pc = 0x42000; - run_42000(); - return; - case 0x12518: - /* Next insn is delay slot */ - pc = 0x1245c; + r31=0x12718; + pc=0x4b800; + run_4b800(); return; + case 0x12718: + pc=0x1265c; 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; + case 0x12720: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; + r4 = r4 + -88; 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; + r31=0x12740; + pc=0x4d600; + run_4d000(); return; + case 0x12740: + pc=0x1269c; 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; + case 0x12748: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6= page[(r28+-31404)>>>2]; + r5 = r5 + -12; + r31=0x12764; + pc=0x4b800; + run_4b800(); return; + case 0x12764: + pc=0x1269c; 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: + case 0x1276c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + -280; + case 0x1277c: + r6 = 6 << 16; + r6 = r6 + 3672; + r31=0x1278c; + pc=0x4b800; + run_4b800(); return; + case 0x1278c: 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; + r31=0x12798; + pc=0x49a00; + run_49800(); return; + case 0x12798: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + -328; + pc=0x1277c; 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; + case 0x127b0: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + -384; + pc=0x1277c; 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; + case 0x127c8: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + -428; + pc=0x1277c; continue; - case 0x125e0: - /* Next insn is delay slot */ - r31 = 0x125e8; - pc = 0x11000; - run_11000(); + case 0x127e0: + r31=0x127e8; + pc=0x10a00; + run_10800(); return; + case 0x127e8: + case 0x12800: + pc=0x12800; return; - case 0x125e8: - case 0x12600: - pc = 0x12600; - 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_12600() throws ExecutionException { /* 0x12600 - 0x12800 */ + private final void run_12800() throws ExecutionException { /* 0x12800 - 0x13000 */ 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; - } - 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 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; + for(;;) { + switch(pc) { 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= page[(r4+8)>>>2]; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc = r31; + 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]; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r2= page[(r4+8)>>>2]; r17 = r4 + r0; - r16 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - if (r2 != r16) { - /* Next insn is delay slot */ - pc = 0x12a44; + r16= page[(r2+0)>>>2]; + if(r2 != r16) { + pc=0x12a44; continue; } - /* Next insn is delay slot */ - pc = 0x12a80; + 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; + r16= page[(r16+0)>>>2]; + r2= page[(r17+8)>>>2]; + if(r2 == r16) { + pc=0x12a80; continue; } case 0x12a44: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2= page[(r16+8)>>>2]; r4 = r16 + 8; - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x12a5c; + r2= page[(r2+4)>>>2]; + pc=r2; + r31=0x12a5c; return; case 0x12a5c: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x12a30; + if(r2 != r0) { + 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]; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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]; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; + 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]; + r2= page[(r4+12)>>>2]; r3 = r2 & 4; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x12e34; + if(r3 != r0) { + pc=0x12e34; continue; } r3 = r2 & 2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x12e2c; + if(r3 == r0) { + pc=0x12e2c; continue; } r3 = r0 + -2; r2 = r2 & r3; - writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r2; + page[(r4+12)>>>2] = r2; case 0x12e2c: - /* Next insn is delay slot */ - pc = r31; + 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; + page[(r4+12)>>>2] = r2; + pc=r31; return; case 0x13000: - pc = 0x13000; + pc=0x13000; 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_13000() throws ExecutionException { /* 0x13000 - 0x13200 */ + private final void run_13000() throws ExecutionException { /* 0x13000 - 0x13800 */ int addr, tmp; - for (;;) { - switch (pc) { + for(;;) { + switch(pc) { case 0x13000: - /* Next insn is delay slot */ - pc = r31; + 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; + 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; + r2= page[(r4+8)>>>2]; + r2= page[(r2+8)>>>2]; + 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; + r2= page[(r4+8)>>>2]; + r2= page[(r2+0)>>>2]; + pc=r31; return; case 0x13800: - pc = 0x13800; + pc=0x13800; 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_13800() throws ExecutionException { /* 0x13800 - 0x13a00 */ + private final void run_13800() throws ExecutionException { /* 0x13800 - 0x14000 */ int addr, tmp; - for (;;) { - switch (pc) { + 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; + r4 = 6 << 16; + r4 = r4 + 644; 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]; + pc=0x21400; + run_21000(); return; + case 0x13a00: + r2= page[(r4+8)>>>2]; 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: + pc=0x1c600; + run_1c000(); return; + case 0x13c00: r29 = r29 + -40; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+28)>>>2] = r18; + page[(r29+20)>>>2] = 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; + page[(r29+24)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r19; + r31=0x13c30; + pc=0x1c400; + run_1c000(); return; + case 0x13c30: + r2= page[(r16+8)>>>2]; + r17= page[(r2+8)>>>2]; + r16= page[(r2+0)>>>2]; + if(r17 == r0) { + pc=0x13c94; continue; } - r5 = 5 << 16; - r5 = r5 + 20504; - r19 = 5 << 16; - /* Next insn is delay slot */ - pc = 0x13e60; + r5 = 6 << 16; + r5 = r5 + -4072; + r19 = 6 << 16; + pc=0x13c60; continue; - case 0x13e5c: - r5 = r19 + 25240; - case 0x13e60: + case 0x13c5c: + r5 = r19 + 664; + case 0x13c60: 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]; + r31=0x13c6c; + pc=0x1c600; + run_1c000(); return; + case 0x13c6c: + r2= page[(r16+8)>>>2]; r4 = r16 + 8; - r2 = readPages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff]; + r2= page[(r2+28)>>>2]; r5 = r18 + r0; r17 = r17 + -1; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x13e88; + pc=r2; + r31=0x13c88; return; - case 0x13e88: - r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x13e5c; + case 0x13c88: + r16= page[(r16+0)>>>2]; + if(r17 != r0) { + pc=0x13c5c; 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]; + case 0x13c94: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r4 = r18 + r0; - r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18= page[(r29+28)>>>2]; 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; + pc=0x1c400; + run_1c000(); return; + case 0x13e00: + r4= page[(r4+8)>>>2]; + r5= page[(r5+8)>>>2]; + r6= page[(r4+0)>>>2]; + r2= page[(r5+0)>>>2]; + if(r6 == r2) { + pc=0x13e28; continue; } r2 = r0 + 1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x14828: + case 0x13e28: 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]; + page[(r29+20)>>>2] = r31; + r31=0x13e40; + pc=0x4ec00; + run_4e800(); return; + case 0x13e40: + r31= page[(r29+20)>>>2]; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x14a00: - pc = 0x14a00; + case 0x14000: + pc=0x14000; 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_14a00() throws ExecutionException { /* 0x14a00 - 0x14c00 */ + private final void run_14000() throws ExecutionException { /* 0x14000 - 0x14800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x14a00: + for(;;) { + switch(pc) { + case 0x14000: 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; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+44)>>>2] = r31; r16 = r0 + -1; r17 = r0 + r0; r18 = r0 + 46; r19 = r0 + 48; r21 = r0 + 49; r20 = r0 + 35; - case 0x14a38: + case 0x14038: r16 = r16 + 1; - /* Next insn is delay slot */ - r31 = 0x14a44; - pc = 0x23400; - run_23400(); - return; - case 0x14a44: - if (r2 == r18) { - /* Next insn is delay slot */ - pc = 0x14aec; + r31=0x14044; + pc=0x23000; + run_23000(); return; + case 0x14044: + if(r2 == r18) { + pc=0x140ec; continue; } - case 0x14a4c: + case 0x1404c: r3 = r2 < 47 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x14ac8; + if(r3 != r0) { + pc=0x140c8; continue; } - if (r2 == r19) { - /* Next insn is delay slot */ - pc = 0x14aec; + if(r2 == r19) { + pc=0x140ec; continue; } - if (r2 == r21) { - /* Next insn is delay slot */ - pc = 0x14ad0; + if(r2 == r21) { + pc=0x140d0; continue; } - case 0x14a68: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x14b74; + case 0x14068: + if(r16 == r0) { + pc=0x14174; continue; } r18 = 6 << 16; - r18 = r18 + -10308; - r2 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; + r18 = r18 + 31340; + r2= page[(r18+16)>>>2]; r2 = r16 & r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x14b5c; + if(r2 != r0) { + pc=0x1415c; continue; } - case 0x14a8c: - r2 = readPages[(r18 + 36) >>> 12][((r18 + 36) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x14af8; + case 0x1408c: + r2= page[(r18+36)>>>2]; + if(r2 == r0) { + pc=0x140f8; continue; } r2 = r16 < 9 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x14af8; + if(r2 != r0) { + pc=0x140f8; continue; } r16 = r16 < 17 ? 1 : 0; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x14b94; + if(r16 != r0) { + pc=0x14194; continue; } r3 = 1 << 16; r3 = r17 < r3 ? 1 : 0; r3 = r3 << 2; - /* Next insn is delay slot */ - pc = 0x14afc; + pc=0x140fc; continue; - case 0x14ac8: - if (r2 != r20) { - /* Next insn is delay slot */ - pc = 0x14a68; + case 0x140c8: + if(r2 != r20) { + pc=0x14068; continue; } - case 0x14ad0: + case 0x140d0: 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; + r31=0x140e4; + pc=0x23000; + run_23000(); return; + case 0x140e4: + if(r2 != r18) { + pc=0x1404c; continue; } - case 0x14aec: + case 0x140ec: r17 = r17 << 1; - /* Next insn is delay slot */ - pc = 0x14a38; + pc=0x14038; continue; - case 0x14af8: + case 0x140f8: r3 = r0 + r0; - case 0x14afc: - r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + case 0x140fc: + r4= page[(r28+-31376)>>>2]; + r5= page[(r28+-31372)>>>2]; r2 = r4 << 5; r2 = r5 + r2; r5 = 6 << 16; - r5 = r5 + -26200; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; + r5 = r5 + 15440; + page[(r2+0)>>>2] = 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]; + page[(r2+8)>>>2] = r5; + page[(r2+12)>>>2] = r3; + page[(r2+16)>>>2] = r17; + page[(r2+24)>>>2] = r0; + r31= page[(r29+44)>>>2]; 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; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + page[(r28+-31376)>>>2] = r4; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x1415c: + r4 = 6 << 16; + r4 = r4 + 704; + r31=0x1416c; + pc=0x21200; + run_21000(); return; + case 0x1416c: + pc=0x1408c; continue; - case 0x14b74: - r5 = 5 << 16; + case 0x14174: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 25268; - /* Next insn is delay slot */ - r31 = 0x14b88; - pc = 0x20600; - run_20600(); - return; - case 0x14b88: + r5 = r5 + 668; + r31=0x14188; + pc=0x1fc00; + run_1f800(); return; + case 0x14188: r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x14afc; + pc=0x140fc; continue; - case 0x14b94: + case 0x14194: r3 = r17 < 256 ? 1 : 0; r3 = r3 << 1; - /* Next insn is delay slot */ - pc = 0x14afc; + pc=0x140fc; 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: + case 0x14200: 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; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; r17 = r0 + r0; r16 = r0 + -1; - case 0x14c18: - /* Next insn is delay slot */ - r31 = 0x14c20; - pc = 0x23400; - run_23400(); - return; - case 0x14c20: + case 0x14218: + r31=0x14220; + pc=0x23000; + run_23000(); return; + case 0x14220: r3 = r2 & 255; r4 = r3 + -48; - r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r16 = r16 + 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x14c64; + if(r4 == r0) { + pc=0x14264; continue; } - case 0x14c38: + case 0x14238: r2 = r2 + -48; r17 = r17 << 4; r17 = r17 + r2; - /* Next insn is delay slot */ - r31 = 0x14c4c; - pc = 0x23400; - run_23400(); - return; - case 0x14c4c: + r31=0x1424c; + pc=0x23000; + run_23000(); return; + case 0x1424c: r3 = r2 & 255; r4 = r3 + -48; - r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r16 = r16 + 1; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x14c38; + if(r4 != r0) { + pc=0x14238; continue; } - case 0x14c64: + case 0x14264: r4 = r3 + -97; - r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x14c88; + r4 = (r4&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x14288; continue; } r17 = r17 << 4; r17 = r2 + r17; r17 = r17 + -87; - /* Next insn is delay slot */ - pc = 0x14c18; + pc=0x14218; continue; - case 0x14c88: + case 0x14288: r3 = r3 + -65; - r3 = (r3 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x14cac; + r3 = (r3&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x142ac; continue; } r17 = r17 << 4; r17 = r2 + r17; r17 = r17 + -55; - /* Next insn is delay slot */ - pc = 0x14c18; + pc=0x14218; continue; - case 0x14cac: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x14d48; + case 0x142ac: + if(r16 == r0) { + pc=0x14348; continue; } r2 = 6 << 16; - r2 = readPages[(r2 + -10272) >>> 12][((r2 + -10272) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x14cf4; + r2= page[(r2+31376)>>>2]; + if(r2 == r0) { + pc=0x142f4; continue; } r2 = r16 < 3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x14cf4; + if(r2 != r0) { + pc=0x142f4; continue; } r16 = r16 < 5 ? 1 : 0; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x14d68; + if(r16 != r0) { + pc=0x14368; continue; } r3 = 1 << 16; r3 = r17 < r3 ? 1 : 0; r3 = r3 << 2; - /* Next insn is delay slot */ - pc = 0x14cf8; + pc=0x142f8; continue; - case 0x14cf4: + case 0x142f4: r3 = r0 + r0; - case 0x14cf8: - r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + case 0x142f8: + r4= page[(r28+-31376)>>>2]; + r5= page[(r28+-31372)>>>2]; r2 = r4 << 5; r2 = r5 + r2; r5 = 6 << 16; - r5 = r5 + -26200; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; + r5 = r5 + 15440; + page[(r2+0)>>>2] = 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 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + page[(r2+8)>>>2] = r5; + page[(r2+12)>>>2] = r3; + page[(r2+16)>>>2] = r17; + page[(r2+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; r4 = r4 + 1; - 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; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + page[(r28+-31376)>>>2] = r4; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x14d48: - r5 = 5 << 16; + case 0x14348: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 25352; - /* Next insn is delay slot */ - r31 = 0x14d5c; - pc = 0x20600; - run_20600(); - return; - case 0x14d5c: + r5 = r5 + 752; + r31=0x1435c; + pc=0x1fc00; + run_1f800(); return; + case 0x1435c: r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x14cf8; + pc=0x142f8; continue; - case 0x14d68: + case 0x14368: r3 = r17 < 256 ? 1 : 0; r3 = r3 << 1; - /* Next insn is delay slot */ - pc = 0x14cf8; + pc=0x142f8; continue; - case 0x14e00: - pc = 0x14e00; - return; - 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) { - case 0x14e00: - 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; + case 0x14400: + r2= page[(r4+8)>>>2]; + if(r2 == r0) { + pc=0x1449c; continue; } - 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; - 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) { - case 0x15000: - r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1509c; - continue; - } - r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x1509c; + r3= page[(r5+8)>>>2]; + if(r3 == r0) { + pc=0x1449c; continue; } r6 = r0 + 1; - if (r2 == r6) { - /* Next insn is delay slot */ - pc = 0x15060; + if(r2 == r6) { + pc=0x14460; continue; } - if (r3 == r6) { - /* Next insn is delay slot */ - pc = 0x150a8; + if(r3 == r6) { + pc=0x144a8; continue; } - 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]; + f2= page[(r4+20)>>>2]; + f0= page[(r5+20)>>>2]; + f3= page[(r4+16)>>>2]; + f1= page[(r5+16)>>>2]; 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 = 0x1509c; + 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)) { + pc=0x1449c; continue; } - case 0x15058: - /* Next insn is delay slot */ - pc = r31; + case 0x14458: + pc=r31; return; - case 0x15060: - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x150e4; + case 0x14460: + if(r3 == r2) { + pc=0x144e4; continue; } - r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2= page[(r4+16)>>>2]; 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; + r2 = r0 + 1; + { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } + f0= page[(r5+20)>>>2]; + f1= page[(r5+16)>>>2]; + 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)) { + pc=0x14458; continue; } - case 0x1509c: + case 0x1449c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x150a8: - r2 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + case 0x144a8: + r2= page[(r5+16)>>>2]; 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; + r2 = r0 + 1; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + f2= page[(r4+20)>>>2]; + f3= page[(r4+16)>>>2]; + 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)) { + pc=0x1449c; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x150e4: - r3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + case 0x144e4: + r3= page[(r4+16)>>>2]; + r2= page[(r5+16)>>>2]; r2 = r3 ^ r2; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc = r31; + 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) { - case 0x15200: + case 0x14600: 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]; + page[(r29+32)>>>2] = r20; + page[(r29+24)>>>2] = r18; + page[(r29+36)>>>2] = r31; + page[(r29+28)>>>2] = r19; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + r3= page[(r4+8)>>>2]; + r2= page[(r5+8)>>>2]; 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; + r4= page[(r2+8)>>>2]; + r5= page[(r3+8)>>>2]; + if(r5 == r4) { + pc=0x14668; continue; } - case 0x15240: + case 0x14640: 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]; + case 0x14644: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x14668: + r17= page[(r3+0)>>>2]; + r16= page[(r2+0)>>>2]; + if(r3 == r17) { + pc=0x146fc; continue; } - r19 = 5 << 16; - r19 = r19 + 25384; - if (r2 == r16) { - /* Next insn is delay slot */ - pc = 0x152dc; + r19 = 6 << 16; + r19 = r19 + 784; + if(r2 == r16) { + pc=0x146dc; 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; + case 0x14688: + r2= page[(r17+8)>>>2]; + r3= page[(r16+8)>>>2]; + if(r2 != r3) { + pc=0x14640; continue; } - r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r2= page[(r2+8)>>>2]; r4 = r17 + 8; r5 = r16 + 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x152b0; + pc=r2; + r31=0x146b0; return; - case 0x152b0: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x15240; + case 0x146b0: + if(r2 != r0) { + pc=0x14640; 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; + r17= page[(r17+0)>>>2]; + r2= page[(r20+8)>>>2]; + r16= page[(r16+0)>>>2]; + if(r2 == r17) { + pc=0x146f4; continue; } - r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; - if (r2 != r16) { - /* Next insn is delay slot */ - pc = 0x15288; + r2= page[(r18+8)>>>2]; + if(r2 != r16) { + pc=0x14688; continue; } - case 0x152dc: + case 0x146dc: 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; + r31=0x146ec; + pc=0x21400; + run_21000(); return; + case 0x146ec: + pc=0x14688; continue; - case 0x152f4: - r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; - case 0x152fc: - if (r2 == r16) { - /* Next insn is delay slot */ - pc = 0x15340; + case 0x146f4: + r2= page[(r18+8)>>>2]; + case 0x146fc: + if(r2 == r16) { + pc=0x14740; continue; } - r4 = 5 << 16; - r4 = r4 + 25384; + r4 = 6 << 16; + r4 = r4 + 784; 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]; + r31=0x14718; + pc=0x21400; + run_21000(); return; + case 0x14718: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x15340: + case 0x14740: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x15244; + pc=0x14644; continue; - case 0x15400: - pc = 0x15400; + case 0x14800: + pc=0x14800; 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_15400() throws ExecutionException { /* 0x15400 - 0x15600 */ + private final void run_14800() throws ExecutionException { /* 0x14800 - 0x15000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x15400: + for(;;) { + switch(pc) { + case 0x14800: r29 = r29 + -88; - writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r31; + page[(r29+80)>>>2] = r16; + page[(r29+84)>>>2] = r31; r16 = r5 + r0; - r5 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r5= page[(r4+8)>>>2]; r3 = r4 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x1545c; + if(r5 == r0) { + pc=0x1485c; continue; } r6 = r0 + 1; - if (r5 == r6) { - /* Next insn is delay slot */ - pc = 0x154c4; + if(r5 == r6) { + pc=0x148c4; continue; } r6 = r0 + 2; - if (r5 == r6) { - /* Next insn is delay slot */ - pc = 0x15484; + if(r5 == r6) { + pc=0x14884; continue; } - r4 = 5 << 16; - r4 = r4 + 25440; - /* Next insn is delay slot */ - r31 = 0x15448; - pc = 0x21a00; - run_21a00(); - return; - case 0x15448: - r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + 840; + r31=0x14848; + pc=0x21400; + run_21000(); return; + case 0x14848: + r31= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1545c: - r5 = 5 << 16; + case 0x1485c: + r5 = 6 << 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]; + r5 = r5 + 800; + r31=0x14870; + pc=0x1c600; + run_1c000(); return; + case 0x14870: + r31= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x14884: + r7= page[(r3+20)>>>2]; + r6= page[(r3+16)>>>2]; + r5 = 6 << 16; r4 = r29 + 16; - r5 = r5 + 25432; - /* Next insn is delay slot */ - r31 = 0x154a0; - pc = 0x47400; - run_47400(); - return; - case 0x154a0: + r5 = r5 + 832; + r31=0x148a0; + pc=0x50c00; + run_50800(); return; + case 0x148a0: 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]; + r31=0x148b0; + pc=0x1c600; + run_1c000(); return; + case 0x148b0: + r31= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x154c4: - r6 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; - r5 = 5 << 16; + case 0x148c4: + r6= page[(r4+16)>>>2]; + r5 = 6 << 16; r4 = r29 + 16; - r5 = r5 + 25420; + r5 = r5 + 820; r7 = r6 + r0; - /* Next insn is delay slot */ - r31 = 0x154e0; - pc = 0x47400; - run_47400(); - return; - case 0x154e0: + r31=0x148e0; + pc=0x50c00; + run_50800(); return; + case 0x148e0: 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; + r31=0x148f0; + pc=0x1c600; + run_1c000(); return; + case 0x148f0: + pc=0x14848; 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) { - case 0x15600: + case 0x14a00: 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; + r3= page[(r5+4)>>>2]; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+20)>>>2] = r16; r18 = r4 + r0; r17 = r5 + r0; r19 = r6 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x15720; + if(r4 == r0) { + pc=0x14b20; continue; } r2 = r0 + 2; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x15650; + if(r3 == r2) { + pc=0x14a50; 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; - case 0x15650: + r4 = 6 << 16; + r5= page[(r5+8)>>>2]; + r4 = r4 + 860; + r31=0x14a50; + pc=0x21400; + run_21000(); return; + case 0x14a50: 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: + r4 = r16 + 16012; + r31=0x14a60; + pc=0x1be00; + run_1b800(); return; + case 0x14a60: 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; + r4 = r16 + 16012; + r5 = r5 + 904; + r31=0x14a74; + pc=0x1c600; + run_1c000(); return; + case 0x14a74: + r5= page[(r17+12)>>>2]; + r4 = r16 + 16012; + r31=0x14a84; + pc=0x1c600; + run_1c000(); return; + case 0x14a84: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 944; + r31=0x14a98; + pc=0x1c600; + run_1c000(); return; + case 0x14a98: + r2= page[(r18+0)>>>2]; + r4 = r16 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x14aac; + pc=0x1c600; + run_1c000(); return; + case 0x14aac: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 952; + r31=0x14ac0; + pc=0x1c600; + run_1c000(); return; + case 0x14ac0: + r2= page[(r19+0)>>>2]; + r4 = r16 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x14ad4; + pc=0x1c600; + run_1c000(); return; + case 0x14ad4: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 12036; + r31=0x14ae8; + pc=0x1c600; + run_1c000(); return; + case 0x14ae8: + r4 = r16 + 16012; 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]; + r31=0x14af8; + pc=0x1c400; + run_1c000(); return; + case 0x14af8: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r5= page[(r16+16012)>>>2]; + r16= page[(r29+20)>>>2]; r4 = r0 + -2; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x15720: + pc=0x1fc00; + run_1f800(); return; + case 0x14b20: r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x15740; + if(r3 == r2) { + pc=0x14b40; 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: + r4 = 6 << 16; + r5= page[(r5+8)>>>2]; + r4 = r4 + 880; + r31=0x14b40; + pc=0x21400; + run_21000(); return; + case 0x14b40: 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; + r4 = r16 + 16012; + r31=0x14b50; + pc=0x1be00; + run_1b800(); return; + case 0x14b50: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 904; + r31=0x14b64; + pc=0x1c600; + run_1c000(); return; + case 0x14b64: + r5= page[(r17+12)>>>2]; + r4 = r16 + 16012; + r31=0x14b74; + pc=0x1c600; + run_1c000(); return; + case 0x14b74: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 944; + r31=0x14b88; + pc=0x1c600; + run_1c000(); return; + case 0x14b88: + pc=0x14ac0; 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) { - case 0x15800: - 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: - 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 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; - } - 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; - return; - 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) { - case 0x15a00: - 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; - } - r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x15a6c; - continue; - } - r3 = r0 + 19; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x15ac8; - continue; - } - 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; - 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 0x15a6c: - 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 0x15a94: - r3 = r0 + 22; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x15ac8; - 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; - return; - 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) { - 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; - 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; - } - 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; - } - case 0x15c4c: - r5 = 5 << 16; - r4 = r0 + -2; - r5 = r5 + 25560; - /* Next insn is delay slot */ - r31 = 0x15c60; - pc = 0x20600; - run_20600(); - return; - 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 = r31; - return; - 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 0x15e00: - pc = 0x15e00; - return; - 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) { - case 0x15e00: - 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; - } - 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 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 - } - 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: + case 0x14c00: 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]; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + r2= page[(r6+8)>>>2]; r3 = r0 + 2; r16 = r4 + r0; r18 = r5 + r0; r17 = r6 + r0; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x172b0; + if(r2 == r3) { + pc=0x14cb0; continue; } r7 = r0 + 1; - if (r2 != r7) { - /* Next insn is delay slot */ - pc = 0x1728c; + if(r2 != r7) { + pc=0x14c8c; continue; } - r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r5= page[(r5+8)>>>2]; r4 = r5 + -23; - r6 = (r4 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x17280; + r6 = (r4&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r6 == r0) { + pc=0x14c80; continue; } - r2 = r2 << (r4 & 0x1f); - r4 = r2 & 65295; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x172e8; + r4 = r2 << (r4&0x1f); + r6 = r4 & 65295; + if(r6 != r0) { + pc=0x14ce8; continue; } - r4 = 15 << 16; - r4 = r4 + 240; - r2 = r2 & r4; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x172b8; + r3 = 15 << 16; + r3 = r3 + 240; + r4 = r4 & r3; + if(r4 != r0) { + pc=0x14cb8; continue; } - case 0x17280: + case 0x14c80: 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]; + case 0x14c8c: + f20= page[(r29+36)>>>2]; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + f21= page[(r29+32)>>>2]; 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; + pc=0x14a00; continue; - case 0x17304: - r4 = 5 << 16; - r4 = r4 + 28032; - /* Next insn is delay slot */ - r31 = 0x17314; - pc = 0x21800; - run_21800(); + case 0x14cb0: + r5= page[(r5+8)>>>2]; + case 0x14cb8: + r3 = r5 + -23; + r4 = (r3&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x14c80; + continue; + } + r4 = 6 << 16; + r3 = r3 << 2; + r4 = r4 + 2352; + r3 = r4 + r3; + r3= page[(r3+0)>>>2]; + pc=r3; 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]; + case 0x14ce8: + f2= page[(r17+16)>>>2]; + page[(r17+8)>>>2] = r3; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r17+20)>>>2] = f0; + page[(r17+16)>>>2] = f1; + r2 = r0 + 2; + pc=0x14cb8; + continue; + case 0x14d08: + r4 = 6 << 16; + r4 = r4 + 3456; + r31=0x14d18; + pc=0x21200; + run_21000(); return; + case 0x14d18: + f0= page[(r16+20)>>>2]; + f20= page[(r29+36)>>>2]; + f1= page[(r16+16)>>>2]; 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 + 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; + r31= page[(r29+28)>>>2]; + f21= page[(r29+32)>>>2]; + page[(r16+8)>>>2] = r2; + page[(r16+16)>>>2] = 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]; + r16= page[(r29+16)>>>2]; + r18= page[(r29+24)>>>2]; r6 = r17 + r0; - r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x17800; - run_17800(); - return; - case 0x17380: - f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + pc=0x15200; + run_15000(); return; + case 0x14d84: + f0= page[(r17+20)>>>2]; f2 = r0; - f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x1511c; + run_15000(); 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; - } + f2= page[(r16+20)>>>2]; + f3= page[(r16+16)>>>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; } 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; - case 0x173e4: + page[(r16+16)>>>2] = f2; + case 0x14de8: r2 = r0 + 1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + page[(r16+8)>>>2] = 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]; + case 0x14df4: + page[(r16+24)>>>2] = r2; + r2= page[(r17+12)>>>2]; + r3= page[(r16+12)>>>2]; 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]; + f20= page[(r29+36)>>>2]; r2 = r2 | r3; - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; 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]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + f21= page[(r29+32)>>>2]; + page[(r16+12)>>>2] = r2; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x14e38: + f0= page[(r17+20)>>>2]; + f2= page[(r16+20)>>>2]; + f1= page[(r17+16)>>>2]; + f3= page[(r16+16)>>>2]; + r3= page[(r16+24)>>>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; } + r2= page[(r17+24)>>>2]; + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = 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; + pc=0x14df4; + continue; + case 0x14e68: + f0= page[(r17+20)>>>2]; + f2= page[(r16+20)>>>2]; + f1= page[(r17+16)>>>2]; + f3= page[(r16+16)>>>2]; + r3= page[(r16+24)>>>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; } + r2= page[(r17+24)>>>2]; + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = 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]; + pc=0x14df4; + continue; + case 0x14e98: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14f38; 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]; + case 0x14ebc: + r3= page[(r17+12)>>>2]; + page[(r16+16)>>>2] = r2; + r2= page[(r16+12)>>>2]; 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]; + f20= page[(r29+36)>>>2]; + r4 = r4 + 15440; + r31= page[(r29+28)>>>2]; r2 = r2 & 16; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + page[(r16+0)>>>2] = 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]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + f21= page[(r29+32)>>>2]; + page[(r16+8)>>>2] = r4; + page[(r16+24)>>>2] = r0; + page[(r16+12)>>>2] = r2; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x14f14: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14ebc; continue; } - case 0x17534: + case 0x14f38: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x174b8; + pc=0x14ebc; 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]; + case 0x14f44: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14ebc; continue; } - /* Next insn is delay slot */ - pc = 0x17534; + pc=0x14f38; 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]; + case 0x14f70: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14ebc; continue; } - /* Next insn is delay slot */ - pc = 0x17534; + pc=0x14f38; 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]; + case 0x14f9c: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14ebc; continue; } - /* Next insn is delay slot */ - pc = 0x17534; + pc=0x14f38; 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]; + case 0x14fc8: + f2= page[(r16+20)>>>2]; + f0= page[(r17+20)>>>2]; + f3= page[(r16+16)>>>2]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x14ebc; continue; } - /* Next insn is delay slot */ - pc = 0x17534; + pc=0x14f38; 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; + case 0x14ff4: + f12= page[(r16+20)>>>2]; + f14= page[(r17+20)>>>2]; + f13= page[(r16+16)>>>2]; + case 0x15000: + pc=0x15000; 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_15000() throws ExecutionException { /* 0x15000 - 0x15800 */ 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; + for(;;) { + switch(pc) { + case 0x15000: + f15= page[(r17+16)>>>2]; + r31=0x1500c; + pc=0x44000; + run_44000(); return; + case 0x1500c: + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = 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]; + pc=0x14df4; + run_14800(); return; + case 0x15020: + f0= page[(r17+20)>>>2]; + f2= page[(r16+20)>>>2]; + f1= page[(r17+16)>>>2]; + f3= page[(r16+16)>>>2]; + 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; } + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x14df4; + run_14800(); return; + case 0x15048: + f0= page[(r17+20)>>>2]; f20 = r0; - f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f1= page[(r17+16)>>>2]; 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; + 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)) { + pc=0x1513c; continue; } - f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f2= page[(r16+20)>>>2]; 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; + f3= page[(r16+16)>>>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; } + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x14df4; + run_14800(); return; + case 0x15090: + r3 = r0 + 2; + if(r2 == r3) { + pc=0x151ac; 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; - } + f14= page[(r17+16)>>>2]; + case 0x150a0: + f12= page[(r28+-32740)>>>2]; + f20= page[(r16+20)>>>2]; + f13= page[(r28+-32744)>>>2]; + f21= page[(r16+16)>>>2]; + { long l = Double.doubleToLongBits(((double)f14)); f15 = (int)(l >>> 32); f14 = (int)l; } + r31=0x150bc; + pc=0x44000; + run_44000(); return; + case 0x150bc: + { 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; + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x14df4; + run_14800(); return; + case 0x150d4: + r3 = r0 + 2; + if(r2 == r3) { + pc=0x15164; continue; } - r3 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; - case 0x176e8: + r3= page[(r17+16)>>>2]; + case 0x150e4: r2 = r0 + 1; - r2 = r2 << (r3 & 0x1f); + 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]; + { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } + f0= page[(r16+20)>>>2]; + f1= page[(r16+16)>>>2]; + { 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; } + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x14df4; + run_14800(); return; + case 0x1511c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 3572; + r31=0x15130; + pc=0x1fc00; + run_1f800(); return; + case 0x15130: + page[(r16+16)>>>2] = r0; + pc=0x14de8; + run_14800(); return; + case 0x1513c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 3572; + r31=0x15150; + pc=0x1fc00; + run_1f800(); return; + case 0x15150: + page[(r16+20)>>>2] = f20; + page[(r16+16)>>>2] = f21; + r2 = r0 + r0; + pc=0x14df4; + run_14800(); return; + case 0x15164: + f0= page[(r17+20)>>>2]; r2 = r0 + 1; - f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; - writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + f1= page[(r17+16)>>>2]; + page[(r17+8)>>>2] = 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; r3 = f2; - writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; - /* Next insn is delay slot */ - pc = 0x176e8; + page[(r17+16)>>>2] = f2; + pc=0x150e4; continue; - case 0x177b0: - f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + case 0x151ac: + f0= page[(r17+20)>>>2]; r2 = r0 + 1; - f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; - writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + f1= page[(r17+16)>>>2]; + page[(r17+8)>>>2] = 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; r2 = f2; - writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; + page[(r17+16)>>>2] = f2; f14 = r2; - /* Next insn is delay slot */ - pc = 0x176a0; + pc=0x150a0; continue; - case 0x17800: - pc = 0x17800; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_17800() throws ExecutionException { /* 0x17800 - 0x17a00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x17800: + case 0x15200: 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]; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r2= page[(r6+8)>>>2]; r3 = r0 + 1; r16 = r4 + r0; r18 = r5 + r0; r17 = r6 + r0; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x178c0; + if(r2 == r3) { + pc=0x152c0; continue; } r7 = r0 + 2; - if (r2 != r7) { - /* Next insn is delay slot */ - pc = 0x17904; + if(r2 != r7) { + pc=0x15304; continue; } - r7 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r7= page[(r5+8)>>>2]; r7 = r7 + -23; - r8 = (r7 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x178f8; + r8 = (r7&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r8 == r0) { + pc=0x152f8; continue; } - r3 = r3 << (r7 & 0x1f); + r3 = r3 << (r7&0x1f); r7 = r3 & 65295; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x17920; + if(r7 != r0) { + pc=0x15320; 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; + if(r2 != r0) { + pc=0x156a8; continue; } - case 0x17884: - f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r3 = r3 & 112; + if(r3 == r0) { + pc=0x152f8; + continue; + } + case 0x15284: + f0= page[(r17+20)>>>2]; r2 = r0 + 1; - f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; - writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + f1= page[(r17+16)>>>2]; + page[(r17+8)>>>2] = 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[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; - case 0x178c0: - r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + page[(r17+16)>>>2] = f2; + case 0x152c0: + r2= page[(r18+8)>>>2]; r2 = r2 + -23; - r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x178f8; + r3 = (r2&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x152f8; continue; } - r3 = 5 << 16; + r3 = 6 << 16; r2 = r2 << 2; - r3 = r3 + 27120; + r3 = r3 + 2432; r2 = r3 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x178f8: + case 0x152f8: 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]; + case 0x15304: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; 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]; + pc=0x14a00; + run_14800(); return; + case 0x15320: + f2= page[(r4+16)>>>2]; + page[(r4+8)>>>2] = r2; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r4+20)>>>2] = f0; + page[(r4+16)>>>2] = f1; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; 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]; + pc=0x14c00; + run_14800(); return; + case 0x15350: + r4 = 6 << 16; + r4 = r4 + 984; + r31=0x15360; + pc=0x21200; + run_21000(); return; + case 0x15360: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + page[(r16+16)>>>2] = r2; + r3= page[(r16+24)>>>2]; + r2= page[(r17+24)>>>2]; 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]; + case 0x15384: + page[(r16+24)>>>2] = r2; + r2= page[(r17+12)>>>2]; + r3= page[(r16+12)>>>2]; r2 = r2 & 23; r2 = r2 | r3; - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; 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]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+12)>>>2] = r2; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; - } + case 0x153c0: + r2= page[(r17+16)>>>2]; + r3= page[(r16+16)>>>2]; + { long hilo = (long)(r3) * ((long)r2); hi = (int) (hilo >>> 32); lo = (int) hilo; } r2 = lo; - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + page[(r16+16)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17984; + pc=0x15384; 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_17a00() throws ExecutionException { /* 0x17a00 - 0x17c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x17a00: - case 0x17a04: - r4 = r2 & 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x17a18; + case 0x153e4: + r2= page[(r17+16)>>>2]; + if(r2 < 0) { + pc=0x15704; 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= page[(r16+16)>>>2]; + r4 = r0 + 1; + if(r2 == r0) { + pc=0x15430; + continue; + } + case 0x15404: + r5 = r2 & 1; + { long hilo = (long)(r4) * ((long)r3); hi = (int) (hilo >>> 32); lo = (int) hilo; } + if(r5 == r0) { + pc=0x15418; + continue; + } + r4 = lo; + case 0x15418: + 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; + if(r2 != r0) { + pc=0x15404; continue; } - case 0x17a30: - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r5; + case 0x15430: + page[(r16+16)>>>2] = r4; 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; + pc=0x15384; + continue; + case 0x15440: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; + r2 = r3 >>> (r2&0x1f); + page[(r16+16)>>>2] = 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]; + pc=0x15384; + continue; + case 0x15460: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + page[(r16+16)>>>2] = r2; + r3= page[(r16+24)>>>2]; + r2= page[(r17+24)>>>2]; 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]; + pc=0x15384; + continue; + case 0x1548c: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + page[(r16+16)>>>2] = r2; + r3= page[(r16+24)>>>2]; + r2= page[(r17+24)>>>2]; 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; + pc=0x15384; + continue; + case 0x154b8: + r2= page[(r16+16)>>>2]; + r3= page[(r17+16)>>>2]; + if(r2 < 0) { + pc=0x156e8; + continue; } - r2 = r2 >> (r3 & 0x1f); - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r2 >> (r3&0x1f); + page[(r16+16)>>>2] = 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]; + pc=0x15384; + continue; + case 0x154dc: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + case 0x154f0: + r3= page[(r17+12)>>>2]; + page[(r16+16)>>>2] = r2; + r2= page[(r16+12)>>>2]; r4 = 6 << 16; r2 = r3 | r2; - r4 = r4 + -26200; - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r4 + 15440; + r31= page[(r29+28)>>>2]; r2 = r2 & 16; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + page[(r16+0)>>>2] = 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]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+8)>>>2] = r4; + page[(r16+24)>>>2] = r0; + page[(r16+12)>>>2] = r2; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x17b40: - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x15540: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + page[(r16+16)>>>2] = r2; + r3= page[(r16+24)>>>2]; + r2= page[(r17+24)>>>2]; 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]; + pc=0x15384; + continue; + case 0x1556c: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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]; + page[(r16+16)>>>2] = r2; + r3= page[(r16+24)>>>2]; + r2= page[(r17+24)>>>2]; 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]; + pc=0x15384; + continue; + case 0x15598: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; r2 = r3 ^ r2; - r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; - /* Next insn is delay slot */ - pc = 0x17af0; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + pc=0x154f0; continue; - case 0x17bb4: - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x155b4: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; r2 = r2 < r3 ? 1 : 0; r2 = r2 ^ 1; - /* Next insn is delay slot */ - pc = 0x17af0; + pc=0x154f0; continue; - case 0x17bd0: - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x155d0: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; r2 = r3 < r2 ? 1 : 0; - /* Next insn is delay slot */ - pc = 0x17af0; + pc=0x154f0; continue; - case 0x17be8: - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x155e8: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; r2 = r3 < r2 ? 1 : 0; r2 = r2 ^ 1; - /* Next insn is delay slot */ - pc = 0x17af0; + pc=0x154f0; 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]; + case 0x15604: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; 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; + pc=0x154f0; + continue; + case 0x1561c: + r2= page[(r17+16)>>>2]; + if(r2 != r0) { + pc=0x156c0; continue; } - case 0x17c2c: - r5 = 5 << 16; + case 0x1562c: + r5 = 6 << 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; + r5 = r5 + 3572; + r31=0x15640; + pc=0x1fc00; + run_1f800(); return; + case 0x15640: + page[(r16+16)>>>2] = 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; + pc=0x15384; + continue; + case 0x15650: + r2= page[(r17+16)>>>2]; + if(r2 == r0) { + pc=0x1562c; 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; + r3= page[(r16+16)>>>2]; + if(r2 != r0) { + hi = r3%r2; lo = r3/r2; + pc=0x15674; continue; } - hi = r3 % r2; - lo = r3 / r2; + hi = r3%r2; lo = r3/r2; throw new ExecutionException("Break"); - case 0x17c74: + case 0x15674: 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; + page[(r16+16)>>>2] = r4; + pc=0x15384; + continue; + case 0x15688: + r3= page[(r16+16)>>>2]; + r2= page[(r17+16)>>>2]; + r2 = r3 << (r2&0x1f); + page[(r16+16)>>>2] = 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; + pc=0x15384; + continue; + case 0x156a8: + r4 = 6 << 16; + r4 = r4 + 3456; + r31=0x156b8; + pc=0x21200; + run_21000(); return; + case 0x156b8: + pc=0x15284; + continue; + case 0x156c0: + r3= page[(r16+16)>>>2]; + if(r2 != r0) { + hi = r3%r2; lo = r3/r2; + pc=0x156d4; continue; } - hi = r3 % r2; - lo = r3 / r2; + hi = r3%r2; lo = r3/r2; throw new ExecutionException("Break"); - case 0x17cd4: + case 0x156d4: r2 = lo; - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + page[(r16+16)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17984; - run_17800(); - return; - case 0x17ce8: + pc=0x15384; + continue; + case 0x156e8: r2 = ~(r0 | r2); - r2 = r2 >> (r3 & 0x1f); + r2 = r2 >> (r3&0x1f); r2 = ~(r0 | r2); - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + page[(r16+16)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17984; - run_17800(); - return; - case 0x17d04: - r5 = 5 << 16; + pc=0x15384; + continue; + case 0x15704: + r5 = 6 << 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; + r5 = r5 + 960; + r31=0x15718; + pc=0x1fc00; + run_1f800(); return; + case 0x15718: + page[(r16+16)>>>2] = r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17984; - run_17800(); + pc=0x15384; + continue; + case 0x15800: + pc=0x15800; return; - case 0x17e00: - pc = 0x17e00; - 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_17e00() throws ExecutionException { /* 0x17e00 - 0x18000 */ + private final void run_15800() throws ExecutionException { /* 0x15800 - 0x16000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x17e00: + for(;;) { + switch(pc) { + case 0x15800: r2 = 6 << 16; - r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r3= page[(r6+0)>>>2]; 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; + r2 = r2 + 15440; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; r16 = r6 + r0; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x17e40; + if(r3 == r2) { + pc=0x15840; 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]; + case 0x15828: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x15600; - run_15600(); - return; - case 0x17e40: - r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + pc=0x14a00; + run_14800(); return; + case 0x15840: + r2= page[(r4+8)>>>2]; r17 = r4 + r0; r7 = r5 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x17ea0; + if(r2 == r0) { + pc=0x158a0; continue; } - r3 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x17ea0; + r3= page[(r6+8)>>>2]; + if(r3 == r0) { + pc=0x158a0; continue; } r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x17fb4; + if(r2 == r3) { + pc=0x159b4; continue; } r3 = r0 + 2; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x17f9c; + if(r2 == r3) { + pc=0x1599c; 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; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r4 = 6 << 16; + r4 = r4 + 1024; 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]; + pc=0x21400; + run_21000(); return; + case 0x158a0: + r2= page[(r7+8)>>>2]; r2 = r2 + -23; - r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x17f50; + r3 = (r2&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x15950; continue; } - r3 = 5 << 16; + r3 = 6 << 16; r2 = r2 << 2; - r3 = r3 + 27200; + r3 = r3 + 2512; r2 = r3 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + 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]; + case 0x158d8: + r4 = 6 << 16; + r4 = r4 + 984; + r31=0x158e8; + pc=0x21200; + run_21000(); return; + case 0x158e8: + r3= page[(r17+24)>>>2]; + r2= page[(r16+24)>>>2]; r3 = r3 + r2; - case 0x17ef8: - r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; - r4 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + case 0x158f8: + r2= page[(r16+12)>>>2]; + r4= page[(r17+12)>>>2]; 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; + page[(r17+12)>>>2] = r2; + case 0x15914: + r4= page[(r16+12)>>>2]; + page[(r17+8)>>>2] = 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]; + page[(r17+12)>>>2] = r2; + page[(r17+24)>>>2] = r3; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x17f44: + case 0x15944: r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17ef8; + pc=0x158f8; continue; - case 0x17f50: + case 0x15950: r4 = r17 + r0; r5 = r7 + r0; r6 = r16 + r0; - /* Next insn is delay slot */ - pc = 0x17e28; + pc=0x15828; continue; - case 0x17f64: - r3 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + case 0x15964: + r3= page[(r17+12)>>>2]; r2 = r0 + -8; r2 = r3 & r2; r2 = r2 | 8; - writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + page[(r17+12)>>>2] = r2; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x17f14; + pc=0x15914; continue; - case 0x17f84: - r3 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; - r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + case 0x15984: + r3= page[(r17+24)>>>2]; + r2= page[(r16+24)>>>2]; r3 = r3 - r2; - /* Next insn is delay slot */ - pc = 0x17ef8; + pc=0x158f8; 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]; + case 0x1599c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; 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]; + pc=0x14c00; + run_14800(); return; + case 0x159b4: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; 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]; + pc=0x15200; + run_15000(); return; + case 0x15a00: + r5= page[(r28+-32748)>>>2]; + r4= page[(r28+-31364)>>>2]; 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; + page[(r28+-32748)>>>2] = r2; + page[(r29+20)>>>2] = r31; + r31=0x15a24; + pc=0x4fa00; + run_4f800(); return; + case 0x15a24: + page[(r28+-31364)>>>2] = r2; + if(r2 == r0) { + pc=0x15a40; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x18840: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - r5 = 5 << 16; + case 0x15a40: + r31= page[(r29+20)>>>2]; + r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + 29820; + r5 = r5 + 5244; 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; + pc=0x1fc00; + run_1f800(); return; + case 0x15c00: + r29 = r29 + -64; + page[(r29+60)>>>2] = r31; + page[(r29+44)>>>2] = r16; + page[(r29+56)>>>2] = r19; 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: + page[(r29+52)>>>2] = r18; + page[(r29+48)>>>2] = r17; + r31=0x15c24; + pc=0x23000; + run_23000(); return; + case 0x15c24: 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; + r31=0x15c30; + pc=0x36a00; + run_36800(); return; + case 0x15c30: + r2= page[(r29+16)>>>2]; + if(r2 == r0) { + pc=0x15cc8; continue; } - case 0x19234: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x19258; + case 0x15c40: + if(r16 == r0) { + pc=0x15c64; continue; } - /* Next insn is delay slot */ - r31 = 0x19244; - pc = 0x2de00; - run_2de00(); - return; - case 0x19244: + r31=0x15c50; + pc=0x37800; + run_37800(); return; + case 0x15c50: 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]; + r31=0x15c64; + pc=0x37600; + run_37000(); return; + case 0x15c64: + r3= page[(r28+-31376)>>>2]; + r4= page[(r28+-31372)>>>2]; r2 = r3 << 5; r2 = r4 + r2; r4 = 6 << 16; - r4 = r4 + -26200; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r4; + r4 = r4 + 15440; + page[(r2+0)>>>2] = r4; r4 = r0 + 1; - writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; - r4 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + page[(r2+8)>>>2] = r4; + r4= page[(r29+20)>>>2]; 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; + page[(r2+12)>>>2] = r4; + page[(r28+-31376)>>>2] = r3; + r4= page[(r29+24)>>>2]; + r3= page[(r29+32)>>>2]; + page[(r2+16)>>>2] = r4; + page[(r2+24)>>>2] = r3; + r31= page[(r29+60)>>>2]; + r19= page[(r29+56)>>>2]; + r18= page[(r29+52)>>>2]; + r17= page[(r29+48)>>>2]; + r16= page[(r29+44)>>>2]; + r29 = r29 + 64; + pc=r31; return; - case 0x192b0: + case 0x15cc8: r2 = 6 << 16; - r2 = readPages[(r2 + -10312) >>> 12][((r2 + -10312) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x19234; + r2= page[(r2+31336)>>>2]; + if(r2 == r0) { + pc=0x15c40; 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; + r17 = 6 << 16; + r4 = r17 + 16012; + r31=0x15cec; + pc=0x1be00; + run_1b800(); return; + case 0x15cec: + r5 = 6 << 16; + r4 = r17 + 16012; + r5 = r5 + 1044; + r31=0x15d00; + pc=0x1c600; + run_1c000(); return; + case 0x15d00: + r18 = r17 + 16012; + r5 = 6 << 16; + r19= page[(r18+4)>>>2]; + r5 = r5 + 1064; + r4 = r18 + r0; + r31=0x15d1c; + pc=0x1c600; + run_1c000(); return; + case 0x15d1c: + r5= page[(r18+4)>>>2]; + r19 = r19 + 1; + r2 = ((r5 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + if(r2 != r0) { + pc=0x15d70; + continue; + } + page[(r18+4)>>>2] = r19; + case 0x15d34: + r5 = 6 << 16; + r4 = r17 + 16012; + r5 = r5 + 5680; + r31=0x15d48; + pc=0x1c600; + run_1c000(); return; + case 0x15d48: + r4 = r17 + 16012; + r5 = r0 + r0; + r31=0x15d58; + pc=0x1c400; + run_1c000(); return; + case 0x15d58: + r5= page[(r17+16012)>>>2]; + r4 = r0 + -2; + r31=0x15d68; + pc=0x1fc00; + run_1f800(); return; + case 0x15d68: + pc=0x15c40; continue; - case 0x19400: - pc = 0x19400; + case 0x15d70: + r4 = 6 << 16; + r4 = r4 + 1068; + r5 = r5 - r19; + r31=0x15d84; + pc=0x21400; + run_21000(); return; + case 0x15d84: + pc=0x15d34; + continue; + case 0x15e00: + r29 = r29 + -40; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+20)>>>2] = r17; + r20 = r5 + r0; + r19 = r6 + r0; + r31=0x15e2c; + pc=0x40c00; + run_40800(); return; + case 0x15e2c: + r16 = r2 + r0; + r2 = r0 + 1; + page[(r16+36)>>>2] = r2; + r2= page[(r16+0)>>>2]; + r18 = 6 << 16; + r18 = r18 + 15440; + if(r2 == r0) { + pc=0x15fe0; + continue; + } + case 0x15e4c: + r17= page[(r28+-31376)>>>2]; + r5 = r16 + r0; + r2 = r17 + 1; + page[(r28+-31376)>>>2] = r2; + r2= page[(r28+-31372)>>>2]; + r17 = r17 << 5; + r17 = r2 + r17; + r4 = r17 + r0; + r6 = r0 + 32; + r31=0x15e78; + pc=0x56fe0; + run_56800(); return; + case 0x15e78: + if(r19 == r0) { + pc=0x15ea4; + continue; + } + r2= page[(r17+0)>>>2]; + if(r2 == r18) { + pc=0x15fc4; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1092; + r31=0x15ea4; + pc=0x1fc00; + run_1f800(); return; + case 0x15ea4: + r2= page[(r17+0)>>>2]; + if(r2 == r18) { + pc=0x15ed8; + continue; + } + case 0x15eb4: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 40; + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + case 0x15ed8: + r2= page[(r17+8)>>>2]; + if(r2 != r0) { + pc=0x15eb4; + continue; + } + r2 = 6 << 16; + r18= page[(r2+17104)>>>2]; + r2 = 6 << 16; + r2= page[(r2+31336)>>>2]; + if(r2 == r0) { + pc=0x15eb4; + continue; + } + r2= page[(r16+40)>>>2]; + if(r2 != r0) { + pc=0x15eb4; + continue; + } + r2 = r0 + 1; + page[(r16+40)>>>2] = r2; + r16 = 6 << 16; + r4 = r16 + 16012; + r31=0x15f2c; + pc=0x1be00; + run_1b800(); return; + case 0x15f2c: + r5 = 6 << 16; + r17 = r16 + 16012; + r4 = r16 + 16012; + r5 = r5 + 1044; + r31=0x15f44; + pc=0x1c600; + run_1c000(); return; + case 0x15f44: + r2= page[(r17+4)>>>2]; + r5 = r18 + r0; + r4 = r17 + r0; + r20 = r20 + r2; + r31=0x15f5c; + pc=0x1c600; + run_1c000(); return; + case 0x15f5c: + r5= page[(r17+4)>>>2]; + r2 = ((r5 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + if(r2 != r0) { + pc=0x15ffc; + continue; + } + page[(r17+4)>>>2] = r20; + case 0x15f74: + r5 = 6 << 16; + r4 = r16 + 16012; + r5 = r5 + 5680; + r31=0x15f88; + pc=0x1c600; + run_1c000(); return; + case 0x15f88: + r4 = r16 + 16012; + r5 = r0 + r0; + r31=0x15f98; + pc=0x1c400; + run_1c000(); return; + case 0x15f98: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r5= page[(r16+16012)>>>2]; + r16= page[(r29+16)>>>2]; + r4 = r0 + -2; + r29 = r29 + 40; + pc=0x1fc00; + run_1f800(); return; + case 0x15fc4: + r5= page[(r16+44)>>>2]; + r4 = r17 + 8; + r6 = r19 + r0; + r31=0x15fd8; + pc=0x37600; + run_37000(); return; + case 0x15fd8: + pc=0x15ea4; + continue; + case 0x15fe0: + r2 = r0 + 16; + page[(r16+0)>>>2] = r18; + page[(r16+8)>>>2] = r0; + page[(r16+12)>>>2] = r2; + page[(r16+24)>>>2] = r0; + pc=0x15e4c; + continue; + case 0x15ffc: + r4 = 6 << 16; + case 0x16000: + pc=0x16000; + return; + 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_16000() throws ExecutionException { /* 0x16000 - 0x16800 */ 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; + for(;;) { + switch(pc) { + case 0x16000: + r4 = r4 + 1068; + r5 = r5 - r20; + r31=0x16010; + pc=0x21400; + run_21000(); return; + case 0x16010: + pc=0x15f74; + run_15800(); return; + case 0x16200: + r29 = r29 + -32; + r2 = r4 + r0; + r4 = r5 + r0; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r17 = r6 + r0; + r16 = r5 + r0; + r6 = r0 + 32; + r5 = r2 + r0; + page[(r29+28)>>>2] = r31; + r31=0x16230; + pc=0x56fe0; + run_56800(); return; + case 0x16230: + r2= page[(r16+8)>>>2]; + r17 = r2 + r17; + addr=r17+8; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r31=0x16248; + pc=0x1d600; + run_1d000(); return; + case 0x16248: + r3= page[(r16+8)>>>2]; + r31= page[(r29+28)>>>2]; + r4= page[(r3+4)>>>2]; + r17= page[(r29+24)>>>2]; + r4 = r4 + -1; + page[(r3+4)>>>2] = r4; + r3 = 6 << 16; + r3 = r3 + 15440; + page[(r16+0)>>>2] = r3; + r3 = r0 + 1; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r2; + page[(r16+24)>>>2] = r0; + r16= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x16400: + r29 = r29 + -32; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r17 = r4 + r0; + r16 = r5 + r0; + if(r6 != r0) { + pc=0x16478; + continue; + } + r4= page[(r4+8)>>>2]; + r5= page[(r5+8)>>>2]; + r6= page[(r4+0)>>>2]; + r2= page[(r5+0)>>>2]; + if(r6 == r2) { + pc=0x16460; + continue; + } + case 0x1643c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5036; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x16460: + r4 = r4 + 8; + r5 = r5 + 8; + r31=0x16470; + pc=0x4ec00; + run_4e800(); return; + case 0x16470: + if(r2 != r0) { + pc=0x1643c; + continue; + } + case 0x16478: + r4 = r17 + r0; + r5 = r16 + r0; + r6 = r0 + 32; + r31=0x1648c; + pc=0x56fe0; + run_56800(); return; + case 0x1648c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x16600: + r29 = r29 + -24; + r2 = r4 + r0; + r4 = r5 + r0; + page[(r29+16)>>>2] = r16; + r5 = r2 + r0; + r16 = r6 + r0; + r6 = r0 + 32; + page[(r29+20)>>>2] = r31; + r31=0x16628; + pc=0x56fe0; + run_56800(); return; + case 0x16628: + r4= page[(r2+8)>>>2]; + r3 = r2 + r0; + r2= page[(r4+0)>>>2]; + if(r16 == r0) { + pc=0x1664c; + continue; + } + case 0x1663c: + r16 = r16 + -1; + r2= page[(r2+0)>>>2]; + if(r16 != r0) { + pc=0x1663c; + continue; + } + case 0x1664c: + r5= page[(r4+12)>>>2]; + r6 = r0 + 32; + r5 = r5 + -1; + page[(r4+12)>>>2] = r5; + r4 = r3 + r0; + r5 = r2 + 8; + r31=0x1666c; + pc=0x56fe0; + run_56800(); return; + case 0x1666c: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 24; + pc=r31; + return; + case 0x16800: + pc=0x16800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_16800() throws ExecutionException { /* 0x16800 - 0x17000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x16800: + r29 = r29 + -32; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r3 = r4 + r0; + r16= page[(r4+12)>>>2]; + r17= page[(r5+12)>>>2]; + if(r6 == r0) { + pc=0x16884; + continue; + } + r2 = r0 + -9; + page[(r4+8)>>>2] = r0; + r16 = r16 & r2; + case 0x16830: + r4 = r3 + r0; + r6 = r0 + 32; + r31=0x16840; + pc=0x56fe0; + run_56800(); return; + case 0x16840: + r3 = r2 + r0; + case 0x16844: + r2 = r16 & 7; + if(r2 == r0) { + pc=0x16908; + continue; + } + r4 = r16 & 24; + r2 = r0 + 16; + if(r4 == r2) { + pc=0x16928; + continue; + } + case 0x16860: + r17 = r17 & 24; + r16 = r17 | r16; + page[(r3+12)>>>2] = r16; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x16884: + r2= page[(r4+8)>>>2]; + if(r2 == r0) { + pc=0x16830; + continue; + } + r4= page[(r5+8)>>>2]; + if(r4 == r0) { + pc=0x16844; + continue; + } + r6 = r0 + 1; + if(r2 == r6) { + pc=0x16954; + continue; + } + if(r4 == r6) { + pc=0x169b0; + continue; + } + f0= page[(r3+20)>>>2]; + f2= page[(r5+20)>>>2]; + f1= page[(r3+16)>>>2]; + f3= page[(r5+16)>>>2]; + 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)) { + pc=0x16988; + continue; + } + case 0x168dc: + if(r2 == r0) { + pc=0x16844; + continue; + } + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5036; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x16908: + r2 = r0 + -8; + r16 = r16 & r2; + r2 = r17 & 7; + r16 = r16 | r2; + r4 = r16 & 24; + r2 = r0 + 16; + if(r4 != r2) { + pc=0x16860; + continue; + } + case 0x16928: + r2 = r0 + -9; + r17 = r17 & r2; + r17 = r17 & 24; + r16 = r17 | r16; + page[(r3+12)>>>2] = r16; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x16954: + if(r4 == r2) { + pc=0x16994; + continue; + } + f0= page[(r3+16)>>>2]; + r2 = r0 + 1; + { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } + f0= page[(r5+20)>>>2]; + f1= page[(r5+16)>>>2]; + 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)) { + pc=0x168dc; + continue; + } + case 0x16988: + r2 = r0 + r0; + pc=0x168dc; + continue; + case 0x16994: + r4= page[(r3+16)>>>2]; + r2= page[(r5+16)>>>2]; + r2 = r4 ^ r2; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + pc=0x168dc; + continue; + case 0x169b0: + r2= page[(r5+16)>>>2]; + f0 = r2; + r2 = r0 + 1; + { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } + f0= page[(r3+20)>>>2]; + f1= page[(r3+16)>>>2]; + 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)) { + pc=0x168dc; + continue; + } + r2 = r0 + r0; + pc=0x168dc; + continue; + case 0x16a00: + r29 = r29 + -40; + page[(r29+32)>>>2] = r19; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+28)>>>2] = r18; + r18= page[(r4+8)>>>2]; + r2= page[(r5+8)>>>2]; + r7 = r0 + 33; r16 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1a1d0; - run_1a000(); - return; + r3 = r5 + r0; + r17 = r6 + r0; + r19= page[(r18+0)>>>2]; + if(r2 == r7) { + pc=0x16bf4; + continue; } - case 0x1943c: - r2 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1a1bc; - run_1a000(); - return; + r7 = (r2&0xffffffffL) < (34&0xffffffffL) ? 1 : 0; + if(r7 != r0) { + pc=0x16b58; + continue; } - case 0x1944c: + r7 = r0 + 38; + if(r2 == r7) { + pc=0x16b18; + continue; + } + r7 = r0 + 44; + if(r2 != r7) { + pc=0x16b2c; + continue; + } + r18 = 6 << 16; + r2= page[(r6+0)>>>2]; + r18 = r18 + 15440; + if(r2 != r18) { + pc=0x16b38; + continue; + } + r5= page[(r6+8)>>>2]; + if(r5 == r0) { + pc=0x16d28; + continue; + } + r2 = r0 + 2; + if(r5 == r2) { + pc=0x16ce0; + continue; + } + case 0x16a90: + r2 = r0 + 1; + if(r5 == r2) { + pc=0x16aac; + continue; + } + r4 = 6 << 16; + r4 = r4 + 1168; + r31=0x16aac; + pc=0x21400; + run_21000(); return; + case 0x16aac: + r2= page[(r17+16)>>>2]; + if(r2 < 0) { + pc=0x16ca8; + continue; + } + case 0x16abc: + r19 = r2 < r19 ? 1 : 0; + if(r19 == r0) { + pc=0x16cb4; + continue; + } + r3= page[(r16+8)>>>2]; + r2 = r3 + r2; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r31=0x16ae0; + pc=0x1d600; + run_1d000(); return; + case 0x16ae0: + r3= page[(r16+8)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + -1; + page[(r3+4)>>>2] = r4; + r3 = r0 + 1; + page[(r16+0)>>>2] = r18; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r2; + page[(r16+24)>>>2] = r0; + pc=0x16c64; + continue; + case 0x16b18: + r2 = 6 << 16; + r4= page[(r6+0)>>>2]; + r2 = r2 + 15360; + if(r4 == r2) { + pc=0x16c84; + continue; + } + case 0x16b2c: + r4 = r16 + r0; + r5 = r3 + r0; + r6 = r17 + r0; + case 0x16b38: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 40; + pc=0x14a00; + run_14800(); return; + case 0x16b58: + r4 = r0 + 31; + if(r2 != r4) { + pc=0x16b2c; + continue; + } + r4 = 6 << 16; + r2= page[(r6+0)>>>2]; + r4 = r4 + 15360; + if(r2 != r4) { + pc=0x16b2c; + continue; + } + r17= page[(r6+8)>>>2]; + r3= page[(r17+0)>>>2]; + page[(r16+0)>>>2] = r2; + r19 = r19 + r3; + r4 = r19 + 12; + r31=0x16b98; + pc=0x20200; + run_20000(); return; + case 0x16b98: + page[(r16+8)>>>2] = r2; + r2 = r2 + r19; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+8)>>>2]; + r3 = r0 + 1; + page[(r2+0)>>>2] = r19; + page[(r2+4)>>>2] = r3; + r4= page[(r16+8)>>>2]; + r6= page[(r18+0)>>>2]; + r5 = r18 + 8; + r4 = r4 + 8; + r31=0x16bcc; + pc=0x56fe0; + run_56800(); return; + case 0x16bcc: + r2= page[(r18+0)>>>2]; + r4= page[(r16+8)>>>2]; + r2 = r2 + 8; + r6= page[(r17+0)>>>2]; + r4 = r4 + r2; + r5 = r17 + 8; + r31=0x16bec; + pc=0x56fe0; + run_56800(); return; + case 0x16bec: + pc=0x16c44; + continue; + case 0x16bf4: + r2 = 6 << 16; + r4= page[(r6+0)>>>2]; + r2 = r2 + 15360; + if(r4 != r2) { + pc=0x16b2c; + continue; + } + r17= page[(r6+8)>>>2]; + r2= page[(r17+0)>>>2]; + if(r19 == r2) { + pc=0x16d3c; + continue; + } + r2 = r0 + r0; + case 0x16c24: + r3 = 6 << 16; + r3 = r3 + 15440; + page[(r16+0)>>>2] = r3; + r3 = r0 + 1; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r2; + page[(r16+24)>>>2] = r0; + case 0x16c44: + r2= page[(r18+4)>>>2]; + r2 = r2 + -1; + page[(r18+4)>>>2] = r2; + r2= page[(r17+4)>>>2]; + r2 = r2 + -1; + page[(r17+4)>>>2] = r2; + case 0x16c64: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x16c84: + r17= page[(r6+8)>>>2]; + r2= page[(r17+0)>>>2]; + if(r19 == r2) { + pc=0x16d5c; + continue; + } + r2 = r0 + 1; + pc=0x16c24; + continue; + case 0x16ca8: + r2 = r2 + r19; + if(r2 >= 0) { + pc=0x16abc; + continue; + } + case 0x16cb4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1188; + case 0x16cc0: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 40; + pc=0x1fc00; + run_1f800(); return; + case 0x16ce0: + f0= page[(r6+20)>>>2]; + r2 = r0 + 1; + f1= page[(r6+16)>>>2]; + page[(r6+8)>>>2] = 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; + page[(r17+16)>>>2] = f2; + r5 = r0 + 1; + pc=0x16a90; + continue; + case 0x16d28: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1148; + pc=0x16cc0; + continue; + case 0x16d3c: + r4 = r18 + 8; + r5 = r17 + 8; + r6 = r19 + r0; + r31=0x16d50; + pc=0x4ec00; + run_4e800(); return; + case 0x16d50: + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + pc=0x16c24; + continue; + case 0x16d5c: + r4 = r18 + 8; + r5 = r17 + 8; + r6 = r19 + r0; + r31=0x16d70; + pc=0x4ec00; + run_4e800(); return; + case 0x16d70: + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + pc=0x16c24; + continue; + case 0x16e00: + r29 = r29 + -40; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + r19 = r4 + r0; + r18 = r5 + r0; + if(r6 == r0) { + pc=0x16e64; + continue; + } + case 0x16e2c: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r0 + 32; + r31=0x16e40; + pc=0x56fe0; + run_56800(); return; + case 0x16e40: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x16e64: + r3= page[(r4+8)>>>2]; + r2= page[(r5+8)>>>2]; + r5= page[(r3+8)>>>2]; + r4= page[(r2+8)>>>2]; + if(r5 == r4) { + pc=0x16eb0; + continue; + } + case 0x16e80: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5036; + r29 = r29 + 40; + pc=0x1fc00; + run_1f800(); return; + case 0x16eb0: + r17= page[(r3+0)>>>2]; + r16= page[(r2+0)>>>2]; + if(r3 == r17) { + pc=0x16f40; + continue; + } + r20 = 6 << 16; + r20 = r20 + 784; + case 0x16ec8: + if(r2 == r16) { + pc=0x16f20; + continue; + } + case 0x16ed0: + r2= page[(r17+8)>>>2]; + r3= page[(r16+8)>>>2]; + if(r2 != r3) { + pc=0x16e80; + continue; + } + r2= page[(r2+8)>>>2]; + r4 = r17 + 8; + r5 = r16 + 8; + pc=r2; + r31=0x16ef8; + return; + case 0x16ef8: + if(r2 != r0) { + pc=0x16e80; + continue; + } + r17= page[(r17+0)>>>2]; + r2= page[(r19+8)>>>2]; + r16= page[(r16+0)>>>2]; + if(r17 == r2) { + pc=0x16f38; + continue; + } + r2= page[(r18+8)>>>2]; + pc=0x16ec8; + continue; + case 0x16f20: + r4 = r20 + r0; + r5 = r0 + r0; + r31=0x16f30; + pc=0x21400; + run_21000(); return; + case 0x16f30: + pc=0x16ed0; + continue; + case 0x16f38: + r2= page[(r18+8)>>>2]; + case 0x16f40: + if(r2 == r16) { + pc=0x16e2c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 784; + r5 = r0 + 1; + r31=0x16f5c; + pc=0x21400; + run_21000(); return; + case 0x16f5c: + pc=0x16e2c; + continue; + case 0x17000: + pc=0x17000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_17000() throws ExecutionException { /* 0x17000 - 0x17800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x17000: + r29 = r29 + -32; + page[(r29+20)>>>2] = r17; + r17 = r5 + r0; + r5= page[(r5+8)>>>2]; + page[(r29+16)>>>2] = r16; + r3 = (r5&0xffffffffL) < (22&0xffffffffL) ? 1 : 0; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + r16 = r4 + r0; + if(r3 == r0) { + pc=0x170d0; + continue; + } + r3 = (r5&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x17094; + continue; + } + r3 = r0 + 19; + if(r5 != r3) { + pc=0x17118; + continue; + } + r2= page[(r4+8)>>>2]; + r31= page[(r29+28)>>>2]; + r4= page[(r2+4)>>>2]; + r3= page[(r2+0)>>>2]; + r4 = r4 + -1; + page[(r2+4)>>>2] = r4; + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r16+0)>>>2] = r2; + r2 = r0 + 1; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+8)>>>2] = r2; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r3; + page[(r16+24)>>>2] = r0; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17094: + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r4+0)>>>2] = r2; + r2 = r0 + 1; + page[(r4+8)>>>2] = r2; + page[(r4+12)>>>2] = r0; + page[(r4+16)>>>2] = r0; + page[(r4+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x170d0: + r3 = r0 + 22; + if(r5 != r3) { + pc=0x17118; + continue; + } + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r4+0)>>>2] = r2; + r2 = r0 + 1; + page[(r4+8)>>>2] = r2; + page[(r4+12)>>>2] = r0; + page[(r4+16)>>>2] = r2; + page[(r4+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17118: + r4= page[(r17+4)>>>2]; + r3 = r0 + 1; + if(r4 == r3) { + pc=0x17138; + continue; + } + r4 = 6 << 16; + r4 = r4 + 880; + r31=0x17138; + pc=0x21400; + run_21000(); return; + case 0x17138: + r18 = 6 << 16; + r4 = r18 + 16012; + r31=0x17148; + pc=0x1be00; + run_1b800(); return; + case 0x17148: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 904; + r31=0x1715c; + pc=0x1c600; + run_1c000(); return; + case 0x1715c: + r5= page[(r17+12)>>>2]; + r4 = r18 + 16012; + r31=0x1716c; + pc=0x1c600; + run_1c000(); return; + case 0x1716c: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 944; + r31=0x17180; + pc=0x1c600; + run_1c000(); return; + case 0x17180: + r2= page[(r16+0)>>>2]; + r4 = r18 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x17194; + pc=0x1c600; + run_1c000(); return; + case 0x17194: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 12036; + r31=0x171a8; + pc=0x1c600; + run_1c000(); return; + case 0x171a8: + r4 = r18 + 16012; + r5 = r0 + r0; + r31=0x171b8; + pc=0x1c400; + run_1c000(); return; + case 0x171b8: + r31= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5= page[(r18+16012)>>>2]; + r18= page[(r29+24)>>>2]; + r4 = r0 + -2; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x17200: + r29 = r29 + -32; + page[(r29+20)>>>2] = r17; + r17 = r5 + r0; + r5= page[(r5+8)>>>2]; + r3 = r0 + 20; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + r16 = r4 + r0; + if(r5 == r3) { + pc=0x1728c; + continue; + } + r3 = (r5&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x1738c; + continue; + } + r3 = r0 + 21; + if(r5 != r3) { + pc=0x17280; + continue; + } + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r4+0)>>>2] = r2; + r2 = r0 + 1; + page[(r4+8)>>>2] = r2; + page[(r4+12)>>>2] = r0; + page[(r4+16)>>>2] = r2; + page[(r4+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17280: + r3 = r0 + 22; + if(r5 != r3) { + pc=0x172c8; + continue; + } + case 0x1728c: + r2 = 6 << 16; + r2 = r2 + 15440; + r31= page[(r29+28)>>>2]; + page[(r16+0)>>>2] = r2; + r2 = r0 + 1; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+8)>>>2] = r2; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r0; + page[(r16+24)>>>2] = r0; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x172c8: + r4= page[(r17+4)>>>2]; + r3 = r0 + 1; + if(r4 == r3) { + pc=0x172e8; + continue; + } + r4 = 6 << 16; + r4 = r4 + 880; + r31=0x172e8; + pc=0x21400; + run_21000(); return; + case 0x172e8: + r18 = 6 << 16; + r4 = r18 + 16012; + r31=0x172f8; + pc=0x1be00; + run_1b800(); return; + case 0x172f8: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 904; + r31=0x1730c; + pc=0x1c600; + run_1c000(); return; + case 0x1730c: + r5= page[(r17+12)>>>2]; + r4 = r18 + 16012; + r31=0x1731c; + pc=0x1c600; + run_1c000(); return; + case 0x1731c: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 944; + r31=0x17330; + pc=0x1c600; + run_1c000(); return; + case 0x17330: + r2= page[(r16+0)>>>2]; + r4 = r18 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x17344; + pc=0x1c600; + run_1c000(); return; + case 0x17344: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 12036; + r31=0x17358; + pc=0x1c600; + run_1c000(); return; + case 0x17358: + r4 = r18 + 16012; + r5 = r0 + r0; + r31=0x17368; + pc=0x1c400; + run_1c000(); return; + case 0x17368: + r31= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5= page[(r18+16012)>>>2]; + r18= page[(r29+24)>>>2]; + r4 = r0 + -2; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x1738c: + r3 = r0 + 19; + if(r5 != r3) { + pc=0x172c8; + continue; + } + r2= page[(r4+8)>>>2]; + r4= page[(r2+12)>>>2]; + r3= page[(r2+8)>>>2]; + r4 = r4 + -1; + page[(r2+12)>>>2] = r4; + r2 = 6 << 16; + r2 = r2 + 15440; + r31= page[(r29+28)>>>2]; + page[(r16+0)>>>2] = r2; + r2 = r0 + 1; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+8)>>>2] = r2; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r3; + page[(r16+24)>>>2] = r0; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17400: + r29 = r29 + -32; + page[(r29+20)>>>2] = r17; + r17 = r5 + r0; + r5= page[(r5+8)>>>2]; + page[(r29+16)>>>2] = r16; + r2 = r5 + -5; + r3 = (r2&0xffffffffL) < (14&0xffffffffL) ? 1 : 0; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + r16 = r4 + r0; + if(r3 == r0) { + pc=0x176b8; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 2592; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x17450: + r2 = r0 + r0; + case 0x17454: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17474: + f12= page[(r4+20)>>>2]; + f13= page[(r4+16)>>>2]; + r31=0x17488; + pc=0x43800; + run_43800(); return; + case 0x17488: + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + case 0x17490: + r3= page[(r16+12)>>>2]; + r2 = r0 + -9; + r2 = r3 & r2; + r31= page[(r29+28)>>>2]; + page[(r16+12)>>>2] = r2; + r2 = r0 + r0; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x174c4: + f12= page[(r4+20)>>>2]; + f13= page[(r4+16)>>>2]; + r31=0x174d8; + pc=0x43400; + run_43000(); return; + case 0x174d8: + pc=0x17488; + continue; + case 0x174e0: + f12= page[(r4+20)>>>2]; + f13= page[(r4+16)>>>2]; + r31=0x174f4; + pc=0x43a00; + run_43800(); return; + case 0x174f4: + pc=0x17488; + continue; + case 0x174fc: + f12= page[(r4+20)>>>2]; + f0= page[(r28+-32732)>>>2]; + f13= page[(r4+16)>>>2]; + f1= page[(r28+-32736)>>>2]; + 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)) { + pc=0x17540; + continue; + } + f0= page[(r28+-32724)>>>2]; + f1= page[(r28+-32728)>>>2]; + 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)) { + pc=0x17774; + continue; + } + case 0x17540: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1208; + r31=0x17554; + pc=0x1fc00; + run_1f800(); return; + case 0x17554: + page[(r16+20)>>>2] = r0; + page[(r16+16)>>>2] = r0; + pc=0x17490; + continue; + case 0x17564: + f12= page[(r4+20)>>>2]; + f0= page[(r28+-32732)>>>2]; + f13= page[(r4+16)>>>2]; + f1= page[(r28+-32736)>>>2]; + 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)) { + pc=0x17540; + continue; + } + f0= page[(r28+-32724)>>>2]; + f1= page[(r28+-32728)>>>2]; + fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); + if(((fcsr&0x800000)!=0) == (0!=0)) { + pc=0x17540; + continue; + } + r31=0x175b0; + pc=0x43c00; + run_43800(); return; + case 0x175b0: + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x17490; + continue; + case 0x175c0: + f12= page[(r4+20)>>>2]; + f13= page[(r4+16)>>>2]; + r31=0x175d4; + pc=0x43000; + run_43000(); return; + case 0x175d4: + pc=0x17488; + continue; + case 0x175dc: + f0= page[(r4+20)>>>2]; + r2 = r0 + 1; + f1= page[(r4+16)>>>2]; + page[(r4+8)>>>2] = 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; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + page[(r16+16)>>>2] = f2; + r4 = r16 + r0; + r5 = r17 + r0; + r16= page[(r29+16)>>>2]; + r17= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=0x17800; + run_17800(); return; + case 0x1763c: + r3= page[(r4+16)>>>2]; + r2 = 32768 << 16; + r2 = r3 ^ r2; + r3= page[(r4+12)>>>2]; + page[(r4+16)>>>2] = r2; + r2 = r0 + -9; + r2 = r3 & r2; + page[(r4+12)>>>2] = r2; + r2= page[(r4+24)>>>2]; + r2 = r0 - r2; + pc=0x17454; + continue; + case 0x17670: + f0= page[(r4+20)>>>2]; + r2 = r0 + 1; + f1= page[(r4+16)>>>2]; + page[(r4+8)>>>2] = 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; + page[(r16+16)>>>2] = f2; + r2 = r0 + r0; + pc=0x17454; + continue; + case 0x176b8: + r3= page[(r17+4)>>>2]; + r2 = r0 + 1; + if(r3 == r2) { + pc=0x176d8; + continue; + } + r4 = 6 << 16; + r4 = r4 + 880; + r31=0x176d8; + pc=0x21400; + run_21000(); return; + case 0x176d8: + r18 = 6 << 16; + r4 = r18 + 16012; + r31=0x176e8; + pc=0x1be00; + run_1b800(); return; + case 0x176e8: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 904; + r31=0x176fc; + pc=0x1c600; + run_1c000(); return; + case 0x176fc: + r5= page[(r17+12)>>>2]; + r4 = r18 + 16012; + r31=0x1770c; + pc=0x1c600; + run_1c000(); return; + case 0x1770c: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 944; + r31=0x17720; + pc=0x1c600; + run_1c000(); return; + case 0x17720: + r2= page[(r16+0)>>>2]; + r4 = r18 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x17734; + pc=0x1c600; + run_1c000(); return; + case 0x17734: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 12036; + r31=0x17748; + pc=0x1c600; + run_1c000(); return; + case 0x17748: + r4 = r18 + 16012; + r5 = r0 + r0; + r31=0x17758; + pc=0x1c400; + run_1c000(); return; + case 0x17758: + r5= page[(r18+16012)>>>2]; + r4 = r0 + -2; + r31=0x17768; + pc=0x1fc00; + run_1f800(); return; + case 0x17768: + r2 = r0 + r0; + pc=0x17454; + continue; + case 0x17774: + r31=0x1777c; + pc=0x43e00; + run_43800(); return; + case 0x1777c: + page[(r16+20)>>>2] = f0; + page[(r16+16)>>>2] = f1; + pc=0x17490; + continue; + case 0x17800: + pc=0x17800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_17800() throws ExecutionException { /* 0x17800 - 0x18000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x17800: + r29 = r29 + -32; + page[(r29+20)>>>2] = r17; + r17 = r5 + r0; + r5= page[(r5+8)>>>2]; + page[(r29+16)>>>2] = r16; + r2 = r5 + -5; + r3 = (r2&0xffffffffL) < (14&0xffffffffL) ? 1 : 0; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + r16 = r4 + r0; + if(r3 == r0) { + pc=0x1799c; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 2648; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x17850: + r31= page[(r29+28)>>>2]; + r2 = r0 + r0; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17874: + f2= page[(r4+16)>>>2]; + r2 = r0 + 2; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r4+8)>>>2] = r2; + page[(r4+20)>>>2] = f0; + page[(r4+16)>>>2] = f1; + r31= page[(r29+28)>>>2]; + r2 = r0 + r0; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x178b0: + f2= page[(r4+16)>>>2]; + r2 = r0 + 2; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r4+8)>>>2] = r2; + page[(r4+20)>>>2] = f0; + page[(r4+16)>>>2] = f1; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r16= page[(r29+16)>>>2]; + r5 = r17 + r0; + r17= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=0x17400; + run_17000(); return; + case 0x178e8: + r2= page[(r4+16)>>>2]; + r2 = ~(r0 | r2); + case 0x178f4: + r3= page[(r16+12)>>>2]; + page[(r16+16)>>>2] = r2; + r2 = r0 + -9; + r2 = r3 & r2; + page[(r16+12)>>>2] = r2; + r2= page[(r16+24)>>>2]; + r31= page[(r29+28)>>>2]; + r2 = r0 - r2; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17930: + r2= page[(r4+16)>>>2]; + r2 = r0 - r2; + pc=0x178f4; + continue; + case 0x17944: + addr=r4+19; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x17948: + r3= page[(r16+12)>>>2]; + page[(r16+16)>>>2] = r2; + r2 = r0 + -8; + r2 = r3 & r2; + r2 = r2 | 8; + r31= page[(r29+28)>>>2]; + page[(r16+12)>>>2] = r2; + r2 = r0 + r0; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17984: + addr=r4+18; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + pc=0x17948; + continue; + case 0x17990: + addr=r4+17; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + pc=0x17948; + continue; + case 0x1799c: + r3= page[(r17+4)>>>2]; + r2 = r0 + 1; + if(r3 == r2) { + pc=0x179bc; + continue; + } + r4 = 6 << 16; + r4 = r4 + 880; + r31=0x179bc; + pc=0x21400; + run_21000(); return; + case 0x179bc: + r18 = 6 << 16; + r4 = r18 + 16012; + r31=0x179cc; + pc=0x1be00; + run_1b800(); return; + case 0x179cc: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 904; + r31=0x179e0; + pc=0x1c600; + run_1c000(); return; + case 0x179e0: + r5= page[(r17+12)>>>2]; + r4 = r18 + 16012; + r31=0x179f0; + pc=0x1c600; + run_1c000(); return; + case 0x179f0: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 944; + r31=0x17a04; + pc=0x1c600; + run_1c000(); return; + case 0x17a04: + r2= page[(r16+0)>>>2]; + r4 = r18 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x17a18; + pc=0x1c600; + run_1c000(); return; + case 0x17a18: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 12036; + r31=0x17a2c; + pc=0x1c600; + run_1c000(); return; + case 0x17a2c: + r4 = r18 + 16012; + r5 = r0 + r0; + r31=0x17a3c; + pc=0x1c400; + run_1c000(); return; + case 0x17a3c: + r5= page[(r18+16012)>>>2]; + r4 = r0 + -2; + r31=0x17a4c; + pc=0x1fc00; + run_1f800(); return; + case 0x17a4c: + r31= page[(r29+28)>>>2]; + r2 = r0 + r0; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + page[(r16+24)>>>2] = r2; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17c00: + r2= page[(r5+8)>>>2]; + r29 = r29 + -32; + r3 = r0 + 20; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + r16 = r4 + r0; + r17 = r5 + r0; + if(r2 == r3) { + pc=0x17cb0; + continue; + } + r3 = (r2&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x17c68; + continue; + } + r3 = r0 + 10; + if(r2 != r3) { + pc=0x17cec; + continue; + } + r2 = r0 + 1; + page[(r4+24)>>>2] = r2; + case 0x17c4c: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17c68: + r3 = (r2&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x17cec; + continue; + } + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r4+0)>>>2] = r2; + r2 = r0 + 1; + page[(r4+8)>>>2] = r2; + page[(r4+12)>>>2] = r0; + page[(r4+16)>>>2] = r0; + page[(r4+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17cb0: + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r4+0)>>>2] = r2; + r2 = r0 + 1; + page[(r4+8)>>>2] = r2; + page[(r4+12)>>>2] = r0; + page[(r4+16)>>>2] = r2; + page[(r4+24)>>>2] = r0; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x17cec: + r5= page[(r16+8)>>>2]; + r3 = r0 + 1; + if(r5 == r3) { + pc=0x17d34; + continue; + } + if(r5 == r0) { + pc=0x17d7c; + continue; + } + r2 = r0 + 2; + if(r5 != r2) { + pc=0x17d58; + continue; + } + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r4 = r16 + r0; + r5 = r17 + r0; + r16= page[(r29+16)>>>2]; + r17= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=0x17400; + run_17000(); return; + case 0x17d34: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r4 = r16 + r0; + r5 = r17 + r0; + r16= page[(r29+16)>>>2]; + r17= page[(r29+20)>>>2]; + r29 = r29 + 32; + pc=0x17800; + continue; + case 0x17d58: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r4 = 6 << 16; + r4 = r4 + 1232; + r29 = r29 + 32; + pc=0x21400; + run_21000(); return; + case 0x17d7c: + r3 = r2 + -5; + r4 = (r3&0xffffffffL) < (14&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x17e10; + continue; + } + r4 = 6 << 16; + r3 = r3 << 2; + r4 = r4 + 2704; + r3 = r4 + r3; + r3= page[(r3+0)>>>2]; + pc=r3; + return; + case 0x17dac: + r3= page[(r16+12)>>>2]; + r2 = r0 + -9; + r2 = r3 & r2; + page[(r16+12)>>>2] = r2; + case 0x17dbc: + page[(r16+24)>>>2] = r0; + pc=0x17c4c; + continue; + case 0x17dc8: + r3= page[(r16+12)>>>2]; + r2 = r0 + -8; + r2 = r3 & r2; + r2 = r2 | 8; + page[(r16+12)>>>2] = r2; + page[(r16+24)>>>2] = r0; + pc=0x17c4c; + continue; + case 0x17de8: + r3= page[(r16+12)>>>2]; + r2 = r0 + -9; + r2 = r3 & r2; + page[(r16+12)>>>2] = r2; + r2= page[(r16+24)>>>2]; + r2 = r0 - r2; + page[(r16+24)>>>2] = r2; + pc=0x17c4c; + continue; + case 0x17e10: + r4= page[(r17+4)>>>2]; + r3 = r0 + 1; + if(r4 == r3) { + pc=0x17e34; + continue; + } + r4 = 6 << 16; + r4 = r4 + 880; + r5 = r2 + r0; + r31=0x17e34; + pc=0x21400; + run_21000(); return; + case 0x17e34: + r18 = 6 << 16; + r4 = r18 + 16012; + r31=0x17e44; + pc=0x1be00; + run_1b800(); return; + case 0x17e44: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 904; + r31=0x17e58; + pc=0x1c600; + run_1c000(); return; + case 0x17e58: + r5= page[(r17+12)>>>2]; + r4 = r18 + 16012; + r31=0x17e68; + pc=0x1c600; + run_1c000(); return; + case 0x17e68: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 944; + r31=0x17e7c; + pc=0x1c600; + run_1c000(); return; + case 0x17e7c: + r2= page[(r16+0)>>>2]; + r4 = r18 + 16012; + r5= page[(r2+0)>>>2]; + r31=0x17e90; + pc=0x1c600; + run_1c000(); return; + case 0x17e90: + r5 = 6 << 16; + r4 = r18 + 16012; + r5 = r5 + 12036; + r31=0x17ea4; + pc=0x1c600; + run_1c000(); return; + case 0x17ea4: + r4 = r18 + 16012; + r5 = r0 + r0; + r31=0x17eb4; + pc=0x1c400; + run_1c000(); return; + case 0x17eb4: + r31= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5= page[(r18+16012)>>>2]; + r18= page[(r29+24)>>>2]; + r4 = r0 + -2; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x18000: + pc=0x18000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_18000() throws ExecutionException { /* 0x18000 - 0x18800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x18000: + r29 = r29 + -48; + r2= page[(r28+-31368)>>>2]; + page[(r29+16)>>>2] = r16; + r16 = r4 + r0; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r3 = r4 + r3; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r3+0)>>>2] = r5; + r5= page[(r28+-32748)>>>2]; + r2 = r2 + 1; + page[(r28+-31368)>>>2] = r2; + r2 = r2 < r5 ? 1 : 0; + if(r2 == r0) { + pc=0x184a0; + continue; + } + case 0x18054: + r2= page[(r28+-31380)>>>2]; + r3 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x184dc; + continue; + } + case 0x18068: + r19 = 6 << 16; + r18 = 6 << 16; + r20 = 6 << 16; + r17 = 6 << 16; + r19 = r19 + 1252; + r18 = r18 + 1348; + r20 = r20 + 16648; + case 0x18084: + if(r2 != r0) { + pc=0x18178; + continue; + } + case 0x1808c: + r4= page[(r28+-31368)>>>2]; + r2 = r4 < 2 ? 1 : 0; + if(r2 != r0) { + pc=0x18178; + continue; + } + r8= page[(r28+-31364)>>>2]; + r3 = r4 << 2; + r3 = r3 + -8; + r3 = r8 + r3; + r5= page[(r3+0)>>>2]; + r7= page[(r3+4)>>>2]; + r2= page[(r5+0)>>>2]; + r6= page[(r7+0)>>>2]; + r9 = r2 < r6 ? 1 : 0; + if(r9 != r0) { + pc=0x18178; + continue; + } + if(r2 == r6) { + pc=0x181a4; + continue; + } + case 0x180d8: + r2= page[(r5+4)>>>2]; + r6 = r0 + 1; + if(r2 == r6) { + pc=0x181d8; + continue; + } + case 0x180e8: + if(r2 == r0) { + pc=0x18264; + continue; + } + r3 = r0 + 2; + if(r2 != r3) { + pc=0x18244; + continue; + } + r3= page[(r28+-31376)>>>2]; + r2 = r3 < 2 ? 1 : 0; + if(r2 != r0) { + pc=0x1846c; + continue; + } + case 0x18110: + r2= page[(r28+-31372)>>>2]; + r3 = r3 << 5; + r3 = r3 + -64; + r4 = r2 + r3; + r7= page[(r4+0)>>>2]; + r6 = r3 + 32; + r7= page[(r7+20)>>>2]; + r6 = r2 + r6; + pc=r7; + r31=0x18138; + return; + case 0x18138: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r2 = r2 + -1; + page[(r28+-31368)>>>2] = r2; + r2= page[(r28+-31376)>>>2]; + r3 = r3 + -8; + r3 = r4 + r3; + r2 = r2 + -1; + r4= page[(r3+4)>>>2]; + page[(r28+-31376)>>>2] = r2; + r2= page[(r28+-31380)>>>2]; + page[(r16+40)>>>2] = r0; + page[(r3+0)>>>2] = r4; + if(r2 == r0) { + pc=0x1808c; + continue; + } + case 0x18178: + r31= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 48; + pc=r31; + return; + case 0x181a4: + r6 = r0 + 37; + if(r2 != r6) { + pc=0x180d8; + continue; + } + r2 = r17 + 31340; + r2= page[(r2+52)>>>2]; + r2 = (r2&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x18178; + continue; + } + r2= page[(r5+4)>>>2]; + r6 = r0 + 1; + if(r2 != r6) { + pc=0x180e8; + continue; + } + case 0x181d8: + r2= page[(r28+-31376)>>>2]; + if(r2 <= 0) { + pc=0x1843c; + continue; + } + case 0x181e8: + r4= page[(r28+-31372)>>>2]; + r2 = r2 << 5; + r2 = r2 + -32; + r4 = r4 + r2; + r2= page[(r4+0)>>>2]; + r2= page[(r2+16)>>>2]; + pc=r2; + r31=0x18210; + return; + case 0x18210: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r3 = r3 + -8; + r3 = r4 + r3; + r4= page[(r3+4)>>>2]; + r2 = r2 + -1; + page[(r16+40)>>>2] = r0; + page[(r28+-31368)>>>2] = r2; + page[(r3+0)>>>2] = r4; + r2= page[(r28+-31380)>>>2]; + pc=0x18084; + continue; + case 0x18244: + r4 = 6 << 16; + r5 = r2 + r0; + r4 = r4 + 1368; + r31=0x18258; + pc=0x21400; + run_21000(); return; + case 0x18258: + r2= page[(r28+-31380)>>>2]; + pc=0x18084; + continue; + case 0x18264: + r2= page[(r7+8)>>>2]; + if(r2 != r0) { + pc=0x18334; + continue; + } + r21= page[(r5+8)>>>2]; + r2 = r0 + 2; + r6 = r4 + r0; + if(r21 == r2) { + pc=0x18374; + continue; + } + case 0x18288: + r2 = (r21&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x18300; + continue; + } + r22 = r0 + 3; + if(r21 == r22) { + pc=0x183d8; + continue; + } + r2 = r0 + 4; + if(r21 != r2) { + pc=0x183bc; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x18414; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1320; + r31=0x182d0; + pc=0x1fc00; + run_1f800(); return; + case 0x182d0: + page[(r28+-31380)>>>2] = r22; + case 0x182d4: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r3 = r3 + -8; + r3 = r4 + r3; + r4= page[(r3+4)>>>2]; + r2 = r2 + -1; + page[(r3+0)>>>2] = r4; + page[(r28+-31368)>>>2] = r2; + pc=0x18178; + continue; + case 0x18300: + r2 = r0 + 1; + if(r21 != r2) { + pc=0x183bc; + continue; + } + r4 = r4 << 2; + r2 = r0 + 4; + r8 = r8 + r4; + page[(r28+-31380)>>>2] = r2; + r2= page[(r8+-4)>>>2]; + r6 = r6 + -1; + page[(r3+0)>>>2] = r2; + page[(r28+-31368)>>>2] = r6; + pc=0x18178; + continue; + case 0x18334: + r4 = 6 << 16; + r5 = r2 + r0; + r4 = r4 + 1284; + r31=0x18348; + pc=0x21400; + run_21000(); return; + case 0x18348: + r6= page[(r28+-31368)>>>2]; + r8= page[(r28+-31364)>>>2]; + r3 = r6 << 2; + r3 = r3 + -8; + r3 = r8 + r3; + r5= page[(r3+0)>>>2]; + r2 = r0 + 2; + r21= page[(r5+8)>>>2]; + r4 = r6 + r0; + if(r21 != r2) { + pc=0x18288; + continue; + } + case 0x18374: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r21 = r0 + 1; + r2 = r0 + 41; + page[(r16+40)>>>2] = r21; + if(r5 == r2) { + pc=0x184ec; + continue; + } + r2= page[(r16+36)>>>2]; + r4 = r4 << 2; + r2 = r2 + 1; + r8 = r8 + r4; + page[(r16+36)>>>2] = r2; + r2= page[(r8+-4)>>>2]; + r6 = r6 + -1; + page[(r3+0)>>>2] = r2; + page[(r28+-31368)>>>2] = r6; + r2= page[(r28+-31380)>>>2]; + pc=0x18084; + continue; + case 0x183bc: + r4 = r18 + r0; + r5 = r21 + r0; + r31=0x183cc; + pc=0x21400; + run_21000(); return; + case 0x183cc: + r2= page[(r28+-31380)>>>2]; + pc=0x18084; + continue; + case 0x183d8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 44; + if(r2 == r3) { + pc=0x1850c; + continue; + } + r3 = r0 + 93; + if(r2 == r3) { + pc=0x18414; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1300; + r31=0x18408; + pc=0x1fc00; + run_1f800(); return; + case 0x18408: + page[(r28+-31380)>>>2] = r21; + pc=0x182d4; + continue; + case 0x18414: + r31=0x1841c; + pc=0x23000; + run_23000(); return; + case 0x1841c: + r2= page[(r28+-31368)>>>2]; + r2 = r2 + -2; + page[(r28+-31368)>>>2] = r2; + r2 = r0 + 1; + page[(r28+-31380)>>>2] = r2; + pc=0x18178; + continue; + case 0x1843c: + r5 = r2 + r0; + r4 = r19 + r0; + r31=0x1844c; + pc=0x21400; + run_21000(); return; + case 0x1844c: + r3= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r3 << 2; + r3 = r4 + r3; + r2= page[(r28+-31376)>>>2]; + r5= page[(r3+-8)>>>2]; + pc=0x181e8; + continue; + case 0x1846c: + r4 = 6 << 16; + r5 = r3 + r0; + r4 = r4 + 1268; + r31=0x18480; + pc=0x21400; + run_21000(); return; + case 0x18480: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r2 = r2 << 2; + r2 = r4 + r2; + r3= page[(r28+-31376)>>>2]; + r5= page[(r2+-8)>>>2]; + pc=0x18110; + continue; + case 0x184a0: + r2 = r5 << 1; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r2; + r31=0x184b4; + pc=0x4fa00; + run_4f800(); return; + case 0x184b4: + page[(r28+-31364)>>>2] = r2; + if(r2 != r0) { + pc=0x18054; + continue; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x184d4; + pc=0x1fc00; + run_1f800(); return; + case 0x184d4: + pc=0x18054; + continue; + case 0x184dc: + page[(r28+-31380)>>>2] = r0; + r2 = r0 + r0; + pc=0x18068; + continue; + case 0x184ec: + r31=0x184f4; + pc=0x23000; + run_23000(); return; + case 0x184f4: + r2= page[(r28+-31368)>>>2]; + page[(r28+-31380)>>>2] = r21; + r2 = r2 + -2; + page[(r28+-31368)>>>2] = r2; + pc=0x18178; + continue; + case 0x1850c: + r31=0x18514; + pc=0x23000; + run_23000(); return; + case 0x18514: + r2= page[(r28+-31368)>>>2]; + r3= page[(r28+-31364)>>>2]; + r2 = r2 << 2; + r2 = r3 + r2; + page[(r2+-4)>>>2] = r20; + r2= page[(r28+-31380)>>>2]; + pc=0x18084; + continue; + case 0x18600: + r2= page[(r28+-31372)>>>2]; + r29 = r29 + -104; + page[(r29+24)>>>2] = r16; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+100)>>>2] = f28; + page[(r29+96)>>>2] = f29; + page[(r29+92)>>>2] = f26; + page[(r29+88)>>>2] = f27; + page[(r29+84)>>>2] = f24; + page[(r29+80)>>>2] = f25; + page[(r29+76)>>>2] = f22; + page[(r29+72)>>>2] = f23; + page[(r29+68)>>>2] = f20; + page[(r29+64)>>>2] = f21; + r16 = r4 + r0; + if(r2 == r0) { + pc=0x195a8; + run_19000(); return; + } + case 0x18664: + r4= page[(r28+-31364)>>>2]; + r5= page[(r28+-32748)>>>2]; + if(r4 == r0) { + pc=0x19574; + run_19000(); return; + } + case 0x18674: 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; + r21 = r21 + 16712; + r2 = r5 < 2 ? 1 : 0; + page[(r16+32)>>>2] = r3; + page[(r16+36)>>>2] = r0; + page[(r16+40)>>>2] = r0; + page[(r28+-31376)>>>2] = r0; + page[(r4+0)>>>2] = r21; + page[(r28+-31368)>>>2] = r3; + if(r2 != r0) { + pc=0x191c4; + run_19000(); return; } + case 0x186a4: r3 = r0 + r0; - case 0x19484: - r2 = readPages[(r28 + -32752) >>> 12][((r28 + -32752) >>> 2) & 0x3ff]; - r22 = 5 << 16; + case 0x186a8: + f24= page[(r28+-32724)>>>2]; + r22 = 6 << 16; + f25= page[(r28+-32728)>>>2]; 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; + page[(r28+-31380)>>>2] = r0; + r2 = r0 + r0; + r22 = r22 + 4764; + r23 = r23 + 15440; + f26 = f24; + f27 = f25; + case 0x186cc: + r5= page[(r28+-32752)>>>2]; + r3 = r3 < r5 ? 1 : 0; + if(r3 == r0) { + pc=0x1873c; continue; } - case 0x194a8: - r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x19588; + if(r2 == r0) { + pc=0x18770; continue; } - case 0x194b8: + case 0x186e8: r3 = r0 + 1; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x1954c; + if(r2 != r3) { + pc=0x187f8; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x196c8; - run_19600(); - return; + if(r2 == r3) { + pc=0x18930; + run_18800(); 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; + r4 = (r2&0xffffffffL) < (92&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x18954; + run_18800(); return; } - case 0x194ec: - r4 = 5 << 16; + case 0x1871c: + r4 = 6 << 16; r2 = r2 << 2; - r4 = r4 + 27392; + r4 = r4 + 2760; r2 = r4 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + 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; + case 0x1873c: + r4= page[(r28+-31372)>>>2]; + r2 = r5 << 1; + r5 = r5 << 6; + page[(r28+-32752)>>>2] = r2; + r31=0x18754; + pc=0x4fa00; + run_4f800(); return; + case 0x18754: + page[(r28+-31372)>>>2] = r2; + if(r2 == r0) { + pc=0x18990; + run_18800(); 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; + r2= page[(r28+-31380)>>>2]; + case 0x18768: + if(r2 != r0) { + pc=0x186e8; 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 */ + case 0x18770: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; r2 = r0 + 32; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x19714; - run_19600(); - return; + if(r4 == r2) { + pc=0x1897c; + run_18800(); return; } r18 = r4 + r0; - case 0x1959c: + case 0x18784: 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 = (r2&0xffffffffL) < (62&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x18810; + run_18800(); return; } - r3 = 5 << 16; + r3 = 6 << 16; r2 = r2 << 2; - r3 = r3 + 27760; + r3 = r3 + 3128; r2 = r3 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + 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; + case 0x187b8: + r31=0x187c0; + pc=0x23000; + run_23000(); return; + case 0x187c0: + r17 = r2 + r0; + r2 = r0 + 61; + if(r17 != r2) { + pc=0x1919c; + run_19000(); 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; + r17 = 6 << 16; + r17 = r17 + 16504; + case 0x187d8: + r31=0x187e0; + pc=0x23000; + run_23000(); return; + case 0x187e0: + r4 = r16 + r0; + r5 = r17 + r0; + r31=0x187f0; + pc=0x18000; + continue; + case 0x187f0: + r2= page[(r28+-31380)>>>2]; + case 0x187f8: + r3 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x188a4; + run_18800(); return; } - r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; - case 0x19600: - pc = 0x19600; + case 0x18800: + pc=0x18800; 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_18800() throws ExecutionException { /* 0x18800 - 0x19000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x19600: + for(;;) { + switch(pc) { + case 0x18800: + r3= page[(r28+-31376)>>>2]; + pc=0x186cc; + run_18000(); return; + case 0x18810: + r18 = r18 & 255; + r2 = r18 + -48; + r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x18bd0; + continue; + } + r18 = r18 + r22; + addr=r18+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 < 0) { + pc=0x19714; + run_19000(); return; + } + r3= page[(r28+-31376)>>>2]; + r4= page[(r28+-31372)>>>2]; 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]; + page[(r2+0)>>>2] = r23; + page[(r2+8)>>>2] = r4; + page[(r2+12)>>>2] = r0; + page[(r2+16)>>>2] = r0; + page[(r2+24)>>>2] = r0; + r2= page[(r28+-31368)>>>2]; + page[(r28+-31376)>>>2] = r3; + r3= page[(r28+-31364)>>>2]; 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; + r2= page[(r2+-4)>>>2]; + if(r2 == r21) { + pc=0x196b0; + run_19000(); return; } - case 0x19648: - r5 = 5 << 16; + case 0x18888: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29596; - /* Next insn is delay slot */ - r31 = 0x1965c; - pc = 0x20600; - run_20600(); - return; - case 0x1965c: + r5 = r5 + 5020; + r31=0x1889c; + pc=0x1fc00; + run_1f800(); return; + case 0x1889c: r2 = r0 + 3; - writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; - case 0x19664: + page[(r28+-31380)>>>2] = r2; + case 0x188a4: r3 = r0 + 4; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x19dcc; - run_19c00(); - return; + if(r2 == r3) { + pc=0x19100; + run_19000(); 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 = r2 + 15440; + page[(r16+0)>>>2] = r2; + page[(r16+8)>>>2] = r0; + page[(r16+12)>>>2] = r0; + page[(r16+24)>>>2] = r0; + r31=0x188d0; + pc=0x23800; + run_23800(); return; + case 0x188d0: 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; + case 0x188d4: + f28= page[(r29+100)>>>2]; + f26= page[(r29+92)>>>2]; + f24= page[(r29+84)>>>2]; + f22= page[(r29+76)>>>2]; + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + f29= page[(r29+96)>>>2]; + f27= page[(r29+88)>>>2]; + f25= page[(r29+80)>>>2]; + f23= page[(r29+72)>>>2]; + f21= page[(r29+64)>>>2]; + r29 = r29 + 104; + 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 */ + case 0x18930: + r31=0x18938; + pc=0x23000; + run_23000(); return; + case 0x18938: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + r4 = (r2&0xffffffffL) < (92&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x1871c; + run_18000(); return; } - case 0x196ec: + case 0x18954: 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 */ + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x1a228; - run_1a200(); - return; + if(r2 < 0) { + pc=0x19634; + run_19000(); 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 */ + r17 = 6 << 16; + r17 = r17 + 16728; + pc=0x187e0; + run_18000(); return; + case 0x1897c: + r31=0x18984; + pc=0x23000; + run_23000(); return; + case 0x18984: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; - /* Next insn is delay slot */ - pc = 0x1959c; - run_19400(); - return; - case 0x19728: + pc=0x18784; + run_18000(); return; + case 0x18990: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x189a4; + pc=0x1fc00; + run_1f800(); return; + case 0x189a4: + r2= page[(r28+-31380)>>>2]; + pc=0x18768; + run_18000(); return; + case 0x189b0: r17 = 6 << 16; - r17 = r17 + -25264; - /* Next insn is delay slot */ - pc = 0x1952c; - run_19400(); - return; - case 0x19738: + r17 = r17 + 16376; + pc=0x187d8; + run_18000(); return; + case 0x189c0: r17 = 6 << 16; - r17 = r17 + -25296; - /* Next insn is delay slot */ - pc = 0x1952c; - run_19400(); - return; - case 0x19748: + r17 = r17 + 16344; + pc=0x187d8; + run_18000(); return; + case 0x189d0: r17 = 6 << 16; - r17 = r17 + -25056; - /* Next insn is delay slot */ - pc = 0x1952c; - run_19400(); - return; - case 0x19758: + r17 = r17 + 16632; + pc=0x187d8; + run_18000(); return; + case 0x189e0: 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; + r17 = r17 + 16264; + pc=0x187d8; + run_18000(); return; + case 0x189f0: + r17 = 6 << 16; + r17 = r17 + 16328; + pc=0x187d8; + run_18000(); return; + case 0x18a00: + r17 = 6 << 16; + r17 = r17 + 16360; + pc=0x187d8; + run_18000(); return; + case 0x18a10: + r31=0x18a18; + pc=0x23000; + run_23000(); return; + case 0x18a18: + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + 16232; + r31=0x18a2c; + pc=0x18000; + run_18000(); return; + case 0x18a2c: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r5 = 6 << 16; + r5 = r5 + 16664; + r3 = r4 + r3; + page[(r3+0)>>>2] = r5; + r5= page[(r28+-32748)>>>2]; + r2 = r2 + 1; + page[(r28+-31368)>>>2] = r2; + r2 = r2 < r5 ? 1 : 0; + if(r2 == r0) { + pc=0x19260; + run_19000(); return; } - 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: + case 0x18a60: + r2= page[(r28+-31380)>>>2]; + pc=0x187f8; + run_18000(); return; + case 0x18a6c: + r31=0x18a74; + pc=0x23000; + run_23000(); return; + case 0x18a74: r3 = r0 + 61; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a210; - run_1a200(); - return; + if(r2 == r3) { + pc=0x1961c; + run_19000(); 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: + r17 = r17 + 16568; + pc=0x187e0; + run_18000(); return; + case 0x18a90: + r31=0x18a98; + pc=0x23000; + run_23000(); return; + case 0x18a98: r3 = r0 + 61; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x19ed4; - run_19e00(); - return; + if(r2 == r3) { + pc=0x192d4; + run_19000(); return; } r3 = r0 + 62; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1977c; + if(r2 == r3) { + pc=0x18b00; continue; } r3 = r0 + 60; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a1e0; - run_1a000(); - return; + if(r2 == r3) { + pc=0x195ec; + run_19000(); 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 = r17 + 16520; + pc=0x187e0; + run_18000(); return; + case 0x18acc: r17 = 6 << 16; - r17 = r17 + -25312; - /* Next insn is delay slot */ - pc = 0x1952c; - run_19400(); - return; - case 0x1981c: + r17 = r17 + 16584; + pc=0x187d8; + run_18000(); return; + case 0x18adc: 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; + r17 = r17 + 16296; + pc=0x187d8; + run_18000(); return; + case 0x18aec: + r31=0x18af4; + pc=0x23000; + run_23000(); return; + case 0x18af4: + r3 = r0 + 61; + if(r2 != r3) { + pc=0x18888; 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; + case 0x18b00: + r17 = 6 << 16; + r17 = r17 + 16552; + pc=0x187d8; + run_18000(); return; + case 0x18b10: + r17 = 6 << 16; + r17 = r17 + 16472; + case 0x18b18: + r31=0x18b20; + pc=0x23000; + run_23000(); return; + case 0x18b20: + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r3 = r4 + r3; + page[(r3+0)>>>2] = r17; + case 0x18b34: + r5= page[(r28+-32748)>>>2]; + r2 = r2 + 1; + page[(r28+-31368)>>>2] = r2; + r2 = r2 < r5 ? 1 : 0; + if(r2 == r0) { + pc=0x18b5c; + continue; + } + case 0x18b4c: + r2= page[(r28+-31380)>>>2]; + case 0x18b50: + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x18b5c: + r2 = r5 << 1; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r2; + r31=0x18b70; + pc=0x4fa00; + run_4f800(); return; + case 0x18b70: + page[(r28+-31364)>>>2] = r2; + if(r2 != r0) { + pc=0x18b4c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x18b90; + pc=0x1fc00; + run_1f800(); return; + case 0x18b90: + r2= page[(r28+-31380)>>>2]; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x18ba0: + r31=0x18ba8; + pc=0x14000; + run_14000(); return; + case 0x18ba8: + r2= page[(r28+-31380)>>>2]; + r3 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x18b50; 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: + page[(r28+-31380)>>>2] = r2; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x18bd0: 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 */ + r31=0x18bdc; + pc=0x23000; + run_23000(); return; + case 0x18bdc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x19f3c; - run_19e00(); - return; + if(r17 != r0) { + pc=0x19308; + run_19000(); return; } r2 = r0 + 98; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x198e8; + if(r3 == r2) { + pc=0x18ba0; continue; } r2 = r0 + 120; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x19f3c; - run_19e00(); - return; + if(r3 != r2) { + pc=0x19308; + run_19000(); return; } - case 0x19948: - /* Next insn is delay slot */ - r31 = 0x19950; - pc = 0x14c00; - run_14c00(); - return; - case 0x19950: - /* Next insn is delay slot */ - pc = 0x198f0; + case 0x18c00: + r31=0x18c08; + pc=0x14200; + run_14000(); return; + case 0x18c08: + pc=0x18ba8; 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: + case 0x18c10: 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 = r17 + 17104; + r31=0x18c20; + pc=0x1be00; + run_1b800(); return; + case 0x18c20: 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; + r31=0x18c2c; + pc=0x24800; + run_24800(); return; + case 0x18c2c: + if(r2 == r0) { + pc=0x19360; + run_19000(); return; } - case 0x19a14: - r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + case 0x18c34: + r3= page[(r28+-31376)>>>2]; + r4= page[(r28+-31372)>>>2]; 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; + page[(r2+0)>>>2] = r23; + page[(r2+8)>>>2] = r4; + page[(r2+12)>>>2] = r0; + page[(r2+16)>>>2] = r0; + page[(r2+24)>>>2] = 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: + page[(r28+-31376)>>>2] = r3; + page[(r28+-31380)>>>2] = r2; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x18c78: 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; + r17 = r17 + 16248; + pc=0x18b18; 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: + case 0x18c88: 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]; + r17 = r17 + 16440; + pc=0x18b18; + continue; + case 0x18c98: + r17= page[(r28+-31376)>>>2]; r4 = r0 + 40; r2 = r17 + 1; - writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + page[(r28+-31376)>>>2] = r2; + r2= page[(r28+-31372)>>>2]; 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]; + r2 = r2 + 15400; + page[(r17+0)>>>2] = r2; + r31=0x18cc8; + pc=0x20200; + run_20000(); return; + case 0x18cc8: + page[(r17+8)>>>2] = r2; + page[(r2+0)>>>2] = r2; + r2= page[(r17+8)>>>2]; 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: + page[(r2+4)>>>2] = r2; + r2= page[(r17+8)>>>2]; + page[(r2+8)>>>2] = r0; + r2= page[(r17+8)>>>2]; + page[(r2+12)>>>2] = r3; + r31=0x18cfc; + pc=0x23000; + run_23000(); return; + case 0x18cfc: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a260; - run_1a200(); - return; + if(r2 == r3) { + pc=0x19680; + run_19000(); 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 */ + case 0x18d08: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 93; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1a284; - run_1a200(); - return; + if(r3 == r2) { + pc=0x19690; + run_19000(); return; } - r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; - r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; r3 = r2 << 2; + r5 = 6 << 16; + r5 = r5 + 16680; 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]; + page[(r3+0)>>>2] = r5; + r5= page[(r28+-32748)>>>2]; 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; + page[(r28+-31368)>>>2] = r2; + r2 = r2 < r5 ? 1 : 0; + if(r2 == r0) { + pc=0x19224; + run_19000(); return; } - case 0x19d4c: + case 0x18d4c: 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: + r5 = r5 + 16648; + r31=0x18d60; + pc=0x18000; + run_18000(); return; + case 0x18d60: + r2= page[(r28+-31380)>>>2]; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x18d70: 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; + r31=0x18d80; + pc=0x26200; + run_26000(); return; + case 0x18d80: + if(r2 != r0) { + pc=0x190c8; + run_19000(); 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 */ + case 0x18d88: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 63; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1a100; - run_1a000(); - return; + if(r3 == r2) { + pc=0x194cc; + run_19000(); return; } - case 0x19d98: + case 0x18d98: r30 = 6 << 16; - r5 = readPages[(r30 + -24532) >>> 12][((r30 + -24532) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5= page[(r30+17108)>>>2]; + r4= page[(r29+16)>>>2]; 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: + r31=0x18db4; + pc=0x15e00; + run_15800(); return; + case 0x18db4: + pc=0x18ba8; + continue; + case 0x18dbc: 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; + r17 = r17 + 16456; + pc=0x18b18; + continue; + case 0x18dcc: + r17 = 6 << 16; + r4 = r17 + 17104; + r31=0x18ddc; + pc=0x1be00; + run_1b800(); return; + case 0x18ddc: + r18 = r0 + r0; + r30 = r17 + 17104; + r20 = r0 + 45; + r19 = r0 + 45; + pc=0x18e1c; + continue; + case 0x18df4: + r4= page[(r17+17104)>>>2]; + r5 = r2 + 1; + r2 = r4 + r2; + page[(r30+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r20&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r18 = r18 ^ 1; + r31=0x18e14; + pc=0x23000; + run_23000(); return; + case 0x18e14: + if(r2 != r19) { + pc=0x18e74; 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; + case 0x18e1c: + r2= page[(r30+4)>>>2]; + r4= page[(r30+8)>>>2]; + if(r2 != r4) { + pc=0x18df4; + continue; } - r4 = 5 << 16; - case 0x19e00: - pc = 0x19e00; + r4 = 6 << 16; + r4 = r4 + 17104; + r31=0x18e40; + pc=0x1c000; + run_1c000(); return; + case 0x18e40: + r3 = 6 << 16; + r3 = r3 + 17104; + r2= page[(r3+4)>>>2]; + r4= page[(r17+17104)>>>2]; + r5 = r2 + 1; + r2 = r4 + r2; + page[(r30+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r20&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r18 = r18 ^ 1; + r31=0x18e6c; + pc=0x23000; + run_23000(); return; + case 0x18e6c: + if(r2 == r19) { + pc=0x18e1c; + continue; + } + case 0x18e74: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r4 = r0 + 32; + if(r2 == r4) { + pc=0x1966c; + run_19000(); return; + } + case 0x18e84: + r2 = r2 & 255; + r2 = r2 + r22; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r2 = r2 & 8; + if(r2 != r0) { + pc=0x192a0; + run_19000(); return; + } + if(r18 == r0) { + pc=0x18b4c; + continue; + } + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r5 = 6 << 16; + r3 = r4 + r3; + r5 = r5 + 16280; + page[(r3+0)>>>2] = r5; + pc=0x18b34; + continue; + case 0x18ecc: + r17 = 6 << 16; + r4 = r17 + 17104; + r30 = r17 + 17104; + r31=0x18ee0; + pc=0x1be00; + run_1b800(); return; + case 0x18ee0: + r20 = r30 + r0; + r19 = r0 + 43; + r18 = r0 + 43; + pc=0x18f18; + continue; + case 0x18ef4: + r4= page[(r17+17104)>>>2]; + r5 = r2 + 1; + r2 = r4 + r2; + page[(r30+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r19&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x18f10; + pc=0x23000; + run_23000(); return; + case 0x18f10: + if(r2 != r18) { + pc=0x18f60; + continue; + } + case 0x18f18: + r2= page[(r30+4)>>>2]; + r4= page[(r30+8)>>>2]; + if(r2 != r4) { + pc=0x18ef4; + continue; + } + r4 = r20 + r0; + r31=0x18f38; + pc=0x1c000; + run_1c000(); return; + case 0x18f38: + r2= page[(r20+4)>>>2]; + r4= page[(r17+17104)>>>2]; + r5 = r2 + 1; + r2 = r4 + r2; + page[(r30+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r19&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x18f58; + pc=0x23000; + run_23000(); return; + case 0x18f58: + if(r2 == r18) { + pc=0x18f18; + continue; + } + case 0x18f60: + r4 = r0 + r0; + r17= page[(r20+4)>>>2]; + r31=0x18f70; + pc=0x41800; + run_41800(); return; + case 0x18f70: + r2= page[(r28+-32672)>>>2]; + r5 = r17 + r0; + r4= page[(r2+0)>>>2]; + r6 = r0 + r0; + r31=0x18f88; + pc=0x15e00; + run_15800(); return; + case 0x18f88: + pc=0x18ba8; + continue; + case 0x18f90: + r31=0x18f98; + pc=0x23000; + run_23000(); return; + case 0x18f98: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r3 = r2 + -48; + r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x19204; + run_19000(); return; + } + f22= page[(r28+-32724)>>>2]; + f28 = r0; + f20= page[(r28+-32716)>>>2]; + f23= page[(r28+-32728)>>>2]; + f29 = r0; + f21= page[(r28+-32720)>>>2]; + case 0x18fcc: + { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } + r2 = r2 & 15; + f2 = r2; + { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (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; } + r31=0x18fec; + pc=0x23000; + run_23000(); return; + case 0x18fec: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r3 = r2 + -48; + r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x18fcc; + continue; + } + case 0x19000: + pc=0x19000; 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_19e00() throws ExecutionException { /* 0x19e00 - 0x1a000 */ + private final void run_19000() throws ExecutionException { /* 0x19000 - 0x19800 */ 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]; + for(;;) { + switch(pc) { + case 0x19000: + case 0x19004: + { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } + r3= page[(r28+-31376)>>>2]; + r4= page[(r28+-31372)>>>2]; + r2 = r3 << 5; + r2 = r4 + r2; + r3 = r3 + 1; + r4 = r0 + 2; + page[(r2+0)>>>2] = r23; + page[(r2+8)>>>2] = r4; + page[(r2+12)>>>2] = r0; + page[(r2+20)>>>2] = f22; + page[(r2+16)>>>2] = f23; + page[(r28+-31376)>>>2] = r3; + page[(r2+24)>>>2] = r0; + pc=0x18ba8; + run_18800(); return; + case 0x19044: + r17 = r0 + 1; + r18 = r0 + 38; + pc=0x19058; + continue; + case 0x19054: + r17 = r17 + 1; + case 0x19058: + r31=0x19060; + pc=0x23000; + run_23000(); return; + case 0x19060: + if(r2 == r18) { + pc=0x19054; + continue; + } + r2 = r0 + 1; + if(r17 == r2) { + pc=0x19408; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + case 0x19078: + r3 = r0 + 42; + if(r2 == r3) { + pc=0x1976c; + continue; + } + r3 = r2 & 255; + r3 = r3 + r22; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 < 0) { + pc=0x19528; + continue; + } + r3 = r0 + 46; + if(r2 == r3) { + pc=0x19528; + continue; + } + r3 = r0 + 64; + if(r2 == r3) { + pc=0x19528; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x190c8; + pc=0x1fc00; + run_1f800(); return; + case 0x190c8: + r2 = r0 + 3; + page[(r28+-31380)>>>2] = r2; + case 0x190d0: + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x190dc: + r4 = r0 + r0; + r31=0x190e8; + pc=0x15c00; + run_15800(); return; + case 0x190e8: + pc=0x18ba8; + run_18800(); return; + case 0x190f0: + r17 = 6 << 16; + r17 = r17 + 16696; + pc=0x18b18; + run_18800(); return; + case 0x19100: + r5= page[(r28+-31376)>>>2]; + r2 = r0 + 1; + if(r5 == r2) { + pc=0x19120; + continue; + } + r4 = 6 << 16; + r4 = r4 + 1468; + r31=0x19120; + pc=0x21400; + run_21000(); return; + case 0x19120: + r5= page[(r28+-31368)>>>2]; + r2 = r0 + 1; + if(r5 == r2) { + pc=0x19140; + continue; + } + r4 = 6 << 16; + r4 = r4 + 1488; + r31=0x19140; + pc=0x21400; + run_21000(); return; + case 0x19140: + r5= page[(r28+-31372)>>>2]; 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; + r31=0x19154; + pc=0x56fe0; + run_56800(); return; + case 0x19154: + r2= page[(r16+32)>>>2]; + if(r2 == r0) { + pc=0x194e4; + continue; } r2 = 6 << 16; - r2 = r2 + -26200; + r2 = r2 + 15440; 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]; + page[(r16+0)>>>2] = r2; + page[(r16+8)>>>2] = r0; + page[(r16+12)>>>2] = r3; + page[(r16+24)>>>2] = r0; + case 0x19180: + r2= page[(r2+24)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x19e5c; + pc=r2; + r31=0x19190; return; - case 0x19e5c: + case 0x19190: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x19694; - run_19600(); - return; - case 0x19e68: + pc=0x188d4; + run_18800(); return; + case 0x1919c: r2 = r0 + 62; - if (r17 == r2) { - /* Next insn is delay slot */ - pc = 0x1a1f0; - run_1a000(); - return; + if(r17 == r2) { + pc=0x195fc; + continue; } r2 = r0 + 60; - if (r17 == r2) { - /* Next insn is delay slot */ - pc = 0x1977c; - run_19600(); - return; + if(r17 == r2) { + pc=0x18b00; + run_18800(); return; } r17 = 6 << 16; - r17 = r17 + -25152; - /* Next insn is delay slot */ - pc = 0x19534; - run_19400(); - return; - case 0x19e90: + r17 = r17 + 16488; + pc=0x187e0; + run_18000(); return; + case 0x191c4: + r2 = r5 << 1; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r2; + r31=0x191d8; + pc=0x4fa00; + run_4f800(); return; + case 0x191d8: + page[(r28+-31364)>>>2] = r2; + if(r2 != r0) { + pc=0x186a4; + run_18000(); return; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x191f8; + pc=0x1fc00; + run_1f800(); return; + case 0x191f8: + r3= page[(r28+-31376)>>>2]; + pc=0x186a8; + run_18000(); return; + case 0x19204: 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; + r31=0x19214; + pc=0x26200; + run_26000(); return; + case 0x19214: + if(r2 == r0) { + pc=0x18d88; + run_18800(); 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; + pc=0x190c8; + continue; + case 0x19224: + r2 = r5 << 1; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r2; + r31=0x19238; + pc=0x4fa00; + run_4f800(); return; + case 0x19238: + page[(r28+-31364)>>>2] = r2; + if(r2 != r0) { + pc=0x18d4c; + run_18800(); return; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x19258; + pc=0x1fc00; + run_1f800(); return; + case 0x19258: + pc=0x18d4c; + run_18800(); return; + case 0x19260: + r2 = r5 << 1; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r2; + r31=0x19274; + pc=0x4fa00; + run_4f800(); return; + case 0x19274: + page[(r28+-31364)>>>2] = r2; + if(r2 != r0) { + pc=0x18a60; + run_18800(); return; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x19294; + pc=0x1fc00; + run_1f800(); return; + case 0x19294: + r2= page[(r28+-31380)>>>2]; + pc=0x187f8; + run_18000(); return; + case 0x192a0: + r4 = r17 + 17104; 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]; + r31=0x192b0; + pc=0x1c400; + run_1c000(); return; + case 0x192b0: + r2= page[(r28+-32672)>>>2]; + r5= page[(r30+4)>>>2]; + r4= page[(r2+0)>>>2]; 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: + r31=0x192cc; + pc=0x15e00; + run_15800(); return; + case 0x192cc: + pc=0x18ba8; + run_18800(); return; + case 0x192d4: + r17 = 6 << 16; + r17 = r17 + 16536; + pc=0x187d8; + run_18000(); return; + case 0x192e4: 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 */ + r31=0x19300; + pc=0x23000; + run_23000(); return; + case 0x19300: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - case 0x19f3c: + case 0x19308: r2 = r3 & 255; r4 = r2 + -48; - r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x19f18; + r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x192e4; continue; } r2 = r0 + 46; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1a438; - run_1a400(); - return; + if(r3 == r2) { + pc=0x19868; + run_19800(); return; } - r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r3= page[(r28+-31376)>>>2]; + r4= page[(r28+-31372)>>>2]; 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: + page[(r28+-31376)>>>2] = r3; + page[(r2+0)>>>2] = r23; + page[(r2+8)>>>2] = r4; + page[(r2+12)>>>2] = r0; + page[(r2+16)>>>2] = r17; + page[(r2+24)>>>2] = r0; + pc=0x18ba8; + run_18800(); return; + case 0x19360: + r31=0x19368; + pc=0x23000; + run_23000(); return; + case 0x19368: 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; + r31=0x19374; + pc=0x24c00; + run_24800(); return; + case 0x19374: + if(r2 != r0) { + pc=0x18c34; + run_18800(); 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; + if(r18 == r2) { + pc=0x19780; continue; } - r5 = 5 << 16; + case 0x19388: + r30 = r17 + 17104; + r2= page[(r30+4)>>>2]; + if(r2 == r0) { + pc=0x1981c; + run_19800(); return; + } + r3 = r0 + 1; + if(r2 == r3) { + pc=0x193bc; + continue; + } + r5 = 6 << 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; + r5 = r5 + 1392; + r31=0x193bc; + pc=0x1fc00; + run_1f800(); return; + case 0x193bc: + r2= page[(r17+17104)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + 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]; + r31=0x193d0; + pc=0x1d600; + run_1d000(); return; + case 0x193d0: + r4= page[(r28+-31376)>>>2]; + r5= page[(r28+-31372)>>>2]; 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 */ + page[(r28+-31376)>>>2] = r4; + page[(r3+0)>>>2] = r23; + page[(r3+8)>>>2] = r5; + page[(r3+12)>>>2] = r0; + page[(r3+16)>>>2] = r2; + page[(r3+24)>>>2] = r0; + pc=0x18ba8; + run_18800(); return; + case 0x19408: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + r4 = (r4&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x19078; + continue; } r2 = r3 + r0; r18 = r0 + r0; r17 = r0 + r0; - case 0x1a064: + case 0x19430: 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; + r31=0x19444; + pc=0x23000; + run_23000(); return; + case 0x19444: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + 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; + r3 = (r3&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x19430; 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= page[(r2+31376)>>>2]; + if(r2 == r0) { + pc=0x19838; + run_19800(); return; } r2 = r18 < 4 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1a42c; - run_1a400(); - return; + if(r2 != r0) { + pc=0x19838; + run_19800(); return; } r18 = r18 < 7 ? 1 : 0; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x1a518; - run_1a400(); - return; + if(r18 != r0) { + pc=0x1997c; + run_19800(); 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]; + case 0x19494: + r4= page[(r28+-31376)>>>2]; + r5= page[(r28+-31372)>>>2]; 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; + page[(r28+-31376)>>>2] = r4; + page[(r3+0)>>>2] = r23; + page[(r3+8)>>>2] = r5; + page[(r3+12)>>>2] = r2; + page[(r3+16)>>>2] = r17; + page[(r3+24)>>>2] = r0; + pc=0x18ba8; + run_18800(); return; + case 0x194cc: + r31=0x194d4; + pc=0x41c00; + run_41800(); return; + case 0x194d4: + if(r2 == r0) { + pc=0x18d98; + run_18800(); return; } - /* Next insn is delay slot */ - pc = 0x199dc; - run_19800(); - return; - case 0x1a118: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + pc=0x190c8; + continue; + case 0x194e4: + r2= page[(r16+0)>>>2]; r4 = r16 + r0; - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x1a130; + r2= page[(r2+4)>>>2]; + pc=r2; + r31=0x194fc; return; - case 0x1a130: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1a150; + case 0x194fc: + if(r2 != r0) { + pc=0x1951c; continue; } r2 = 6 << 16; - r2 = r2 + -10328; - r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 + 31320; + r3= page[(r2+4)>>>2]; 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: + page[(r2+4)>>>2] = r3; + case 0x1951c: + r2= page[(r16+0)>>>2]; + pc=0x19180; + continue; + case 0x19528: 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; + r31=0x19538; + pc=0x26200; + run_26000(); return; + case 0x19538: + if(r2 != r0) { + pc=0x190c8; 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: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 63; + if(r3 == r2) { + pc=0x196f4; + continue; + } + case 0x19550: + r30 = 6 << 16; + r5= page[(r30+17108)>>>2]; + r4= page[(r29+16)>>>2]; + r5 = r5 + -1; + r6 = r17 + r0; + r31=0x1956c; + pc=0x15e00; + run_15800(); return; + case 0x1956c: + pc=0x18ba8; + run_18800(); return; + case 0x19574: + r17 = r5 << 1; + r4 = r0 + r0; + r5 = r5 << 3; + page[(r28+-32748)>>>2] = r17; + r31=0x1958c; + pc=0x4fa00; + run_4f800(); return; + case 0x1958c: + page[(r28+-31364)>>>2] = r2; + if(r2 == r0) { + pc=0x19844; + run_19800(); return; + } + r5 = r17 + r0; + r4 = r2 + r0; + pc=0x18674; + run_18000(); return; + case 0x195a8: + r5= page[(r28+-32752)>>>2]; + r4 = r0 + r0; + r2 = r5 << 1; + r5 = r5 << 6; + page[(r28+-32752)>>>2] = r2; + r31=0x195c4; + pc=0x4fa00; + run_4f800(); return; + case 0x195c4: + page[(r28+-31372)>>>2] = r2; + if(r2 != r0) { + pc=0x18664; + run_18000(); return; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x195e4; + pc=0x1fc00; + run_1f800(); return; + case 0x195e4: + pc=0x18664; + run_18000(); return; + case 0x195ec: r17 = 6 << 16; - r17 = r17 + -25248; - /* Next insn is delay slot */ - pc = 0x1952c; - run_19400(); - return; - case 0x1a2a4: - r2 = 6 << 16; - r5 = r2 + -24912; + r17 = r17 + 16424; + pc=0x187d8; + run_18000(); return; + case 0x195fc: + r31=0x19604; + pc=0x23000; + run_23000(); return; + case 0x19604: + if(r2 == r17) { + pc=0x196a0; + continue; + } + r17 = 6 << 16; + r17 = r17 + 16408; + pc=0x187e0; + run_18000(); return; + case 0x1961c: + r17 = 6 << 16; + r31=0x19628; + pc=0x23000; + run_23000(); return; + case 0x19628: + r17 = r17 + 16568; + pc=0x187e0; + run_18000(); return; + case 0x19634: + r31=0x1963c; + pc=0x26e00; + run_26800(); return; + case 0x1963c: + r17 = 6 << 16; + r4 = 6 << 16; + r4 = r4 + 15780; + r5 = r29 + 16; + r6 = r17 + 17104; + r31=0x19658; + pc=0x42400; + run_42000(); return; + case 0x19658: + if(r2 == r0) { + pc=0x196d0; + continue; + } + r17= page[(r29+16)>>>2]; + pc=0x187e0; + run_18000(); return; + case 0x1966c: + r31=0x19674; + pc=0x23000; + run_23000(); return; + case 0x19674: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x18e84; + run_18800(); return; + case 0x19680: + r31=0x19688; + pc=0x23000; + run_23000(); return; + case 0x19688: + pc=0x18d08; + run_18800(); return; + case 0x19690: + r31=0x19698; + pc=0x23000; + run_23000(); return; + case 0x19698: + pc=0x18ba8; + run_18800(); return; + case 0x196a0: + r17 = 6 << 16; + r17 = r17 + 16392; + pc=0x187d8; + run_18000(); return; + case 0x196b0: + r5 = 6 << 16; 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; + r5 = r5 + 16728; + r31=0x196c4; + pc=0x18000; + run_18000(); return; + case 0x196c4: + r2= page[(r28+-31380)>>>2]; + pc=0x187f8; + run_18000(); return; + case 0x196d0: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 26048; - /* Next insn is delay slot */ - r31 = 0x1a2d8; - pc = 0x20600; - run_20600(); - return; - case 0x1a2d8: + r5 = r5 + 1448; + r31=0x196e4; + pc=0x1fc00; + run_1f800(); return; + case 0x196e4: 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; + page[(r28+-31380)>>>2] = r2; + pc=0x188a4; + run_18800(); return; + case 0x196f4: + r31=0x196fc; + pc=0x41c00; + run_41800(); return; + case 0x196fc: + if(r2 == r0) { + pc=0x19550; + continue; } 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: + page[(r28+-31380)>>>2] = r2; + pc=0x190d0; + continue; + case 0x19714: + r31=0x1971c; + pc=0x26600; + run_26000(); return; + case 0x1971c: r3 = r0 + 3; r17 = 6 << 16; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a454; - run_1a400(); - return; + if(r2 == r3) { + pc=0x198dc; + run_19800(); 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 */ + case 0x1972c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 40; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a4bc; - run_1a400(); - return; + if(r2 == r3) { + pc=0x1998c; + run_19800(); return; } r3 = r0 + 63; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a528; - run_1a400(); - return; + if(r2 == r3) { + pc=0x1996c; + run_19800(); return; } - case 0x1a33c: - r30 = r17 + -24536; - r5 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + case 0x19748: + r30 = r17 + 17104; + r5= page[(r30+4)>>>2]; 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: + r31=0x19764; + pc=0x15e00; + run_15800(); return; + case 0x19764: + pc=0x18ba8; + run_18800(); return; + case 0x1976c: 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: + r31=0x19778; + pc=0x15c00; + run_15800(); return; + case 0x19778: + pc=0x18ba8; + run_18800(); return; + case 0x19780: 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= page[(r2+31392)>>>2]; + r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x19388; + continue; } - r2 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; - r19 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2= page[(r28+-31376)>>>2]; + r19= page[(r28+-31372)>>>2]; r2 = r2 << 5; - r30 = r17 + -24536; - r18 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r30 = r17 + 17104; + r18= page[(r30+4)>>>2]; r19 = r19 + r2; r2 = 6 << 16; - r2 = r2 + -26280; + r2 = r2 + 15360; 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; + page[(r19+0)>>>2] = r2; + r31=0x197c8; + pc=0x20200; + run_20000(); return; + case 0x197c8: + page[(r19+8)>>>2] = 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]; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r19+8)>>>2]; 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]; + page[(r2+0)>>>2] = r18; + r18= page[(r28+-31376)>>>2]; + page[(r2+4)>>>2] = r4; + r4= page[(r28+-31372)>>>2]; r2 = r18 << 5; - case 0x1a400: - pc = 0x1a400; + r2 = r4 + r2; + r4= page[(r2+8)>>>2]; + r5= page[(r17+17104)>>>2]; + r6= page[(r30+4)>>>2]; + case 0x19800: + pc=0x19800; 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_1a400() throws ExecutionException { /* 0x1a400 - 0x1a600 */ + private final void run_19800() throws ExecutionException { /* 0x19800 - 0x1a000 */ 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]; + for(;;) { + switch(pc) { + case 0x19800: 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: + r31=0x19810; + pc=0x56fe0; + run_56800(); return; + case 0x19810: + page[(r28+-31376)>>>2] = r18; + pc=0x18ba8; + run_18800(); return; + case 0x1981c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x19830; + pc=0x1fc00; + run_1f800(); return; + case 0x19830: + pc=0x18c34; + run_18800(); return; + case 0x19838: 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]; + pc=0x19494; + run_19000(); return; + case 0x19844: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x19858; + pc=0x1fc00; + run_1f800(); return; + case 0x19858: + r4= page[(r28+-31364)>>>2]; + r5= page[(r28+-32748)>>>2]; + pc=0x18674; + run_18000(); return; + case 0x19868: + r31=0x19870; + pc=0x23000; + run_23000(); return; + case 0x19870: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + f0 = r17; + 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) { + pc=0x19a04; + continue; + } + f20= page[(r28+-32716)>>>2]; + f22 = f26; + f23 = f27; + f21= page[(r28+-32720)>>>2]; + case 0x1989c: + { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } + r2 = r2 & 15; + f2 = r2; + { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (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; } + r31=0x198bc; + pc=0x23000; + run_23000(); return; + case 0x198bc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r3 = r2 + -48; + r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x1989c; + continue; + } + pc=0x19004; + run_19000(); return; + case 0x198dc: + r2= page[(r17+17104)>>>2]; 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 */ + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; r4 = r4 | 32; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x1a320; - run_1a200(); - return; + if(r4 != r3) { + pc=0x1972c; + run_19000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; r3 = r0 + 111; r4 = r4 | 32; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x1a320; - run_1a200(); - return; + if(r4 != r3) { + pc=0x1972c; + run_19000(); 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 */ + addr=r2+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 116; r3 = r3 | 32; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x1a320; - run_1a200(); - return; + if(r3 != r2) { + pc=0x1972c; + run_19000(); return; } - r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; - r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; 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; + r4 = r4 + 16248; + case 0x19938: + page[(r3+0)>>>2] = r4; + r3= page[(r28+-32748)>>>2]; + r2 = r2 + 1; + page[(r28+-31368)>>>2] = r2; + r2 = r2 < r3 ? 1 : 0; + if(r2 != r0) { + pc=0x18b4c; + run_18800(); 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 = 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: + r31=0x1995c; + pc=0x15a00; + run_15800(); return; + case 0x1995c: + r2= page[(r28+-31380)>>>2]; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x1996c: + r31=0x19974; + pc=0x41c00; + run_41800(); return; + case 0x19974: + pc=0x19748; + run_19000(); return; + case 0x1997c: 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; + pc=0x19494; + run_19000(); return; + case 0x1998c: + r18 = 6 << 16; + r4 = r18 + 16000; + r5 = r17 + 17104; + r31=0x199a0; + pc=0x1cc00; + run_1c800(); return; + case 0x199a0: + r4 = 6 << 16; + r4 = r4 + 15480; + r5 = r29 + 16; + r6 = r18 + 16000; + r31=0x199b8; + pc=0x42400; + run_42000(); return; + case 0x199b8: + if(r2 == r0) { + pc=0x199dc; + continue; + } + r2= page[(r28+-31368)>>>2]; + r4= page[(r28+-31364)>>>2]; + r3 = r2 << 2; + r3 = r4 + r3; + r4= page[(r29+16)>>>2]; + pc=0x19938; + continue; + case 0x199dc: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 26028; - /* Next insn is delay slot */ - r31 = 0x1a54c; - pc = 0x20600; - run_20600(); - return; - case 0x1a54c: + r5 = r5 + 1428; + r31=0x199f0; + pc=0x1fc00; + run_1f800(); return; + case 0x199f0: 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(); + page[(r28+-31380)>>>2] = r2; + page[(r16+32)>>>2] = r0; + pc=0x187f8; + run_18000(); return; + case 0x19a04: + f22 = f24; + f23 = f25; + pc=0x19004; + run_19000(); return; + case 0x19c00: + r29 = r29 + -48; + r2= page[(r5+8)>>>2]; + page[(r29+28)>>>2] = r18; + page[(r29+20)>>>2] = r16; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+32)>>>2] = r19; + page[(r29+24)>>>2] = r17; + r17= page[(r4+8)>>>2]; + r2 = r2 + -31; + r3 = (r2&0xffffffffL) < (14&0xffffffffL) ? 1 : 0; + r16 = r4 + r0; + r18 = r6 + r0; + r19= page[(r17+8)>>>2]; + if(r3 == r0) { + pc=0x19c78; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 3376; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x1a600: - pc = 0x1a600; + case 0x19c64: + r2 = 6 << 16; + r3= page[(r6+0)>>>2]; + r2 = r2 + 15400; + if(r3 == r2) { + pc=0x19f98; + continue; + } + case 0x19c78: + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r17= page[(r29+24)>>>2]; + r4 = r16 + r0; + r6 = r18 + r0; + r16= page[(r29+20)>>>2]; + r18= page[(r29+28)>>>2]; + r29 = r29 + 48; + pc=0x14a00; + run_14800(); return; + case 0x19ca8: + r2 = 6 << 16; + r3= page[(r6+0)>>>2]; + r2 = r2 + 15440; + if(r3 != r2) { + pc=0x19c78; + continue; + } + r5= page[(r6+8)>>>2]; + if(r5 == r0) { + pc=0x1a124; + run_1a000(); return; + } + r2 = r0 + 2; + if(r5 == r2) { + pc=0x19fbc; + continue; + } + case 0x19cd8: + r2 = r0 + 1; + if(r5 == r2) { + pc=0x19cf4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 1168; + r31=0x19cf4; + pc=0x21400; + run_21000(); return; + case 0x19cf4: + r2= page[(r18+16)>>>2]; + if(r2 < 0) { + pc=0x1a004; + run_1a000(); return; + } + case 0x19d04: + r19 = r2 < r19 ? 1 : 0; + if(r19 == r0) { + pc=0x1a010; + run_1a000(); return; + } + r3= page[(r16+8)>>>2]; + r5= page[(r3+0)>>>2]; + if(r2 == r0) { + pc=0x19d34; + continue; + } + case 0x19d24: + r2 = r2 + -1; + r5= page[(r5+0)>>>2]; + if(r2 != r0) { + pc=0x19d24; + continue; + } + case 0x19d34: + r2= page[(r3+12)>>>2]; + r4 = r16 + r0; + r2 = r2 + -1; + page[(r3+12)>>>2] = r2; + r5 = r5 + 8; + r6 = r0 + 32; + r31=0x19d54; + pc=0x56fe0; + run_56800(); return; + case 0x19d54: + pc=0x19f70; + continue; + case 0x19d5c: + r3 = 6 << 16; + r2= page[(r6+0)>>>2]; + r3 = r3 + 15400; + if(r2 != r3) { + pc=0x19c78; + continue; + } + page[(r4+0)>>>2] = r2; + r4 = r0 + 40; + r31=0x19d80; + pc=0x20200; + run_20000(); return; + case 0x19d80: + page[(r16+8)>>>2] = r2; + page[(r2+0)>>>2] = r2; + r2= page[(r16+8)>>>2]; + r3 = r0 + 1; + page[(r2+4)>>>2] = r2; + r2= page[(r16+8)>>>2]; + page[(r2+8)>>>2] = r0; + r2= page[(r16+8)>>>2]; + page[(r2+12)>>>2] = r3; + r20= page[(r16+8)>>>2]; + if(r17 == r20) { + pc=0x1a1e4; + run_1a000(); return; + } + case 0x19dbc: + r21= page[(r17+0)>>>2]; + if(r17 == r21) { + pc=0x19e24; + continue; + } + case 0x19dcc: + r4 = r0 + 40; + r31=0x19dd8; + pc=0x20200; + run_20000(); return; + case 0x19dd8: + r4 = r2 + 8; + r5 = r21 + 8; + r6 = r0 + 32; + r19 = r2 + r0; + r31=0x19df0; + pc=0x56fe0; + run_56800(); return; + case 0x19df0: + r2= page[(r20+4)>>>2]; + page[(r19+0)>>>2] = r20; + page[(r19+4)>>>2] = r2; + page[(r20+4)>>>2] = r19; + r2= page[(r19+4)>>>2]; + page[(r2+0)>>>2] = r19; + r2= page[(r20+8)>>>2]; + r21= page[(r21+0)>>>2]; + r2 = r2 + 1; + page[(r20+8)>>>2] = r2; + if(r17 != r21) { + pc=0x19dcc; + continue; + } + case 0x19e24: + r2= page[(r17+12)>>>2]; + r2 = r2 + -1; + page[(r17+12)>>>2] = r2; + r19= page[(r18+8)>>>2]; + r17= page[(r16+8)>>>2]; + if(r19 == r17) { + pc=0x1a1c8; + run_1a000(); return; + } + case 0x19e48: + r18= page[(r19+0)>>>2]; + if(r19 == r18) { + pc=0x19eb0; + continue; + } + case 0x19e58: + r4 = r0 + 40; + r31=0x19e64; + pc=0x20200; + run_20000(); return; + case 0x19e64: + r4 = r2 + 8; + r5 = r18 + 8; + r6 = r0 + 32; + r16 = r2 + r0; + r31=0x19e7c; + pc=0x56fe0; + run_56800(); return; + case 0x19e7c: + r2= page[(r17+4)>>>2]; + page[(r16+0)>>>2] = r17; + page[(r16+4)>>>2] = r2; + page[(r17+4)>>>2] = r16; + r2= page[(r16+4)>>>2]; + page[(r2+0)>>>2] = r16; + r2= page[(r17+8)>>>2]; + r18= page[(r18+0)>>>2]; + r2 = r2 + 1; + page[(r17+8)>>>2] = r2; + if(r19 != r18) { + pc=0x19e58; + continue; + } + case 0x19eb0: + r2= page[(r19+12)>>>2]; + r2 = r2 + -1; + page[(r19+12)>>>2] = r2; + pc=0x19f70; + continue; + case 0x19ec8: + r2 = 6 << 16; + r3= page[(r6+0)>>>2]; + r2 = r2 + 15400; + if(r3 != r2) { + pc=0x19c78; + continue; + } + r2= page[(r6+8)>>>2]; + r3= page[(r2+8)>>>2]; + if(r19 == r3) { + pc=0x1a0b4; + run_1a000(); return; + } + case 0x19ef4: + r2 = r0 + 1; + case 0x19ef8: + r3 = 6 << 16; + r3 = r3 + 15440; + page[(r16+0)>>>2] = r3; + r3 = r0 + 1; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r2; + page[(r16+24)>>>2] = r0; + pc=0x19f70; + continue; + case 0x19f20: + r4 = r0 + 40; + r31=0x19f2c; + pc=0x20200; + run_20000(); return; + case 0x19f2c: + r4 = r2 + 8; + r5 = r18 + r0; + r6 = r0 + 32; + r16 = r2 + r0; + r31=0x19f44; + pc=0x56fe0; + run_56800(); return; + case 0x19f44: + r2= page[(r17+4)>>>2]; + page[(r16+0)>>>2] = r17; + page[(r16+4)>>>2] = r2; + page[(r17+4)>>>2] = r16; + r2= page[(r16+4)>>>2]; + page[(r2+0)>>>2] = r16; + r2= page[(r17+8)>>>2]; + r2 = r2 + 1; + page[(r17+8)>>>2] = r2; + case 0x19f70: + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 48; + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + case 0x19f98: + r2= page[(r6+8)>>>2]; + r3= page[(r2+8)>>>2]; + if(r19 == r3) { + pc=0x1a044; + run_1a000(); return; + } + case 0x19fb0: + r2 = r0 + r0; + pc=0x19ef8; + continue; + case 0x19fbc: + f0= page[(r6+20)>>>2]; + r2 = r0 + 1; + f1= page[(r6+16)>>>2]; + page[(r6+8)>>>2] = 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; + page[(r18+16)>>>2] = f2; + r5 = r0 + 1; + pc=0x19cd8; + continue; + case 0x1a000: + pc=0x1a000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_1a600() throws ExecutionException { /* 0x1a600 - 0x1a800 */ + private final void run_1a000() throws ExecutionException { /* 0x1a000 - 0x1a800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1a600: + for(;;) { + switch(pc) { + case 0x1a000: + case 0x1a004: + r2 = r2 + r19; + if(r2 >= 0) { + pc=0x19d04; + run_19800(); return; + } + case 0x1a010: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1188; + case 0x1a01c: + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 48; + pc=0x1fc00; + run_1f800(); return; + case 0x1a044: + r20= page[(r17+0)>>>2]; + r19= page[(r2+0)>>>2]; + if(r17 == r20) { + pc=0x1a1a0; + continue; + } + r17 = 6 << 16; + r17 = r17 + 784; + case 0x1a05c: + if(r19 == r2) { + pc=0x1a150; + continue; + } + case 0x1a064: + r2= page[(r20+8)>>>2]; + r3= page[(r19+8)>>>2]; + if(r2 != r3) { + pc=0x19fb0; + run_19800(); return; + } + r2= page[(r2+8)>>>2]; + r4 = r20 + 8; + r5 = r19 + 8; + pc=r2; + r31=0x1a08c; + return; + case 0x1a08c: + if(r2 != r0) { + pc=0x19fb0; + run_19800(); return; + } + r20= page[(r20+0)>>>2]; + r2= page[(r16+8)>>>2]; + r19= page[(r19+0)>>>2]; + if(r20 == r2) { + pc=0x1a198; + continue; + } + r2= page[(r18+8)>>>2]; + pc=0x1a05c; + continue; + case 0x1a0b4: + r20= page[(r17+0)>>>2]; + r19= page[(r2+0)>>>2]; + if(r17 == r20) { + pc=0x1a170; + continue; + } + r17 = 6 << 16; + r17 = r17 + 784; + case 0x1a0cc: + if(r2 == r19) { + pc=0x1a138; + continue; + } + case 0x1a0d4: + r2= page[(r20+8)>>>2]; + r3= page[(r19+8)>>>2]; + if(r2 != r3) { + pc=0x19ef4; + run_19800(); return; + } + r2= page[(r2+8)>>>2]; + r4 = r20 + 8; + r5 = r19 + 8; + pc=r2; + r31=0x1a0fc; + return; + case 0x1a0fc: + if(r2 != r0) { + pc=0x19ef4; + run_19800(); return; + } + r20= page[(r20+0)>>>2]; + r2= page[(r16+8)>>>2]; + r19= page[(r19+0)>>>2]; + if(r20 == r2) { + pc=0x1a168; + continue; + } + r2= page[(r18+8)>>>2]; + pc=0x1a0cc; + continue; + case 0x1a124: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 1148; + pc=0x1a01c; + continue; + case 0x1a138: + r4 = r17 + r0; + r5 = r0 + r0; + r31=0x1a148; + pc=0x21400; + run_21000(); return; + case 0x1a148: + pc=0x1a0d4; + continue; + case 0x1a150: + r4 = r17 + r0; + r5 = r0 + r0; + r31=0x1a160; + pc=0x21400; + run_21000(); return; + case 0x1a160: + pc=0x1a064; + continue; + case 0x1a168: + r2= page[(r18+8)>>>2]; + case 0x1a170: + if(r19 == r2) { + pc=0x19fb0; + run_19800(); return; + } + r4 = 6 << 16; + r4 = r4 + 784; + r5 = r0 + 1; + r31=0x1a18c; + pc=0x21400; + run_21000(); return; + case 0x1a18c: + r2 = r0 + r0; + pc=0x19ef8; + run_19800(); return; + case 0x1a198: + r2= page[(r18+8)>>>2]; + case 0x1a1a0: + if(r19 == r2) { + pc=0x19ef4; + run_19800(); return; + } + r4 = 6 << 16; + r4 = r4 + 784; + r5 = r0 + 1; + r31=0x1a1bc; + pc=0x21400; + run_21000(); return; + case 0x1a1bc: + r2 = r0 + 1; + pc=0x19ef8; + run_19800(); return; + case 0x1a1c8: + r4 = 6 << 16; + r4 = r4 + 1512; + r5 = r0 + r0; + r31=0x1a1dc; + pc=0x21400; + run_21000(); return; + case 0x1a1dc: + pc=0x19e48; + run_19800(); return; + case 0x1a1e4: + r4 = 6 << 16; + r4 = r4 + 1512; + r5 = r0 + r0; + r31=0x1a1f8; + pc=0x21400; + run_21000(); return; + case 0x1a1f8: + pc=0x19dbc; + run_19800(); return; + case 0x1a200: r29 = r29 + -72; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + page[(r29+64)>>>2] = 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; + page[(r29+68)>>>2] = r31; + r31=0x1a21c; + pc=0x18600; + run_18000(); return; + case 0x1a21c: + r2= page[(r29+52)>>>2]; + if(r2 != r0) { + pc=0x1a28c; continue; } - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1a6b0; + r2= page[(r29+48)>>>2]; + if(r2 != r0) { + pc=0x1a2b0; continue; } - case 0x1a63c: + case 0x1a23c: 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; + r2= page[(r29+16)>>>2]; + r3 = r3 + 15440; + if(r2 == r3) { + pc=0x1a2d8; continue; } - case 0x1a650: + case 0x1a250: r3 = 6 << 16; - r3 = r3 + -26280; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a718; + r3 = r3 + 15360; + if(r2 == r3) { + pc=0x1a318; continue; } - r5 = 5 << 16; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + r5 = 6 << 16; + page[(r16+0)>>>2] = 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]; + r5 = r5 + 3504; + r31=0x1a278; + pc=0x1fc00; + run_1f800(); return; + case 0x1a278: + r31= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1a68c: - r5 = 5 << 16; + case 0x1a28c: + r5 = 6 << 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; + r5 = r5 + 3540; + r31=0x1a2a0; + pc=0x1fc00; + run_1f800(); return; + case 0x1a2a0: + r2= page[(r29+48)>>>2]; + if(r2 == r0) { + pc=0x1a23c; continue; } - case 0x1a6b0: - r5 = 5 << 16; + case 0x1a2b0: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 28132; - /* Next insn is delay slot */ - r31 = 0x1a6c4; - pc = 0x20600; - run_20600(); - return; - case 0x1a6c4: + r5 = r5 + 3556; + r31=0x1a2c4; + pc=0x1fc00; + run_1f800(); return; + case 0x1a2c4: 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; + r2= page[(r29+16)>>>2]; + r3 = r3 + 15440; + if(r2 != r3) { + pc=0x1a250; continue; } - case 0x1a6d8: - r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x1a770; + case 0x1a2d8: + r5= page[(r29+24)>>>2]; + if(r5 == r0) { + pc=0x1a384; continue; } r2 = r0 + 1; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x1a754; + if(r5 == r2) { + pc=0x1a3d4; continue; } r2 = r0 + 2; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x1a77c; + if(r5 == r2) { + pc=0x1a390; 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; + r4 = 6 << 16; + r4 = r4 + 1536; + r31=0x1a310; + pc=0x21400; + run_21000(); return; + case 0x1a310: + pc=0x1a278; continue; - case 0x1a718: - r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + case 0x1a318: + r2= page[(r29+24)>>>2]; + r3= page[(r2+0)>>>2]; r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1a744; + if(r3 == r2) { + pc=0x1a344; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 3432; + r31=0x1a344; + pc=0x1fc00; + run_1f800(); return; + case 0x1a344: + r2= page[(r29+24)>>>2]; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r31=0x1a358; + pc=0x1d600; + run_1d000(); return; + case 0x1a358: + r3= page[(r29+24)>>>2]; + r31= page[(r29+68)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + -1; + page[(r3+4)>>>2] = r4; + page[(r16+0)>>>2] = r2; + r16= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1a770: - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x1a678; + case 0x1a384: + page[(r16+0)>>>2] = r0; + pc=0x1a278; continue; - case 0x1a77c: - f0 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; - f1 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + case 0x1a390: + f0= page[(r29+36)>>>2]; + f1= page[(r29+32)>>>2]; 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 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = f2; - /* Next insn is delay slot */ - pc = 0x1a678; + page[(r16+0)>>>2] = f2; + pc=0x1a278; continue; - 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: + case 0x1a3d4: + r2= page[(r29+32)>>>2]; + page[(r16+0)>>>2] = r2; + pc=0x1a278; + continue; + case 0x1a400: r29 = r29 + -80; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + page[(r29+64)>>>2] = r16; r16 = 6 << 16; - r16 = r16 + -10328; - writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r17; + r16 = r16 + 31320; + page[(r29+68)>>>2] = 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; + page[(r29+72)>>>2] = r18; + page[(r29+76)>>>2] = r31; + r18= page[(r16+16)>>>2]; + page[(r16+16)>>>2] = r2; + r31=0x1a438; + pc=0x18600; + run_18000(); return; + case 0x1a438: + r2= page[(r29+52)>>>2]; + page[(r16+16)>>>2] = r18; + if(r2 != r0) { + pc=0x1a4c0; continue; } - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1a8e4; + r2= page[(r29+48)>>>2]; + if(r2 != r0) { + pc=0x1a4e4; continue; } - case 0x1a858: + case 0x1a458: 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; + r2= page[(r29+16)>>>2]; + r3 = r3 + 15440; + if(r2 == r3) { + pc=0x1a50c; continue; } - case 0x1a86c: + case 0x1a46c: r3 = 6 << 16; - r3 = r3 + -26280; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1a94c; + r3 = r3 + 15360; + if(r2 == r3) { + pc=0x1a54c; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + 28080; - /* Next insn is delay slot */ - r31 = 0x1a890; - pc = 0x20600; - run_20600(); - return; - case 0x1a890: + r5 = r5 + 3504; + r31=0x1a490; + pc=0x1fc00; + run_1f800(); return; + case 0x1a490: 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]; + r31=0x1a4a4; + pc=0x56fe0; + run_56800(); return; + case 0x1a4a4: + r31= page[(r29+76)>>>2]; + r18= page[(r29+72)>>>2]; + r17= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1a8c0: - r5 = 5 << 16; + case 0x1a4c0: + r5 = 6 << 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; + r5 = r5 + 3540; + r31=0x1a4d4; + pc=0x1fc00; + run_1f800(); return; + case 0x1a4d4: + r2= page[(r29+48)>>>2]; + if(r2 == r0) { + pc=0x1a458; continue; } - case 0x1a8e4: - r5 = 5 << 16; + case 0x1a4e4: + r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + 28132; - /* Next insn is delay slot */ - r31 = 0x1a8f8; - pc = 0x20600; - run_20600(); - return; - case 0x1a8f8: + r5 = r5 + 3556; + r31=0x1a4f8; + pc=0x1fc00; + run_1f800(); return; + case 0x1a4f8: 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; + r2= page[(r29+16)>>>2]; + r3 = r3 + 15440; + if(r2 != r3) { + pc=0x1a46c; continue; } - case 0x1a90c: - r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x1a9fc; + case 0x1a50c: + r5= page[(r29+24)>>>2]; + if(r5 == r0) { + pc=0x1a624; continue; } r2 = r0 + 1; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x1a890; + if(r5 == r2) { + pc=0x1a490; continue; } r3 = r0 + 2; - if (r5 == r3) { - /* Next insn is delay slot */ - pc = 0x1a9b8; + if(r5 == r3) { + pc=0x1a5e0; 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; + r4 = 6 << 16; + r4 = r4 + 1576; + r31=0x1a544; + pc=0x21400; + run_21000(); return; + case 0x1a544: + pc=0x1a490; continue; - case 0x1a94c: - r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + case 0x1a54c: + r2= page[(r29+24)>>>2]; + r3= page[(r2+0)>>>2]; r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1a978; + if(r3 == r2) { + pc=0x1a578; continue; } - r5 = 5 << 16; + r5 = 6 << 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 = r5 + 3432; + r31=0x1a578; + pc=0x1fc00; + run_1f800(); return; + case 0x1a578: + r2= page[(r29+24)>>>2]; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r31=0x1a58c; + pc=0x1d600; + run_1d000(); return; + case 0x1a58c: + r3= page[(r29+24)>>>2]; r5 = r29 + 24; + r4= page[(r3+4)>>>2]; 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]; + r4 = r4 + -1; + page[(r3+4)>>>2] = r4; + r3 = r0 + 1; + r4 = r17 + r0; + page[(r29+24)>>>2] = r3; + page[(r29+28)>>>2] = r0; + page[(r29+32)>>>2] = r2; + page[(r29+40)>>>2] = r0; + r31=0x1a5c4; + pc=0x56fe0; + run_56800(); return; + case 0x1a5c4: + r31= page[(r29+76)>>>2]; + r18= page[(r29+72)>>>2]; + r17= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x1a5e0: + f0= page[(r29+36)>>>2]; + page[(r29+24)>>>2] = r2; + f1= page[(r29+32)>>>2]; 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[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f2; - /* Next insn is delay slot */ - pc = 0x1a890; + page[(r29+32)>>>2] = f2; + pc=0x1a490; 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: + case 0x1a624: + r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + 26132; - /* Next insn is delay slot */ - r31 = 0x1aa10; - pc = 0x20600; - run_20600(); + r5 = r5 + 1556; + r31=0x1a638; + pc=0x1fc00; + run_1f800(); return; + case 0x1a638: + page[(r29+32)>>>2] = r0; + pc=0x1a490; + continue; + case 0x1a800: + pc=0x1a800; 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)); + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_1ac00() throws ExecutionException { /* 0x1ac00 - 0x1ae00 */ + private final void run_1a800() throws ExecutionException { /* 0x1a800 - 0x1b000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1ac00: + for(;;) { + switch(pc) { + case 0x1a800: r29 = r29 + -32; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = r16; r16 = r4 + r0; - 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 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; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+28)>>>2] = r31; + r18 = r5 + r0; + r17 = 6 << 16; + r31=0x1a828; + pc=0x18600; + run_18000(); return; + case 0x1a828: + r2= page[(r16+0)>>>2]; + r17 = r17 + 15440; + if(r2 == r17) { + pc=0x1a95c; continue; } r3 = 6 << 16; - r3 = r3 + -26280; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1acd8; + r3 = r3 + 15360; + if(r2 == r3) { + pc=0x1a8e4; continue; } - r5 = 5 << 16; + r5 = 6 << 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; + r5 = r5 + 3504; + r31=0x1a85c; + pc=0x1fc00; + run_1f800(); return; + case 0x1a85c: + r2= page[(r16+36)>>>2]; + r18 = r18 < r2 ? 1 : 0; + if(r18 != r0) { + pc=0x1a8c4; continue; } - case 0x1ac6c: - r2 = readPages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1ac94; + case 0x1a870: + r2= page[(r16+32)>>>2]; + if(r2 != r0) { + pc=0x1a89c; 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= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x1a89c: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 28132; + r5 = r5 + 3556; 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; + pc=0x1fc00; + run_1f800(); return; + case 0x1a8c4: + r5 = 6 << 16; + page[(r16+36)>>>2] = 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; + r5 = r5 + 3540; + r31=0x1a8dc; + pc=0x1fc00; + run_1f800(); return; + case 0x1a8dc: + pc=0x1a870; continue; - case 0x1acd8: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + case 0x1a8e4: + r2= page[(r16+8)>>>2]; + r3= page[(r2+0)>>>2]; r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1ad04; + if(r3 == r2) { + pc=0x1a910; continue; } - r5 = 5 << 16; + r5 = 6 << 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 = 0x1ad14; - pc = 0x14400; - run_14400(); - return; - case 0x1ad14: - /* Next insn is delay slot */ - pc = 0x1ac58; + r5 = r5 + 3432; + r31=0x1a910; + pc=0x1fc00; + run_1f800(); return; + case 0x1a910: + r2= page[(r16+8)>>>2]; + addr=r2+8; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r31=0x1a924; + pc=0x1d600; + run_1d000(); return; + case 0x1a924: + r3= page[(r16+8)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + -1; + page[(r3+4)>>>2] = r4; + r3 = r0 + 1; + page[(r16+0)>>>2] = r17; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r0; + page[(r16+16)>>>2] = r2; + page[(r16+24)>>>2] = r0; + pc=0x1a85c; continue; - case 0x1ad1c: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + case 0x1a95c: + r2= page[(r16+8)>>>2]; r3 = r0 + 2; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1ad40; + if(r2 == r3) { + pc=0x1a980; continue; } - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1ac58; + if(r2 != r0) { + pc=0x1a85c; continue; } - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x1ac58; + page[(r16+16)>>>2] = r0; + pc=0x1a85c; continue; - case 0x1ad40: - f0 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + case 0x1a980: + f0= page[(r16+20)>>>2]; r2 = r0 + 1; - f1 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + f1= page[(r16+16)>>>2]; + page[(r16+8)>>>2] = 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; - /* Next insn is delay slot */ - pc = 0x1ac58; + page[(r16+16)>>>2] = f2; + pc=0x1a85c; continue; - 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: + case 0x1aa00: r29 = r29 + -72; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + page[(r29+64)>>>2] = 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: + page[(r29+68)>>>2] = r31; + r31=0x1aa1c; + pc=0x18600; + run_18000(); return; + case 0x1aa1c: 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; + r31=0x1aa30; + pc=0x56fe0; + run_56800(); return; + case 0x1aa30: + r2= page[(r29+52)>>>2]; + if(r2 != r0) { + pc=0x1aa78; continue; } - case 0x1ae40: - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1ae64; + case 0x1aa40: + r2= page[(r29+48)>>>2]; + if(r2 == r0) { + pc=0x1aa64; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 3556; + r31=0x1aa64; + pc=0x1fc00; + run_1f800(); return; + case 0x1aa64: + r31= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1ae78: - r5 = 5 << 16; + case 0x1aa78: + r5 = 6 << 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; + r5 = r5 + 3540; + r31=0x1aa8c; + pc=0x1fc00; + run_1f800(); return; + case 0x1aa8c: + pc=0x1aa40; 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; + case 0x1ac00: + r2= page[(r28+-31356)>>>2]; + if(r2 == r0) { + pc=0x1ac34; continue; } r2 = r2 + -1; - writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; + page[(r28+-31356)>>>2] = r2; + r2= page[(r28+-31360)>>>2]; r3 = r2 + 4; - 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; + page[(r28+-31360)>>>2] = r3; + r2= page[(r2+0)>>>2]; + pc=r31; return; - case 0x1b034: + case 0x1ac34: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x1ae00: 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; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; r17 = r4 + r0; r18 = r5 + r0; r16 = r0 + 45; - case 0x1b220: - r3 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x1b2ec; + case 0x1ae20: + r3= page[(r28+-31356)>>>2]; + if(r3 == r0) { + pc=0x1aeec; continue; } - 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 */ + r6= page[(r28+-31360)>>>2]; + r2= page[(r6+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r7 = tmp; - if (r7 != r16) { - /* Next insn is delay slot */ - pc = 0x1b2ec; + if(r7 != r16) { + pc=0x1aeec; continue; } r3 = r3 + -1; - 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 */ + page[(r28+-31356)>>>2] = r3; + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r6 = r6 + 4; - writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r6; + page[(r28+-31360)>>>2] = r6; r4 = r2 + 1; - if (r3 != r16) { - /* Next insn is delay slot */ - pc = 0x1b2ac; + if(r3 != r16) { + pc=0x1aeac; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x1b2ec; + if(r3 == r0) { + pc=0x1aeec; continue; } r4 = r2 + 2; - /* Next insn is delay slot */ - pc = r18; - r31 = 0x1b28c; + pc=r18; + r31=0x1ae8c; return; - case 0x1b28c: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1b220; + case 0x1ae8c: + if(r2 == r0) { + pc=0x1ae20; continue; } - 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; + r3= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r3+12)>>>2]; + r5 = r5 + 3592; + pc=0x1aecc; continue; - case 0x1b2ac: - /* Next insn is delay slot */ - pc = r17; - r31 = 0x1b2b4; + case 0x1aeac: + pc=r17; + r31=0x1aeb4; return; - case 0x1b2b4: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1b220; + case 0x1aeb4: + if(r2 == r0) { + pc=0x1ae20; continue; } - 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; + r3= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r3+12)>>>2]; + r5 = r5 + 3620; + case 0x1aecc: + r6 = 6 << 16; + r6 = r6 + 3672; r7 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x1b2e0; - pc = 0x42000; - run_42000(); - return; - case 0x1b2e0: + r31=0x1aee0; + pc=0x4b800; + run_4b800(); return; + case 0x1aee0: r4 = r0 + 1; - /* 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]; + r31=0x1aeec; + pc=0x49a00; + run_49800(); return; + case 0x1aeec: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1b400: - pc = 0x1b400; + case 0x1b000: + pc=0x1b000; 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_1b400() throws ExecutionException { /* 0x1b400 - 0x1b600 */ + private final void run_1b000() throws ExecutionException { /* 0x1b000 - 0x1b800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1b400: - r2 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x1b000: + r2= page[(r28+-31356)>>>2]; r29 = r29 + -24; r7 = r4 + r0; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1b44c; + page[(r29+20)>>>2] = r31; + if(r2 == r0) { + pc=0x1b04c; continue; } r2 = r2 + -1; - writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; + page[(r28+-31356)>>>2] = r2; + r2= page[(r28+-31360)>>>2]; r3 = r2 + 4; - 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; + r2= page[(r2+0)>>>2]; + page[(r28+-31360)>>>2] = r3; + if(r2 == r0) { + pc=0x1b04c; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x1b04c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r5 = r5 + 3648; + r6 = r6 + 3672; + r31=0x1b06c; + pc=0x4b800; + run_4b800(); return; + case 0x1b06c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x1b478; - pc = 0x40200; - run_40200(); - return; - 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_1b600() throws ExecutionException { /* 0x1b600 - 0x1b800 */ - int addr, tmp; - 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; + r31=0x1b078; + pc=0x49a00; + run_49800(); return; + case 0x1b078: + case 0x1b200: + page[(r28+-31356)>>>2] = r4; + page[(r28+-31360)>>>2] = r5; + if(r4 == r0) { + pc=0x1b22c; continue; } r2 = r5 + 4; r4 = r4 + -1; - 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; + page[(r28+-31360)>>>2] = r2; + page[(r28+-31356)>>>2] = r4; + r2= page[(r5+0)>>>2]; + pc=r31; return; - case 0x1b62c: + case 0x1b22c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: - r2 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; - r3 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; + case 0x1b400: + r2= page[(r28+-31356)>>>2]; + r3= page[(r28+-31360)>>>2]; 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 = 0x1b82c; + page[(r29+20)>>>2] = r31; + page[(r4+0)>>>2] = r2; + page[(r5+0)>>>2] = r3; + if(r6 == r0) { + pc=0x1b42c; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1b83c; + if(r2 == r0) { + pc=0x1b43c; continue; } - case 0x1b82c: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x1b42c: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x1b43c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r6 = 6 << 16; + r5 = r5 + 3664; + r6 = r6 + 3672; + r31=0x1b45c; + pc=0x4b800; + run_4b800(); return; + case 0x1b45c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x1b868; - pc = 0x40200; - run_40200(); - return; - 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_1ba00() throws ExecutionException { /* 0x1ba00 - 0x1bc00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x1ba00: + r31=0x1b468; + pc=0x49a00; + run_49800(); return; + case 0x1b468: + case 0x1b600: r29 = r29 + -32; r4 = 6 << 16; r6 = 6 << 16; - r4 = r4 + -24896; + r4 = r4 + 16744; r5 = r29 + 16; - 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; + r6 = r6 + 17104; + page[(r29+28)>>>2] = r31; + r31=0x1b624; + pc=0x42400; + run_42000(); return; + case 0x1b624: + if(r2 == r0) { + pc=0x1b640; continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; + r2= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1ba40: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + case 0x1b640: + r31= page[(r29+28)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1bc00: - pc = 0x1bc00; + 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_1bc00() throws ExecutionException { /* 0x1bc00 - 0x1be00 */ + private final void run_1b800() throws ExecutionException { /* 0x1b800 - 0x1c000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1bc00: + for(;;) { + switch(pc) { + case 0x1b800: r2 = 6 << 16; - r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; r2 = r2 & 2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1bc28; + if(r2 != r0) { + pc=0x1b828; continue; } - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x1bc34; + if(r5 != r0) { + pc=0x1b834; continue; } - case 0x1bc28: - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; - /* Next insn is delay slot */ - pc = r31; + case 0x1b828: + page[(r4+0)>>>2] = r5; + pc=r31; return; - case 0x1bc34: - r5 = 5 << 16; + case 0x1b834: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 28276; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - 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: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x1be24; + r5 = r5 + 3700; + pc=0x1fc00; + run_1f800(); return; + case 0x1ba00: + if(r4 == r0) { + pc=0x1ba24; continue; } 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; + page[(r2+31424)>>>2] = r4; + r2 = r2 + 31424; + page[(r2+36)>>>2] = r0; + page[(r2+40)>>>2] = r0; + pc=r31; return; - case 0x1be24: + case 0x1ba24: 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; + r4 = r4 + 17092; + page[(r2+31424)>>>2] = r4; + r2 = r2 + 31424; + page[(r2+36)>>>2] = r0; + page[(r2+40)>>>2] = r0; + 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 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - r4 = 5 << 16; - r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + case 0x1bc00: + r2= page[(r28+-31512)>>>2]; + r4 = 6 << 16; + r7= page[(r2+12)>>>2]; r29 = r29 + -24; - r4 = r4 + 28504; + r4 = r4 + 3928; r5 = r0 + 1; r6 = r0 + 37; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - /* Next insn is delay slot */ - r31 = 0x1c028; - pc = 0x43e00; - run_43e00(); - return; - case 0x1c028: + page[(r29+20)>>>2] = r31; + r31=0x1bc28; + pc=0x4d600; + run_4d000(); return; + case 0x1bc28: 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_1c200() throws ExecutionException { /* 0x1c200 - 0x1c400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x1c200: - r29 = r29 + -40; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; - r16 = r4 + r0; - 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[(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; - return; - 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; - 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: - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r31=0x1bc34; + pc=0x49a00; + run_49800(); return; + case 0x1bc34: + case 0x1be00: + r2= page[(r4+0)>>>2]; r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1c434; + if(r2 == r0) { + pc=0x1be34; 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]; + case 0x1be1c: + r31= page[(r29+20)>>>2]; + page[(r16+4)>>>2] = r0; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x1be34: + r4= page[(r4+8)>>>2]; + r2 = (r4&0xffffffffL) < (128&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x1be4c; 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; - case 0x1c45c: - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1c41c; + case 0x1be4c: + page[(r16+4)>>>2] = r0; + page[(r16+8)>>>2] = r4; + r31=0x1be5c; + pc=0x4de00; + run_4d800(); return; + case 0x1be5c: + page[(r16+0)>>>2] = r2; + if(r2 != r0) { + pc=0x1be1c; continue; } - /* Next insn is delay slot */ - r31 = 0x1c470; - pc = 0x1c000; - run_1c000(); + r31=0x1be70; + pc=0x1bc00; + continue; + case 0x1be70: + case 0x1c000: + pc=0x1c000; return; - case 0x1c470: - case 0x1c600: - pc = 0x1c600; - 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_1c600() throws ExecutionException { /* 0x1c600 - 0x1c800 */ + private final void run_1c000() throws ExecutionException { /* 0x1c000 - 0x1c800 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x1c000: + r29 = r29 + -40; + page[(r29+32)>>>2] = r17; + r17= page[(r4+8)>>>2]; + page[(r29+28)>>>2] = r16; + r17 = r17 << 1; 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(); + r4= page[(r4+0)>>>2]; + r5 = r17 + r0; + page[(r29+36)>>>2] = r31; + r31=0x1c02c; + pc=0x4fa00; + run_4f800(); return; + case 0x1c02c: + if(r2 == r0) { + pc=0x1c054; + continue; + } + r31= page[(r29+36)>>>2]; + page[(r16+8)>>>2] = r17; + page[(r16+0)>>>2] = r2; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 40; + pc=r31; return; - case 0x1c81c: - r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x1c054: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + page[(r29+16)>>>2] = r2; + r31=0x1c06c; + pc=0x1fc00; + run_1f800(); return; + case 0x1c06c: + r2= page[(r29+16)>>>2]; + r31= page[(r29+36)>>>2]; + page[(r16+8)>>>2] = r17; + page[(r16+0)>>>2] = r2; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x1c200: + r29 = r29 + -24; + page[(r29+16)>>>2] = r16; + r16 = r4 + r0; + r4= page[(r4+4)>>>2]; + page[(r29+20)>>>2] = r31; + r31=0x1c21c; + pc=0x20200; + run_20000(); return; + case 0x1c21c: + r5= page[(r16+0)>>>2]; + r6= page[(r16+4)>>>2]; 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]; + r31=0x1c230; + pc=0x56fe0; + run_56800(); return; + case 0x1c230: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x1c400: + r29 = r29 + -40; + r3= page[(r4+4)>>>2]; + r2= page[(r4+8)>>>2]; + page[(r29+28)>>>2] = r17; r17 = r5 << 24; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + page[(r29+24)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r18; r16 = r4 + r0; r17 = r17 >> 24; - if (r6 == r2) { - /* Next insn is delay slot */ - pc = 0x1ca58; + if(r3 == r2) { + pc=0x1c460; continue; } - 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; + r2= page[(r4+0)>>>2]; + r4 = r3 + 1; + r3 = r2 + r3; + page[(r16+4)>>>2] = r4; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 40; + pc=r31; return; - case 0x1ca58: - r6 = r6 << 1; - r5 = r4 + 8; - /* Next insn is delay slot */ - r31 = 0x1ca68; - pc = 0x1c200; - run_1c200(); + case 0x1c460: + r18 = r3 << 1; + r4= page[(r4+0)>>>2]; + r5 = r18 + r0; + r31=0x1c474; + pc=0x4fa00; + run_4f800(); return; + case 0x1c474: + if(r2 == r0) { + pc=0x1c4b4; + continue; + } + case 0x1c47c: + r3= page[(r16+4)>>>2]; + page[(r16+8)>>>2] = r18; + r4 = r3 + 1; + r3 = r2 + r3; + page[(r16+0)>>>2] = r2; + page[(r16+4)>>>2] = r4; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 40; + pc=r31; return; - 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; - 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: - r29 = r29 + -40; - 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; + case 0x1c4b4: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + page[(r29+16)>>>2] = r2; + r31=0x1c4cc; + pc=0x1fc00; + run_1f800(); return; + case 0x1c4cc: + r2= page[(r29+16)>>>2]; + pc=0x1c47c; + continue; + case 0x1c600: + r29 = r29 + -48; + page[(r29+36)>>>2] = r19; + r19 = 6 << 16; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r20; + page[(r29+32)>>>2] = r18; r16 = r4 + r0; r17 = r5 + r0; - r19 = r4 + 8; - /* Next insn is delay slot */ - pc = 0x1cc48; + r19 = r19 + 5244; + pc=0x1c650; 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; + case 0x1c634: + r2= page[(r16+0)>>>2]; + r4 = r3 + 1; + r3 = r2 + r3; + page[(r16+4)>>>2] = r4; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r18 == r0) { + pc=0x1c6a8; continue; } - case 0x1cc48: - r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + case 0x1c650: + r3= page[(r16+4)>>>2]; + r2= page[(r16+8)>>>2]; 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 */ + addr=r17+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; - if (r6 != r2) { - /* Next insn is delay slot */ - pc = 0x1cc2c; + if(r3 != r2) { + pc=0x1c634; continue; } - 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; + r20 = r3 << 1; + r4= page[(r16+0)>>>2]; + r5 = r20 + r0; + r31=0x1c67c; + pc=0x4fa00; + run_4f800(); return; + case 0x1c67c: + if(r2 == r0) { + pc=0x1c6d8; continue; } - case 0x1cc94: - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; - r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + case 0x1c684: + r3= page[(r16+4)>>>2]; + page[(r16+8)>>>2] = r20; + r4 = r3 + 1; + r3 = r2 + r3; + page[(r16+0)>>>2] = r2; + page[(r16+4)>>>2] = r4; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r18 != r0) { + pc=0x1c650; + continue; + } + case 0x1c6a8: + r2= page[(r16+4)>>>2]; + r31= page[(r29+44)>>>2]; 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; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + page[(r16+4)>>>2] = r2; + r16= page[(r29+24)>>>2]; + r29 = r29 + 48; + pc=r31; 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: - 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 = 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; - } - case 0x1ce70: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x1c6d8: + r4 = r0 + -3; r5 = r19 + r0; - r6 = r17 + r0; - r4 = r4 + r3; - /* Next insn is delay slot */ - r31 = 0x1ce88; - pc = 0x4d7e0; - run_4d600(); + page[(r29+16)>>>2] = r2; + r31=0x1c6ec; + pc=0x1fc00; + run_1f800(); return; + case 0x1c6ec: + r2= page[(r29+16)>>>2]; + pc=0x1c684; + continue; + case 0x1c800: + pc=0x1c800; 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)); + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_1d000() throws ExecutionException { /* 0x1d000 - 0x1d200 */ + private final void run_1c800() throws ExecutionException { /* 0x1c800 - 0x1d000 */ 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; + for(;;) { + switch(pc) { + case 0x1c800: + r29 = r29 + -48; + r3= page[(r4+4)>>>2]; + page[(r29+24)>>>2] = r16; + r16= page[(r4+8)>>>2]; + page[(r29+36)>>>2] = r19; + r2 = r16 - r3; + r2 = ((r2 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+44)>>>2] = r31; + r17 = r4 + r0; + page[(r29+40)>>>2] = r20; + r19 = r5 + r0; + r18 = r6 + r0; + r4= page[(r4+0)>>>2]; + if(r2 == r0) { + pc=0x1c8c4; 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(); + r20 = 6 << 16; + r20 = r20 + 5244; + pc=0x1c874; + continue; + case 0x1c854: + r3= page[(r17+4)>>>2]; + page[(r17+8)>>>2] = r16; + r4 = r16 - r3; + r4 = ((r4 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; + page[(r17+0)>>>2] = r2; + if(r4 == r0) { + pc=0x1c8c0; + continue; + } + case 0x1c870: + r4 = r2 + r0; + case 0x1c874: + r16 = r16 << 1; + r5 = r16 + r0; + r31=0x1c884; + pc=0x4fa00; + run_4f800(); return; + case 0x1c884: + if(r2 != r0) { + pc=0x1c854; + continue; + } + r4 = r0 + -3; + r5 = r20 + r0; + page[(r29+16)>>>2] = r2; + r31=0x1c8a0; + pc=0x1fc00; + run_1f800(); return; + case 0x1c8a0: + r3= page[(r17+4)>>>2]; + r2= page[(r29+16)>>>2]; + r4 = r16 - r3; + r4 = ((r4 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; + page[(r17+8)>>>2] = r16; + page[(r17+0)>>>2] = r2; + if(r4 != r0) { + pc=0x1c870; + continue; + } + case 0x1c8c0: + r4 = r2 + r0; + case 0x1c8c4: + r5 = r19 + r0; + r6 = r18 + r0; + r4 = r4 + r3; + r31=0x1c8d8; + pc=0x56fe0; + run_56800(); return; + case 0x1c8d8: + r2= page[(r17+4)>>>2]; + r31= page[(r29+44)>>>2]; + r18 = r2 + r18; + page[(r17+4)>>>2] = r18; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 48; + pc=r31; 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; + case 0x1ca00: + r29 = r29 + -48; + r3= page[(r4+4)>>>2]; + page[(r29+28)>>>2] = r16; + r16= page[(r4+8)>>>2]; + page[(r29+36)>>>2] = r18; + r2 = r16 - r3; + r2 = (r2&0xffffffffL) < (30&0xffffffffL) ? 1 : 0; + page[(r29+32)>>>2] = r17; + page[(r29+44)>>>2] = r31; + r17 = r4 + r0; + page[(r29+40)>>>2] = r19; + r18 = r5 + r0; + r4= page[(r4+0)>>>2]; + if(r2 == r0) { + pc=0x1cabc; continue; } - case 0x1d068: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - r5 = 5 << 16; + r19 = 6 << 16; + r19 = r19 + 5244; + pc=0x1ca6c; + continue; + case 0x1ca4c: + r3= page[(r17+4)>>>2]; + page[(r17+8)>>>2] = r16; + r4 = r16 - r3; + r4 = (r4&0xffffffffL) < (30&0xffffffffL) ? 1 : 0; + page[(r17+0)>>>2] = r2; + if(r4 == r0) { + pc=0x1cab8; + continue; + } + case 0x1ca68: + r4 = r2 + r0; + case 0x1ca6c: + r16 = r16 << 1; + r5 = r16 + r0; + r31=0x1ca7c; + pc=0x4fa00; + run_4f800(); return; + case 0x1ca7c: + if(r2 != r0) { + pc=0x1ca4c; + continue; + } + r4 = r0 + -3; + r5 = r19 + r0; + page[(r29+16)>>>2] = r2; + r31=0x1ca98; + pc=0x1fc00; + run_1f800(); return; + case 0x1ca98: + r3= page[(r17+4)>>>2]; + r2= page[(r29+16)>>>2]; + r4 = r16 - r3; + r4 = (r4&0xffffffffL) < (30&0xffffffffL) ? 1 : 0; + page[(r17+8)>>>2] = r16; + page[(r17+0)>>>2] = r2; + if(r4 != r0) { + pc=0x1ca68; + continue; + } + case 0x1cab8: + r4 = r2 + r0; + case 0x1cabc: + r5 = 6 << 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]; + r5 = r5 + 3968; + r31=0x1cad4; + pc=0x50c00; + run_50800(); return; + case 0x1cad4: + r3= page[(r17+4)>>>2]; + r31= page[(r29+44)>>>2]; 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; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r16= page[(r29+28)>>>2]; + page[(r17+4)>>>2] = r2; + r17= page[(r29+32)>>>2]; + r29 = r29 + 48; + 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; + case 0x1cc00: + r29 = r29 + -40; + page[(r29+24)>>>2] = r16; r16 = r4 + r0; + r4= page[(r4+0)>>>2]; + page[(r29+28)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r18; r17 = r5 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1d2c0; + if(r4 == r0) { + pc=0x1ccd4; 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; + r3= page[(r16+8)>>>2]; + case 0x1cc2c: + r18= page[(r17+4)>>>2]; + r3 = ((r3 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; + if(r3 != r0) { + pc=0x1ccb0; 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; + r2 = r4 + r0; + case 0x1cc44: + r3= page[(r17+0)>>>2]; + r4 = r3 + 1; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 == r0) { + pc=0x1cc90; continue; } - case 0x1d25c: - r5 = r2 < 91 ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x1d26c; + case 0x1cc60: + r5 = r3 < 91 ? 1 : 0; + r6 = r3 | 32; + r2 = r2 + 1; + if(r5 == r0) { + pc=0x1cc78; 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; + r3 = r6 + r0; + case 0x1cc78: + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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; + addr=r4+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x1cc60; 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; + case 0x1cc90: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 40; + 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; + case 0x1ccb0: + r5 = r18 + r0; + r31=0x1ccbc; + pc=0x4fa00; + run_4f800(); return; + case 0x1ccbc: + if(r2 == r0) { + pc=0x1cd24; + continue; + } + page[(r16+8)>>>2] = r18; + page[(r16+0)>>>2] = r2; + pc=0x1cc44; continue; - 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; + case 0x1ccd4: + r18= page[(r16+8)>>>2]; + r2 = (r18&0xffffffffL) < (128&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x1cd18; continue; } - r18 = r0 + 128; - case 0x1d2d8: - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r18; + case 0x1cce8: + page[(r16+4)>>>2] = r0; + page[(r16+8)>>>2] = r18; r4 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x1d2ec; - pc = 0x44600; - run_44600(); - return; - case 0x1d2ec: - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - r3 = r18 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1d22c; + r31=0x1ccfc; + pc=0x4de00; + run_4d800(); return; + case 0x1ccfc: + page[(r16+0)>>>2] = r2; + if(r2 == r0) { + pc=0x1cd50; 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_1d400() throws ExecutionException { /* 0x1d400 - 0x1d600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x1d400: + r4 = r2 + r0; + r3 = r18 + r0; + pc=0x1cc2c; + continue; + case 0x1cd18: + r18 = r0 + 128; + pc=0x1cce8; + continue; + case 0x1cd24: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + page[(r29+16)>>>2] = r2; + r31=0x1cd3c; + pc=0x1fc00; + run_1f800(); return; + case 0x1cd3c: + r2= page[(r29+16)>>>2]; + page[(r16+8)>>>2] = r18; + page[(r16+0)>>>2] = r2; + pc=0x1cc44; + continue; + case 0x1cd50: + r31=0x1cd58; + pc=0x1bc00; + run_1b800(); return; + case 0x1cd58: + case 0x1ce00: r2 = r4 & 255; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1d600: - pc = 0x1d600; + case 0x1d000: + pc=0x1d000; 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_1d600() throws ExecutionException { /* 0x1d600 - 0x1d800 */ + private final void run_1d000() throws ExecutionException { /* 0x1d000 - 0x1d800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1d600: - r2 = readPages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x1d000: + r2= page[(r28+-32696)>>>2]; r4 = r4 & 255; r4 = r2 + r4; - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x1d200: r4 = r4 & 255; r2 = r4 + -65; - r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1d840; + r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x1d240; continue; } r2 = r4 + -97; - r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1d834; + r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x1d234; continue; } r4 = r4 + -32; r2 = r4 & 255; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1d834: + case 0x1d234: r2 = r4 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1d840: + case 0x1d240: r2 = r4 | 128; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x1d400: r4 = r4 & 255; r2 = r4 + -97; - r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1da58; + r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x1d458; continue; } r2 = r4 + -91; - r2 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1da48; + r2 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x1d448; continue; } r2 = r0 + 96; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x1da68; + if(r4 == r2) { + pc=0x1d468; continue; } r2 = r0 + 64; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x1da74; + if(r4 == r2) { + pc=0x1d474; continue; } r2 = r4 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1da48: + case 0x1d448: r4 = r4 + -64; r2 = r4 & 255; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1da58: + case 0x1d458: r4 = r4 + -96; r2 = r4 & 255; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1da68: + case 0x1d468: r2 = r0 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1da74: + case 0x1d474: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; 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: - r2 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + case 0x1d600: + r2= page[(r28+-31272)>>>2]; r4 = r4 & 255; - r25 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r25; + r25= page[(r2+0)>>>2]; + pc=r25; return; - case 0x1de00: - pc = 0x1de00; + 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_1de00() throws ExecutionException { /* 0x1de00 - 0x1e000 */ + private final void run_1d800() throws ExecutionException { /* 0x1d800 - 0x1e000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1de00: + for(;;) { + switch(pc) { + case 0x1d800: r2 = r28 + -32700; - writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = r31; + page[(r28+-31272)>>>2] = r2; + pc=r31; return; - 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: + case 0x1da00: r29 = r29 + -24; r7 = r5 + r0; r6 = r0 + 256; 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: + page[(r29+20)>>>2] = r31; + r31=0x1da1c; + pc=0x4c000; + run_4c000(); return; + case 0x1da1c: r3 = r0 + 256; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x1e044; + if(r2 == r3) { + pc=0x1da44; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - r5 = 5 << 16; + r31= page[(r29+20)>>>2]; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 28548; + r5 = r5 + 3972; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x1e044: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + pc=0x1fc00; + run_1f800(); return; + case 0x1da44: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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_1e200() throws ExecutionException { /* 0x1e200 - 0x1e400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x1e200: + case 0x1dc00: r29 = r29 + -32; r4 = 6 << 16; r6 = 6 << 16; - r4 = r4 + -24524; + r4 = r4 + 17116; r5 = r29 + 16; - 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; + r6 = r6 + 17104; + page[(r29+28)>>>2] = r31; + r31=0x1dc24; + pc=0x42400; + run_42000(); return; + case 0x1dc24: + if(r2 == r0) { + pc=0x1dc40; continue; } - r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - case 0x1e230: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2= page[(r29+16)>>>2]; + case 0x1dc30: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1e240: - r5 = 5 << 16; + case 0x1dc40: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 28580; - /* Next insn is delay slot */ - r31 = 0x1e254; - pc = 0x20600; - run_20600(); - return; - case 0x1e254: + r5 = r5 + 4004; + r31=0x1dc54; + pc=0x1fc00; + run_1f800(); return; + case 0x1dc54: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x1e230; + pc=0x1dc30; continue; - 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: - 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 */ + case 0x1de00: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + page[(r29+48)>>>2] = r22; + page[(r29+32)>>>2] = r18; + page[(r29+52)>>>2] = r31; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; r22 = r4 + r0; r18 = r5 + r0; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1e9a0; + if(r3 == r2) { + pc=0x1dfa0; continue; } - case 0x1e83c: + case 0x1de3c: 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 */ + r4 = r17 + 17104; + r31=0x1de4c; + pc=0x1be00; + run_1b800(); return; + case 0x1de4c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r18) { - /* Next insn is delay slot */ - pc = 0x1e918; + if(r2 == r18) { + pc=0x1df18; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1e918; + if(r2 == r0) { + pc=0x1df18; continue; } - r16 = r17 + -24536; + r16 = r17 + 17104; r21 = r16 + r0; r19 = r0 + 34; r20 = r0 + 39; - /* Next insn is delay slot */ - pc = 0x1e89c; + pc=0x1de9c; 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 */ + case 0x1de7c: + r31=0x1de84; + pc=0x23000; + run_23000(); return; + case 0x1de84: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r18) { - /* Next insn is delay slot */ - pc = 0x1e918; + if(r2 == r18) { + pc=0x1df18; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1e918; + if(r2 == r0) { + pc=0x1df18; 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; + case 0x1de9c: + r3= page[(r16+4)>>>2]; + r4= page[(r16+8)>>>2]; + if(r3 == r4) { + pc=0x1df64; continue; } - case 0x1e8b0: - r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + case 0x1deb0: + r4= page[(r17+17104)>>>2]; 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 */ + page[(r16+4)>>>2] = r5; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; - if (r4 == r19) { - /* Next insn is delay slot */ - pc = 0x1e8dc; + if(r4 == r19) { + pc=0x1dedc; continue; } - if (r4 != r20) { - /* Next insn is delay slot */ - pc = 0x1e87c; + if(r4 != r20) { + pc=0x1de7c; 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; + case 0x1dedc: + r31=0x1dee4; + pc=0x24800; + run_24800(); return; + case 0x1dee4: + r3= page[(r16+4)>>>2]; + r4= page[(r16+8)>>>2]; + if(r3 == r4) { + pc=0x1df80; continue; } - case 0x1e8f8: + case 0x1def8: 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 */ + r5= page[(r17+17104)>>>2]; + page[(r16+4)>>>2] = r4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x1de7c; continue; } - case 0x1e918: - r4 = r17 + -24536; + case 0x1df18: + r4 = r17 + 17104; 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]; + r31=0x1df28; + pc=0x1c400; + run_1c000(); return; + case 0x1df28: + r4 = r17 + 17104; + r31=0x1df34; + pc=0x1c200; + run_1c000(); return; + case 0x1df34: + r31= page[(r29+52)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + page[(r22+0)>>>2] = r2; + r22= page[(r29+48)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1e964: + case 0x1df64: 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 */ + r31=0x1df70; + pc=0x1c000; + run_1c000(); return; + case 0x1df70: + r3= page[(r21+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x1e8b0; + pc=0x1deb0; continue; - case 0x1e980: + case 0x1df80: 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; + page[(r29+16)>>>2] = r2; + r31=0x1df90; + pc=0x1c000; + run_1c000(); return; + case 0x1df90: + r3= page[(r21+4)>>>2]; + r2= page[(r29+16)>>>2]; + pc=0x1def8; continue; - case 0x1e9a0: - /* Next insn is delay slot */ - r31 = 0x1e9a8; - pc = 0x23400; - run_23400(); - return; - case 0x1e9a8: - /* Next insn is delay slot */ - pc = 0x1e83c; + case 0x1dfa0: + r31=0x1dfa8; + pc=0x23000; + run_23000(); return; + case 0x1dfa8: + pc=0x1de3c; continue; - case 0x1ea00: - pc = 0x1ea00; + 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_1ea00() throws ExecutionException { /* 0x1ea00 - 0x1ec00 */ + private final void run_1e000() throws ExecutionException { /* 0x1e000 - 0x1e800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1ea00: + for(;;) { + switch(pc) { + case 0x1e000: 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; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r16; + r31=0x1e01c; + pc=0x26200; + run_26000(); return; + case 0x1e01c: + if(r2 == r0) { + pc=0x1e03c; continue; } - case 0x1ea24: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + case 0x1e024: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1ea3c: + case 0x1e03c: r5 = 6 << 16; - r6 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r6= page[(r29+20)>>>2]; r4 = r29 + 16; - r5 = r5 + -11392; + r5 = r5 + 30256; 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; + r31=0x1e058; + pc=0x42800; + run_42800(); return; + case 0x1e058: + r2= page[(r29+16)>>>2]; + if(r2 == r0) { + pc=0x1e024; continue; } - r16 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r16= page[(r2+16)>>>2]; 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; + page[(r16+36)>>>2] = r2; + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x1e0a8; continue; } - case 0x1ea84: - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + case 0x1e084: + r2= page[(r2+4)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x1ea94; + pc=r2; + r31=0x1e094; return; - case 0x1ea94: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + case 0x1e094: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1eaa8: - r4 = 5 << 16; - r4 = r4 + 28636; + case 0x1e0a8: + r4 = 6 << 16; + r4 = r4 + 4036; 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; + r31=0x1e0bc; + pc=0x21400; + run_21000(); return; + case 0x1e0bc: + r2= page[(r16+0)>>>2]; + pc=0x1e084; 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: + case 0x1e200: r29 = r29 + -104; - writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r19; - r19 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + page[(r29+88)>>>2] = r20; + r20= page[(r28+-32692)>>>2]; r3 = r29 + 48; - writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r16; - r5 = r19 + r0; + page[(r29+72)>>>2] = r16; + r5 = r20 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; - 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: + page[(r29+100)>>>2] = r31; + page[(r29+96)>>>2] = r22; + page[(r29+92)>>>2] = r21; + page[(r29+84)>>>2] = r19; + page[(r29+80)>>>2] = r18; + page[(r29+76)>>>2] = r17; + r31=0x1e244; + pc=0x56fe0; + run_56800(); return; + case 0x1e244: 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]; + page[(r28+-32692)>>>2] = r3; + r5= page[(r16+4)>>>2]; + r3= page[(r16+48)>>>2]; r2 = r0 + 1; - 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; + page[(r29+52)>>>2] = r3; + r3 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + page[(r29+56)>>>2] = r2; + if(r3 != r0) { + pc=0x1e37c; continue; } r2 = r0 + 2; - if (r5 != r2) { - /* Next insn is delay slot */ - pc = 0x1ecfc; + if(r5 != r2) { + pc=0x1e33c; continue; } - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1ed0c; + r2= page[(r16+8)>>>2]; + if(r2 == r0) { + pc=0x1e34c; continue; } - r21 = r16 + 48; - r20 = r16 + 16; + r22 = 6 << 16; + r21 = r16 + 16; r6 = r0 + r0; r17 = r29 + 16; - /* Next insn is delay slot */ - pc = 0x1eca0; + r19 = r0 + 125; + r22 = r22 + 4056; + pc=0x1e2ac; continue; - case 0x1ec9c: + case 0x1e2a8: 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]; + case 0x1e2ac: + r2= page[(r16+16)>>>2]; + r4 = r21 + r0; + r2= page[(r2+36)>>>2]; r5 = r17 + r0; r18 = r6 + 1; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x1ecbc; + pc=r2; + r31=0x1e2c8; return; - case 0x1ecbc: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x1e2c8: + r4= page[(r16+0)>>>2]; 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; + r31=0x1e2dc; + pc=0x40e00; + run_40800(); return; + case 0x1e2dc: + r3= page[(r16+48)>>>2]; + r2= page[(r28+-32692)>>>2]; + page[(r2+4)>>>2] = r3; + r3= page[(r16+52)>>>2]; + page[(r2+16)>>>2] = r3; + r31=0x1e300; + pc=0x20800; + run_20800(); return; + case 0x1e300: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + if(r5 == r19) { + pc=0x1e31c; continue; } - /* Next insn is delay slot */ - pc = 0x1ed0c; + r4 = r22 + r0; + r31=0x1e31c; + pc=0x21400; + run_21000(); return; + case 0x1e31c: + r2= page[(r16+8)>>>2]; + r2 = r2 + -1; + page[(r16+8)>>>2] = r2; + if(r2 != r0) { + pc=0x1e2a8; + continue; + } + pc=0x1e34c; 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]; + case 0x1e33c: + r4 = 6 << 16; + r4 = r4 + 4080; + r31=0x1e34c; + pc=0x21400; + run_21000(); return; + case 0x1e34c: + r31= page[(r29+100)>>>2]; + r22= page[(r29+96)>>>2]; + r21= page[(r29+92)>>>2]; + r19= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + page[(r28+-32692)>>>2] = r20; + r20= page[(r29+88)>>>2]; r29 = r29 + 104; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x1ed38: - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + case 0x1e37c: + page[(r29+24)>>>2] = r2; r3 = 6 << 16; - r2 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+28)>>>2]; + r4= page[(r16+0)>>>2]; r17 = r29 + 16; - r3 = r3 + -26200; + r3 = r3 + 15440; r5 = r17 + r0; r6 = r0 + 1; - 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; + page[(r29+16)>>>2] = r3; + page[(r29+28)>>>2] = r0; + page[(r29+32)>>>2] = r0; + page[(r29+40)>>>2] = r2; + r31=0x1e3b4; + pc=0x40e00; + run_40800(); return; + case 0x1e3b4: + r5= page[(r16+24)>>>2]; + if(r5 != r0) { + pc=0x1e4c4; + continue; } - case 0x1ed80: - r18 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x1e3c4: + r18= page[(r16+0)>>>2]; r4 = r17 + r0; r5 = r18 + r0; r6 = r0 + 32; - /* Next insn is delay slot */ - r31 = 0x1ed98; - pc = 0x4d7e0; - run_4d600(); - return; - case 0x1ed98: + r31=0x1e3dc; + pc=0x56fe0; + run_56800(); return; + case 0x1e3dc: 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; + page[(r18+36)>>>2] = r2; + r2= page[(r16+16)>>>2]; + page[(r29+32)>>>2] = r2; + r2= page[(r16+8)>>>2]; + if(r2 == r0) { + pc=0x1e498; continue; } - /* Next insn is delay slot */ - pc = 0x1ee18; - run_1ee00(); - return; - case 0x1edc4: - r18 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - case 0x1edcc: + r21 = 6 << 16; + r19 = r0 + 125; + r21 = r21 + 4056; + pc=0x1e418; + continue; + case 0x1e414: + r18= page[(r16+0)>>>2]; + case 0x1e418: + r5 = r17 + r0; r4 = r18 + r0; - r5 = r17 + r0; r6 = r0 + 32; - /* Next insn is delay slot */ - r31 = 0x1ede0; - pc = 0x4d7e0; - run_4d600(); - return; - 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]; + r31=0x1e42c; + pc=0x56fe0; + run_56800(); return; + case 0x1e42c: + r3= page[(r16+48)>>>2]; + r2= page[(r28+-32692)>>>2]; + page[(r2+4)>>>2] = r3; + r3= page[(r16+52)>>>2]; + page[(r2+16)>>>2] = r3; + r31=0x1e450; + pc=0x20800; + run_20800(); return; + case 0x1e450: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + if(r5 == r19) { + pc=0x1e46c; + continue; + } + r4 = r21 + r0; + r31=0x1e46c; + pc=0x21400; + run_21000(); return; + case 0x1e46c: + r3= page[(r29+32)>>>2]; + r2= page[(r16+20)>>>2]; r2 = r3 + r2; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; - 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: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r29+32)>>>2] = r2; + r2= page[(r16+8)>>>2]; 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; + page[(r16+8)>>>2] = r2; + if(r2 != r0) { + pc=0x1e414; + continue; } - case 0x1ee18: - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x1e498: + r3= page[(r16+4)>>>2]; r2 = r0 + 1; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x1ed0c; - run_1ec00(); - return; + if(r3 != r2) { + pc=0x1e34c; + continue; } - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4= page[(r16+0)>>>2]; 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]; + r31=0x1e4bc; + pc=0x56fe0; + run_56800(); return; + case 0x1e4bc: + pc=0x1e34c; + continue; + case 0x1e4c4: + r4= page[(r16+0)>>>2]; + r31=0x1e4d0; + pc=0x41000; + run_41000(); return; + case 0x1e4d0: + pc=0x1e3c4; + continue; + case 0x1e600: + r2= page[(r28+-32692)>>>2]; 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; + r2= page[(r2+4)>>>2]; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + page[(r4+0)>>>2] = r2; r17 = r5 << 24; - addr = r28 + -31268; - 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x1f0bc; + page[(r4+4)>>>2] = r0; + page[(r4+8)>>>2] = r0; + if(r2 == r17) { + pc=0x1e6bc; continue; } - /* Next insn is delay slot */ - r31 = 0x1f048; - pc = 0x25400; - run_25400(); - return; - case 0x1f048: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1f0bc; + r31=0x1e648; + pc=0x26e00; + run_26800(); return; + case 0x1e648: + if(r2 == r0) { + pc=0x1e6bc; continue; } r2 = 6 << 16; - r18 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; - r5 = 5 << 16; + r18= page[(r2+17104)>>>2]; + r5 = 6 << 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; + r5 = r5 + 4096; + r31=0x1e66c; + pc=0x51600; + run_51000(); return; + case 0x1e66c: + if(r2 == r0) { + pc=0x1e698; continue; } - r5 = 5 << 16; + r5 = 6 << 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; + r5 = r5 + 4104; + r31=0x1e688; + pc=0x51600; + run_51000(); return; + case 0x1e688: + if(r2 != r0) { + pc=0x1e6d8; continue; } r2 = r0 + 1; - 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]; + page[(r16+4)>>>2] = r2; + case 0x1e698: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; r4 = r16 + 8; r5 = r17 + r0; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16= page[(r29+16)>>>2]; + r17= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x1e800; - run_1e800(); - return; - 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]; + pc=0x1de00; + run_1d800(); return; + case 0x1e6bc: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x1e6d8: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29596; + r5 = r5 + 5020; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); + pc=0x1fc00; + run_1f800(); return; + case 0x1e800: + pc=0x1e800; return; - case 0x1f200: - pc = 0x1f200; - 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_1f200() throws ExecutionException { /* 0x1f200 - 0x1f400 */ + private final void run_1e800() throws ExecutionException { /* 0x1e800 - 0x1f000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1f200: - r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x1e800: + r2= page[(r28+-32692)>>>2]; r4 = r4 + 8; - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2= page[(r2+4)>>>2]; 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; + page[(r4+-8)>>>2] = r2; + page[(r4+-4)>>>2] = r0; + pc=0x1de00; + run_1d800(); return; + case 0x1ea00: + r29 = r29 + -88; + page[(r29+80)>>>2] = r20; + r20= page[(r28+-32692)>>>2]; + r3 = r29 + 40; + page[(r29+64)>>>2] = r16; + r5 = r20 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; - 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: + page[(r29+76)>>>2] = r19; + page[(r29+72)>>>2] = r18; + page[(r29+68)>>>2] = r17; + page[(r29+84)>>>2] = r31; + r31=0x1ea3c; + pc=0x56fe0; + run_56800(); return; + case 0x1ea3c: r3 = r2 + r0; + r19 = 6 << 16; r2 = r0 + 1; - 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: + r18 = 6 << 16; + page[(r29+48)>>>2] = r2; + page[(r28+-32692)>>>2] = r3; + r2 = r3 + r0; + r19 = r19 + 5020; + r17 = r0 + 125; + r18 = r18 + 4056; + case 0x1ea64: + r3= page[(r16+8)>>>2]; + if(r3 == r0) { + pc=0x1eacc; + continue; + } + r4= page[(r16+0)>>>2]; + page[(r2+16)>>>2] = r3; + page[(r2+4)>>>2] = r4; + r31=0x1ea88; + pc=0x23000; + run_23000(); return; + case 0x1ea88: + r4 = r29 + 16; + r31=0x1ea94; + pc=0x1a400; + run_1a000(); return; + case 0x1ea94: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 != r0) { + pc=0x1ebd8; + continue; + } + case 0x1eaa4: + r2= page[(r16+4)>>>2]; + if(r2 == r0) { + pc=0x1eba8; + continue; + } + r2= page[(r29+24)>>>2]; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + case 0x1eac0: + if(r2 == r0) { + pc=0x1eb7c; + continue; + } + r2= page[(r28+-32692)>>>2]; + case 0x1eacc: + r3= page[(r16+12)>>>2]; + page[(r2+4)>>>2] = r3; + r3= page[(r16+16)>>>2]; + page[(r2+16)>>>2] = r3; + r31=0x1eaec; + pc=0x20800; + run_20800(); return; + case 0x1eaec: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + if(r5 == r17) { + pc=0x1eb08; + continue; + } r4 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x1f464; - pc = 0x1e400; - run_1e400(); - return; - case 0x1f464: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x1f470; - pc = 0x1e600; - run_1e600(); - return; - case 0x1f470: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1f48c; + r31=0x1eb08; + pc=0x21400; + run_21000(); return; + case 0x1eb08: + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x1eb70; continue; } - case 0x1f478: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x1f484; - pc = 0x1e600; - run_1e600(); - return; - case 0x1f484: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x1f458; + r3= page[(r28+-32692)>>>2]; + r4= page[(r16+20)>>>2]; + page[(r3+16)>>>2] = r2; + page[(r3+4)>>>2] = r4; + r31=0x1eb30; + pc=0x23000; + run_23000(); return; + case 0x1eb30: + r4 = r29 + 16; + r31=0x1eb3c; + pc=0x1a400; + run_1a000(); return; + case 0x1eb3c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 != r0) { + pc=0x1ebf0; continue; } - 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; + case 0x1eb4c: + r2= page[(r16+24)>>>2]; + if(r2 == r0) { + pc=0x1ebbc; + continue; + } + r2= page[(r29+24)>>>2]; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x1eb7c; + continue; + } + case 0x1eb70: + r2= page[(r28+-32692)>>>2]; + pc=0x1ea64; + continue; + case 0x1eb7c: + r31= page[(r29+84)>>>2]; + r19= page[(r29+76)>>>2]; + r18= page[(r29+72)>>>2]; + r17= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; + page[(r28+-32692)>>>2] = r20; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r20= page[(r29+80)>>>2]; + r29 = r29 + 88; + pc=r31; return; - case 0x1f600: - pc = 0x1f600; - return; - 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) { - case 0x1f600: + case 0x1eba8: + r2= page[(r29+24)>>>2]; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + pc=0x1eac0; + continue; + case 0x1ebbc: + r2= page[(r29+24)>>>2]; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + if(r2 != r0) { + pc=0x1eb70; + continue; + } + pc=0x1eb7c; + continue; + case 0x1ebd8: + r4 = r0 + -3; + r5 = r19 + r0; + r31=0x1ebe8; + pc=0x1fc00; + run_1f800(); return; + case 0x1ebe8: + pc=0x1eaa4; + continue; + case 0x1ebf0: + r4 = r0 + -3; + r5 = r19 + r0; + r31=0x1ec00; + pc=0x1fc00; + run_1f800(); return; + case 0x1ec00: + pc=0x1eb4c; + continue; + case 0x1ee00: r2 = 6 << 16; - r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; + r2= page[(r2+31344)>>>2]; 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; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; r16 = r4 + r0; r17 = r5 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x1f688; + if(r2 == r0) { + pc=0x1ee88; continue; } - case 0x1f62c: + case 0x1ee2c: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x1f63c; - pc = 0x23200; - run_23200(); - return; - 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 */ + r31=0x1ee3c; + pc=0x22e00; + run_22800(); return; + case 0x1ee3c: + r31=0x1ee44; + pc=0x20800; + run_20800(); return; + case 0x1ee44: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 13; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x1f668; + if(r3 == r2) { + pc=0x1ee68; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 4140; + r31=0x1ee68; + pc=0x1fc00; + run_1f800(); return; + case 0x1ee68: + r2= page[(r28+-32692)>>>2]; + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r4= page[(r2+16)>>>2]; 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; + pc=0x49e00; + run_49800(); return; + case 0x1ee88: + r4 = 6 << 16; + r4 = r4 + 4112; + r31=0x1ee98; + pc=0x4f200; + run_4f000(); return; + case 0x1ee98: + pc=0x1ee2c; continue; - case 0x1f800: - pc = 0x1f800; + case 0x1f000: + pc=0x1f000; 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_1f800() throws ExecutionException { /* 0x1f800 - 0x1fa00 */ + private final void run_1f000() throws ExecutionException { /* 0x1f000 - 0x1f800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x1f800: - 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; - } - 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; - } - 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; - 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) { - case 0x1fa00: + for(;;) { + switch(pc) { + case 0x1f000: 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; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + 3; - writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + page[(r4+16)>>>2] = r2; r2 = r0 + 10; - writePages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + page[(r4+20)>>>2] = r2; + r2= page[(r28+-31512)>>>2]; 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; + r2= page[(r2+12)>>>2]; + page[(r4+8)>>>2] = r3; + page[(r4+36)>>>2] = r3; + page[(r4+56)>>>2] = r3; r3 = 1 << 16; - writePages[(r4 + 32) >>> 12][((r4 + 32) >>> 2) & 0x3ff] = r2; + page[(r4+32)>>>2] = r2; r5 = r0 + 7; r2 = r0 + -1; - writePages[(r4 + 60) >>> 12][((r4 + 60) >>> 2) & 0x3ff] = r3; + page[(r4+60)>>>2] = 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; + page[(r4+4)>>>2] = r0; + page[(r4+12)>>>2] = r0; + page[(r4+24)>>>2] = r0; + page[(r4+28)>>>2] = r0; + page[(r4+40)>>>2] = r2; + page[(r4+44)>>>2] = r0; + page[(r4+48)>>>2] = r0; + page[(r4+52)>>>2] = r5; + page[(r4+64)>>>2] = r3; + page[(r4+68)>>>2] = r2; + page[(r4+72)>>>2] = r2; + page[(r4+76)>>>2] = r2; + pc=r31; return; - case 0x1fc00: - pc = 0x1fc00; + case 0x1f200: + r2= page[(r28+-31344)>>>2]; + page[(r28+-31344)>>>2] = r4; + pc=r31; 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) { - case 0x1fc00: - 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; + case 0x1f400: + r2= page[(r28+-31348)>>>2]; + page[(r28+-31348)>>>2] = r4; + pc=r31; return; - case 0x1fe00: - pc = 0x1fe00; - return; - 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) { - case 0x1fe00: - 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; - 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) { - case 0x20000: - r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + case 0x1f600: + r2= page[(r28+-31352)>>>2]; r2 = r2 | 4; - writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = r31; + page[(r28+-31352)>>>2] = r2; + pc=r31; return; - case 0x20200: - pc = 0x20200; + case 0x1f800: + pc=0x1f800; 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 */ + private final void run_1f800() throws ExecutionException { /* 0x1f800 - 0x20000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x20200: - r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x1f800: + r2= page[(r28+-31352)>>>2]; r2 = r2 | 8; - writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = r31; + page[(r28+-31352)>>>2] = r2; + pc=r31; return; - case 0x20400: - pc = 0x20400; - return; - 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) { - case 0x20400: + case 0x1fa00: 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; + page[(r29+52)>>>2] = r6; + page[(r29+68)>>>2] = r31; + page[(r29+64)>>>2] = r17; + page[(r29+60)>>>2] = r16; + page[(r29+48)>>>2] = r4; r16 = r5 + r0; - /* Next insn is delay slot */ - r31 = 0x20424; - pc = 0x23400; - run_23400(); - return; - case 0x20424: - r4 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - r31 = 0x20430; - pc = 0x37800; - run_37800(); - return; - case 0x20430: + r31=0x1fa24; + pc=0x23000; + run_23000(); return; + case 0x1fa24: + r4= page[(r29+48)>>>2]; + r31=0x1fa30; + pc=0x40c00; + run_40800(); return; + case 0x1fa30: 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; + r31=0x1fa40; + pc=0x1aa00; + run_1a800(); return; + case 0x1fa40: + r2= page[(r28+-31344)>>>2]; + r6= page[(r29+52)>>>2]; + if(r2 != r0) { + pc=0x1faa4; continue; } - r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2= page[(r28+-31352)>>>2]; r2 = r2 & 4; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x204a4; + if(r2 != r0) { + pc=0x1faa4; continue; } - case 0x20464: + case 0x1fa64: r4 = r17 + r0; r5 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x20474; - pc = 0x37a00; - run_37a00(); - return; - case 0x20474: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x2048c; + r31=0x1fa74; + pc=0x40e00; + run_40800(); return; + case 0x1fa74: + if(r16 == r0) { + pc=0x1fa8c; 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]; + r31=0x1fa8c; + pc=0x41000; + run_41000(); return; + case 0x1fa8c: + r31= page[(r29+68)>>>2]; + r17= page[(r29+64)>>>2]; + r16= page[(r29+60)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x204a4: + case 0x1faa4: 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; + r3= page[(r29+16)>>>2]; + r2 = r2 + 15440; + if(r3 != r2) { + pc=0x1fa64; continue; } r2 = r0 + 1; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x20464; + page[(r29+40)>>>2] = r2; + pc=0x1fa64; continue; - case 0x20600: - pc = 0x20600; - return; - 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) { - case 0x20600: - r29 = r29 + -24; + case 0x1fc00: + r29 = r29 + -48; r2 = r4 < -3 ? 1 : 0; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x20648; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r16; + if(r2 == r0) { + pc=0x1fcac; continue; } - 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; - case 0x20630: + case 0x1fc18: + r16 = 6 << 16; + r16 = r16 + 31340; + r2= page[(r16+28)>>>2]; + if(r2 != r0) { + pc=0x1ff24; + continue; + } + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + case 0x1fc3c: + r3= page[(r16+24)>>>2]; + r7= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x20078; + run_20000(); return; + } + page[(r29+16)>>>2] = r2; + r2= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r7 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4252; + r31=0x1fc94; + pc=0x4b800; + run_4b800(); return; + case 0x1fc94: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x2063c; - pc = 0x11e00; - run_11e00(); - return; - case 0x2063c: + r31=0x1fca0; + pc=0x12000; + run_12000(); return; + case 0x1fca0: r4 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x20648; - pc = 0x40200; - run_40200(); - return; - case 0x20648: + r31=0x1fcac; + pc=0x49a00; + run_49800(); return; + case 0x1fcac: r2 = r0 + -2; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x206cc; + if(r4 == r2) { + pc=0x1fe64; continue; } r2 = r4 < -1 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x20728; + if(r2 != r0) { + pc=0x1ff50; continue; } r2 = r0 + -1; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x20698; + if(r4 == r2) { + pc=0x1fd6c; continue; } - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x20734; + if(r4 != r0) { + pc=0x1ff5c; 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(); + r16 = 6 << 16; + r16 = r16 + 31340; + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x1fff0; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4204; + case 0x1fd00: + r3= page[(r16+24)>>>2]; + r7= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x200cc; + run_20000(); return; + } + page[(r29+16)>>>2] = r2; + r2= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r7 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4324; + r31=0x1fd58; + pc=0x4b800; + run_4b800(); return; + case 0x1fd58: + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; + r29 = r29 + 48; + pc=r31; return; - case 0x20698: - r2 = readPages[(r28 + -31348) >>> 12][((r28 + -31348) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x206bc; + case 0x1fd6c: + r2= page[(r28+-31348)>>>2]; + if(r2 != r0) { + pc=0x1fd58; continue; } - r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2= page[(r28+-31352)>>>2]; r2 = r2 & 8; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x20758; + if(r2 != r0) { + pc=0x1fd58; 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; + r16 = 6 << 16; + r16 = r16 + 31340; + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x20144; + run_20000(); return; } - 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]; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4196; + case 0x1fdb8: + r3= page[(r16+24)>>>2]; + r7= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x20158; + run_20000(); return; + } + page[(r29+16)>>>2] = r2; + r2= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r7 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4316; + r31=0x1fe10; + pc=0x4b800; + run_4b800(); return; + case 0x1fe10: + r2 = 6 << 16; + r2 = r2 + 31320; + r3= page[(r2+12)>>>2]; 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; + page[(r2+12)>>>2] = r3; + r3= page[(r16+44)>>>2]; + if(r3 == r0) { + pc=0x1fd58; 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; + r3= page[(r2+8)>>>2]; + r3 = r3 + 1; + page[(r2+8)>>>2] = r3; + r2= page[(r16+20)>>>2]; + r3 = r3 < r2 ? 1 : 0; + if(r3 != r0) { + pc=0x1fd58; 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) { - case 0x20800: - 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; - } - 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 0x20a00: - pc = 0x20a00; - return; - 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) { - case 0x20a00: - 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; - } - 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; - 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) { - case 0x20c00: - 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; - } - r2 = 6 << 16; - r2 = readPages[(r2 + -10300) >>> 12][((r2 + -10300) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x20ce8; - continue; - } - case 0x20c48: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x20c54; - pc = 0x37800; - run_37800(); - return; - 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; + pc=0x1fc94; continue; - case 0x20d18: + case 0x1fe64: + r16 = 6 << 16; + r16 = r16 + 31340; + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x1ff3c; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4188; + case 0x1fe8c: + r3= page[(r16+24)>>>2]; + r7= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x200f0; + run_20000(); return; + } + page[(r29+16)>>>2] = r2; + r2= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r7 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4308; + r31=0x1fee4; + pc=0x4b800; + run_4b800(); return; + case 0x1fee4: + r3 = 6 << 16; + r3 = r3 + 31320; + r2= page[(r3+8)>>>2]; + r2 = r2 + 1; + page[(r3+8)>>>2] = r2; + r3= page[(r16+20)>>>2]; + r2 = r2 < r3 ? 1 : 0; + if(r2 == r0) { + pc=0x1fc94; + continue; + } + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; + r29 = r29 + 48; + pc=r31; + return; + case 0x1ff24: + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4184; + pc=0x1fc3c; + continue; + case 0x1ff3c: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x1fe8c; + continue; + case 0x1ff50: + r2 = r0 + -3; + if(r4 == r2) { + pc=0x1fc18; + continue; + } + case 0x1ff5c: + r16 = 6 << 16; + r16 = r16 + 31340; + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x20004; + run_20000(); return; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4212; + case 0x1ff84: + r3= page[(r16+24)>>>2]; + r7= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x20018; + run_20000(); return; + } + page[(r29+16)>>>2] = r2; + r2= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r7 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4332; + r31=0x1ffdc; + pc=0x4b800; + run_4b800(); return; + case 0x1ffdc: + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; + r29 = r29 + 48; + pc=r31; + return; + case 0x1fff0: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x1fd00; + continue; + case 0x20000: + pc=0x20000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_20000() throws ExecutionException { /* 0x20000 - 0x20800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x20000: + case 0x20004: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x1ff84; + run_1f800(); return; + case 0x20018: + r8= page[(r7+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + r7= page[(r7+4)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+16)>>>2] = r6; + r6 = 6 << 16; + r6 = r6 + 4332; + case 0x20034: + page[(r29+20)>>>2] = r6; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r6 = r8 + r0; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4220; + r31=0x20064; + pc=0x4b800; + run_4b800(); return; + case 0x20064: + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; + r29 = r29 + 48; + pc=r31; + return; + case 0x20078: + r8= page[(r7+0)>>>2]; + r7= page[(r7+4)>>>2]; + page[(r29+16)>>>2] = r6; + r6 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r6 = r6 + 4252; + page[(r29+20)>>>2] = r6; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x200c4; + pc=0x4b800; + run_4b800(); return; + case 0x200c4: + pc=0x1fc94; + run_1f800(); return; + case 0x200cc: + r8= page[(r7+0)>>>2]; + r7= page[(r7+4)>>>2]; + page[(r29+16)>>>2] = r6; + r6 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r4= page[(r16+32)>>>2]; + r6 = r6 + 4324; + pc=0x20034; + continue; + case 0x200f0: + r8= page[(r7+0)>>>2]; + r7= page[(r7+4)>>>2]; + page[(r29+16)>>>2] = r6; + r6 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r6 = r6 + 4308; + page[(r29+20)>>>2] = r6; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x2013c; + pc=0x4b800; + run_4b800(); return; + case 0x2013c: + pc=0x1fee4; + run_1f800(); return; + case 0x20144: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x1fdb8; + run_1f800(); return; + case 0x20158: + r8= page[(r7+0)>>>2]; + r7= page[(r7+4)>>>2]; + page[(r29+16)>>>2] = r6; + r6 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r6 = r6 + 4316; + page[(r29+20)>>>2] = r6; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r5; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x201a4; + pc=0x4b800; + run_4b800(); return; + case 0x201a4: + pc=0x1fe10; + run_1f800(); return; + case 0x20200: + r29 = r29 + -32; + page[(r29+28)>>>2] = r31; + r31=0x20210; + pc=0x4de00; + run_4d800(); return; + case 0x20210: + if(r2 == r0) { + pc=0x20228; + continue; + } + r31= page[(r29+28)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x20228: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + page[(r29+16)>>>2] = r2; + r31=0x20240; + pc=0x1fc00; + run_1f800(); return; + case 0x20240: + r31= page[(r29+28)>>>2]; + r2= page[(r29+16)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x20400: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r29 = r29 + -88; + r2 = r0 + 63; + page[(r29+72)>>>2] = r16; + page[(r29+84)>>>2] = r31; + page[(r29+80)>>>2] = r18; + page[(r29+76)>>>2] = r17; + r16 = r4 + r0; + if(r3 == r2) { + pc=0x20628; + continue; + } + case 0x20428: + r31=0x20430; + pc=0x27e00; + run_27800(); return; + case 0x20430: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r18 = r2 + r0; + r2 = r0 + 61; + if(r3 == r2) { + pc=0x2056c; + continue; + } + r2= page[(r28+-31352)>>>2]; + r2 = r2 & 1; + if(r2 == r0) { + pc=0x20480; + continue; + } + r2 = 6 << 16; + r2= page[(r2+31348)>>>2]; + if(r2 == r0) { + pc=0x20480; + continue; + } + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x20550; + continue; + } + case 0x20480: + r4 = r16 + r0; + r31=0x2048c; + pc=0x40c00; + run_40800(); return; + case 0x2048c: + r4 = r29 + 48; + r17 = r2 + r0; + r31=0x2049c; + pc=0x36a00; + run_36800(); return; + case 0x2049c: + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r29+16)>>>2] = r2; + r2 = r0 + 1; + page[(r29+24)>>>2] = r2; + r2= page[(r29+56)>>>2]; + r4 = r17 + r0; + page[(r29+32)>>>2] = r2; + r2= page[(r29+64)>>>2]; + r5 = r29 + 16; + r6 = r0 + r0; + page[(r29+28)>>>2] = r0; + page[(r29+40)>>>2] = r2; + r31=0x204d8; + pc=0x40e00; + run_40800(); return; + case 0x204d8: + if(r18 != r0) { + pc=0x20538; + continue; + } + case 0x204e0: + r31=0x204e8; + pc=0x37800; + run_37800(); return; + case 0x204e8: + page[(r17+44)>>>2] = r2; + if(r16 == r0) { + pc=0x20510; + continue; + } + r31= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + r29 = r29 + 88; + pc=r31; + return; + case 0x20510: + r4= page[(r28+-32672)>>>2]; + r31=0x2051c; + pc=0x3fc00; + run_3f800(); return; + case 0x2051c: + r31= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + r29 = r29 + 88; + pc=r31; + return; + case 0x20538: + r4 = r17 + r0; + r5 = r18 + r0; + r31=0x20548; + pc=0x41000; + run_41000(); return; + case 0x20548: + pc=0x204e0; + continue; + case 0x20550: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 4340; + r31=0x20564; + pc=0x1fc00; + run_1f800(); return; + case 0x20564: + pc=0x20480; + continue; + case 0x2056c: + r31=0x20574; + pc=0x23000; + run_23000(); return; + case 0x20574: + r4 = r16 + r0; + r31=0x20580; + pc=0x40c00; + run_40800(); return; + case 0x20580: + r4 = r29 + 16; + r16 = r2 + r0; + r31=0x20590; + pc=0x1aa00; + run_1a800(); return; + case 0x20590: + r2= page[(r28+-31344)>>>2]; + if(r2 != r0) { + pc=0x205b4; + continue; + } + r2= page[(r28+-31352)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x205c8; + continue; + } + case 0x205b4: + r2 = 6 << 16; + r3= page[(r29+16)>>>2]; + r2 = r2 + 15440; + if(r3 == r2) { + pc=0x20638; + continue; + } + case 0x205c8: + r4 = r16 + r0; + r5 = r29 + 16; + r6 = r0 + r0; + r31=0x205dc; + pc=0x40e00; + run_40800(); return; + case 0x205dc: + if(r18 != r0) { + pc=0x20608; + continue; + } + r31=0x205ec; + pc=0x24000; + run_24000(); return; + case 0x205ec: + r31= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + r29 = r29 + 88; + pc=r31; + return; + case 0x20608: 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; + r31=0x20618; + pc=0x41000; + run_41000(); return; + case 0x20618: + r31=0x20620; + pc=0x24000; + run_24000(); return; + case 0x20620: + pc=0x205ec; continue; - case 0x20e00: - pc = 0x20e00; + case 0x20628: + r31=0x20630; + pc=0x41c00; + run_41800(); return; + case 0x20630: + pc=0x20428; + continue; + case 0x20638: + r2 = r0 + 1; + page[(r29+40)>>>2] = r2; + pc=0x205c8; + continue; + case 0x20800: + pc=0x20800; 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_20e00() throws ExecutionException { /* 0x20e00 - 0x21000 */ + private final void run_20800() throws ExecutionException { /* 0x20800 - 0x21000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x20e00: - 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 0x20e58: - r6 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x20e64; - pc = 0x20400; - run_20400(); - return; - 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) { - case 0x21000: - 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 */ + for(;;) { + switch(pc) { + case 0x20800: + r29 = r29 + -112; + page[(r29+108)>>>2] = r31; + page[(r29+104)>>>2] = r30; + page[(r29+100)>>>2] = r23; + page[(r29+96)>>>2] = r22; + page[(r29+92)>>>2] = r21; + page[(r29+88)>>>2] = r20; + page[(r29+84)>>>2] = r19; + page[(r29+80)>>>2] = r18; + page[(r29+76)>>>2] = r17; + page[(r29+72)>>>2] = r16; + r31=0x20834; + pc=0x23000; + run_23000(); return; + case 0x20834: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 125; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x210f8; + if(r2 == r3) { + pc=0x208fc; continue; } r3 = r0 + 13; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x210f8; + if(r2 == r3) { + pc=0x208fc; continue; } - r22 = 5 << 16; - r17 = 5 << 16; + r19 = 6 << 16; + r17 = 6 << 16; r16 = 6 << 16; - r22 = r22 + 29340; - r23 = 5 << 16; - r17 = r17 + 29080; - case 0x21068: - 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 */ + r19 = r19 + 4764; + r21 = 6 << 16; + r18 = 6 << 16; + r17 = r17 + 4504; + case 0x2086c: + page[(r28+-31352)>>>2] = r0; + case 0x20870: + addr=r16+31340; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x21320; - run_21200(); - return; + if(r3 == r2) { + pc=0x20be4; + continue; } 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&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x20b84; + continue; } r3 = r2 << 2; r3 = r17 + r3; - r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r3; + r3= page[(r3+0)>>>2]; + pc=r3; return; - case 0x210a4: - r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + case 0x208a8: + r2= page[(r28+-31352)>>>2]; 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 */ + page[(r28+-31352)>>>2] = r2; + case 0x208b8: + r31=0x208c0; + pc=0x23000; + run_23000(); return; + case 0x208c0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2106c; + if(r2 != r0) { + pc=0x20870; continue; } - 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 */ + case 0x208d0: + r31=0x208d8; + pc=0x36e00; + run_36800(); return; + case 0x208d8: + r31=0x208e0; + pc=0x23000; + run_23000(); return; + case 0x208e0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 125; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x210f8; + if(r2 == r3) { + pc=0x208fc; continue; } r3 = r0 + 13; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x21068; + if(r2 != r3) { + pc=0x2086c; continue; } - 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; + case 0x208fc: + r31= page[(r29+108)>>>2]; + r30= page[(r29+104)>>>2]; + r23= page[(r29+100)>>>2]; + r22= page[(r29+96)>>>2]; + r21= page[(r29+92)>>>2]; + r20= page[(r29+88)>>>2]; + r19= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + r29 = r29 + 112; + 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; + case 0x20930: + r2= page[(r28+-31352)>>>2]; + r3 = r2 & 2; + if(r3 != r0) { + pc=0x20b98; + continue; } - 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 = r2 | 2; + r4 = r29 + 16; + r5 = r0 + r0; + page[(r28+-31352)>>>2] = r2; + r31=0x2095c; + pc=0x26200; + run_26000(); return; + case 0x2095c: + if(r2 == r0) { + pc=0x20bcc; + continue; + } + case 0x20964: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - case 0x21144: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2106c; + case 0x2096c: + if(r2 != r0) { + pc=0x20870; continue; } - /* Next insn is delay slot */ - pc = 0x210cc; + pc=0x208d0; continue; - case 0x21154: - /* Next insn is delay slot */ - r31 = 0x2115c; - pc = 0x20a00; - run_20a00(); - return; - case 0x2115c: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2113c; + case 0x2097c: + r2= page[(r28+-31352)>>>2]; + r3 = r2 & 2; + if(r3 != r0) { + pc=0x20b98; continue; } - 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; + r2 = r2 | 2; + r4 = r18 + 17104; + r20 = r18 + 17104; + page[(r28+-31352)>>>2] = r2; + r30 = r20 + r0; + r31=0x209ac; + pc=0x1be00; + run_1b800(); return; + case 0x209ac: + r23 = r0 + 45; + r22 = r0 + 45; + pc=0x209e0; continue; - case 0x2118c: - r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + case 0x209bc: + r4= page[(r18+17104)>>>2]; 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; + page[(r20+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x209d8; + pc=0x23000; + run_23000(); return; + case 0x209d8: + if(r2 != r22) { + pc=0x20a28; 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; + case 0x209e0: + r2= page[(r20+4)>>>2]; + r4= page[(r20+8)>>>2]; + if(r2 != r4) { + pc=0x209bc; 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]; + r4 = r30 + r0; + r31=0x20a00; + pc=0x1c000; + run_1c000(); return; + case 0x20a00: + r2= page[(r30+4)>>>2]; + r4= page[(r18+17104)>>>2]; 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; + page[(r20+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x20a20; + pc=0x23000; + run_23000(); return; + case 0x20a20: + if(r2 == r22) { + pc=0x209e0; continue; } - case 0x211f8: - r4 = r21 + r0; + case 0x20a28: + r4 = r30 + r0; r5 = r0 + r0; - case 0x21200: - pc = 0x21200; - return; - 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) { - case 0x21200: - /* 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]; + r31=0x20a38; + pc=0x1c400; + run_1c000(); return; + case 0x20a38: + r2= page[(r28+-32672)>>>2]; + r23= page[(r2+0)>>>2]; + r2= page[(r28+-31352)>>>2]; + r2 = r2 & 1; + if(r2 == r0) { + pc=0x20a80; + continue; + } + r2 = r16 + 31340; + r2= page[(r2+8)>>>2]; + if(r2 == r0) { + pc=0x20a80; + continue; + } + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x20e50; + continue; + } + case 0x20a80: + r4 = r23 + r0; + r31=0x20a8c; + pc=0x40c00; + run_40800(); return; + case 0x20a8c: + r4 = r29 + 48; + r22 = r2 + r0; + r31=0x20a9c; + pc=0x36a00; + run_36800(); return; + case 0x20a9c: + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r29+16)>>>2] = r2; + r2 = r0 + 1; + page[(r29+24)>>>2] = r2; + r2= page[(r29+56)>>>2]; + r4 = r22 + r0; + page[(r29+32)>>>2] = r2; + r2= page[(r29+64)>>>2]; + r5 = r29 + 16; r6 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x21220; - pc = 0x20c00; - run_20c00(); - return; - case 0x21220: - 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; + page[(r29+40)>>>2] = r2; + page[(r29+28)>>>2] = r0; + r31=0x20ad8; + pc=0x40e00; + run_40800(); return; + case 0x20ad8: + r31=0x20ae0; + pc=0x37800; + run_37800(); return; + case 0x20ae0: + page[(r22+44)>>>2] = r2; + if(r23 != r0) { + pc=0x20964; + continue; } - /* 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: - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; - if ((tmp & 0x80) != 0) - tmp |= 0xffffff00; /* sign extend */ + case 0x20aec: + r4= page[(r28+-32672)>>>2]; + r31=0x20af8; + pc=0x3fc00; + run_3f800(); return; + case 0x20af8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2096c; + continue; + case 0x20b04: + r31=0x20b0c; + pc=0x3f600; + run_3f000(); return; + case 0x20b0c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 != r0) { + pc=0x20870; + continue; + } + pc=0x208d0; + continue; + case 0x20b24: + r31=0x20b2c; + pc=0x23000; + run_23000(); return; + case 0x20b2c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 46; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21278; + if(r2 == r3) { + pc=0x20b64; continue; } r3 = r0 + 64; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21278; + if(r2 == r3) { + pc=0x20b64; continue; } r2 = r2 & 255; - r2 = r2 + r22; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = r2 + r19; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 64; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x213e0; + if(r2 == r0) { + pc=0x20c98; continue; } - case 0x21278: - /* Next insn is delay slot */ - r31 = 0x21280; - pc = 0x26e00; - run_26e00(); - return; - 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 */ + case 0x20b64: + r31=0x20b6c; + pc=0x28800; + run_28800(); return; + case 0x20b6c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + if(r2 != r0) { + pc=0x20870; continue; } + pc=0x208d0; + continue; + case 0x20b84: + r2 = r19 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 < 0) { + pc=0x20c04; + continue; + } + case 0x20b98: + r5 = 6 << 16; 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 */ + r5 = r5 + 5020; + r31=0x20bac; + pc=0x1fc00; + run_1f800(); return; + case 0x20bac: + r31=0x20bb4; + pc=0x23800; + run_23800(); return; + case 0x20bb4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + if(r2 != r0) { + pc=0x20870; + continue; } - 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 */ + pc=0x208d0; + continue; + case 0x20bcc: + r4= page[(r29+16)>>>2]; + r31=0x20bd8; + pc=0x20400; + run_20000(); return; + case 0x20bd8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 */ + pc=0x2096c; + continue; + case 0x20be4: + r31=0x20bec; + pc=0x3f800; + run_3f800(); return; + case 0x20bec: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2106c; - run_21000(); - return; + if(r2 != r0) { + pc=0x20870; + continue; } - /* 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: + pc=0x208d0; + continue; + case 0x20c04: + r2= page[(r21+31424)>>>2]; + r22= page[(r2+0)>>>2]; + r31=0x20c18; + pc=0x26600; + run_26000(); return; + case 0x20c18: r4 = r2 + r0; - /* Next insn is delay slot */ - pc = r18; - r31 = 0x21364; + pc=r22; + r31=0x20c24; return; - case 0x21364: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2113c; - run_21000(); - return; + case 0x20c24: + if(r2 != r0) { + pc=0x20964; + continue; } - /* 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; + r2= page[(r28+-31352)>>>2]; + r3 = r2 & 2; + if(r3 != r0) { + pc=0x20b98; + continue; } - 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 */ + r5= page[(r18+17104)>>>2]; + r2 = r2 | 2; + page[(r28+-31352)>>>2] = r2; + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x21510; - run_21400(); - return; + r4 = r0 + -96; + if(r2 == r4) { + pc=0x20e7c; + continue; } - 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; + r20 = r18 + 17104; + r3= page[(r20+4)>>>2]; + r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x20c80; continue; } r3 = r0 + -62; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21500; - run_21400(); - return; + if(r2 == r3) { + pc=0x20e6c; + continue; } - case 0x213bc: + case 0x20c80: 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 */ + r31=0x20c8c; + pc=0x20400; + run_20000(); return; + case 0x20c8c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2106c; - run_21000(); - return; + pc=0x2096c; + continue; + case 0x20c98: + r2= page[(r28+-31352)>>>2]; + r3 = r2 & 2; + if(r3 != r0) { + pc=0x20b98; + continue; } - /* 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) { - case 0x21400: - r4 = r18 + -24536; + r2 = r2 | 2; + r4 = r18 + 17104; + page[(r28+-31352)>>>2] = r2; + r31=0x20cc0; + pc=0x1be00; + run_1b800(); return; + case 0x20cc0: + r4 = r18 + 17104; 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 */ + r31=0x20cd0; + pc=0x1c400; + run_1c000(); return; + case 0x20cd0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 43; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x214b4; + if(r3 != r2) { + pc=0x20d74; continue; } - r30 = r18 + -24536; - r21 = r30 + r0; - r20 = r0 + 43; - r19 = r0 + 43; - /* Next insn is delay slot */ - pc = 0x21464; + r20 = r18 + 17104; + r30 = r20 + r0; + r23 = r0 + 43; + r22 = r0 + 43; + pc=0x20d24; continue; - case 0x21438: - r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + case 0x20cf8: + r4= page[(r18+17104)>>>2]; 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 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 */ + page[(r20+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x20d14; + pc=0x23000; + run_23000(); return; + case 0x20d14: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r19) { - /* Next insn is delay slot */ - pc = 0x214b4; + if(r2 != r22) { + pc=0x20d74; continue; } - 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; + case 0x20d24: + r2= page[(r20+4)>>>2]; + r4= page[(r20+8)>>>2]; + if(r2 != r4) { + pc=0x20cf8; continue; } - 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]; + r4 = r30 + r0; + r31=0x20d44; + pc=0x1c000; + run_1c000(); return; + case 0x20d44: + r2= page[(r30+4)>>>2]; + r4= page[(r18+17104)>>>2]; 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 */ + page[(r20+4)>>>2] = r5; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x20d64; + pc=0x23000; + run_23000(); return; + case 0x20d64: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r19) { - /* Next insn is delay slot */ - pc = 0x21464; + if(r2 == r22) { + pc=0x20d24; continue; } - case 0x214b4: + case 0x20d74: r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x214c0; - pc = 0x38400; - run_38400(); - return; - case 0x214c0: - r4 = r18 + -24536; + r31=0x20d80; + pc=0x41800; + run_41800(); return; + case 0x20d80: + r4 = r18 + 17104; 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; + r31=0x20d90; + pc=0x1c400; + run_1c000(); return; + case 0x20d90: + r2= page[(r28+-32672)>>>2]; + r22= page[(r2+0)>>>2]; + r2= page[(r28+-31352)>>>2]; + r2 = r2 & 1; + if(r2 == r0) { + pc=0x20dd8; + continue; } - /* 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; + r2 = r16 + 31340; + r2= page[(r2+8)>>>2]; + if(r2 == r0) { + pc=0x20dd8; + continue; } - 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; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x20eac; + continue; } - r5 = 5 << 16; + case 0x20dd8: + r4 = r22 + r0; + r31=0x20de4; + pc=0x40c00; + run_40800(); return; + case 0x20de4: + r4 = r29 + 48; + r23 = r2 + r0; + r31=0x20df4; + pc=0x36a00; + run_36800(); return; + case 0x20df4: + r2 = 6 << 16; + r2 = r2 + 15440; + page[(r29+16)>>>2] = r2; + r2 = r0 + 1; + page[(r29+24)>>>2] = r2; + r2= page[(r29+56)>>>2]; + r4 = r23 + r0; + page[(r29+32)>>>2] = r2; + r2= page[(r29+64)>>>2]; + r5 = r29 + 16; + r6 = r0 + r0; + page[(r29+40)>>>2] = r2; + page[(r29+28)>>>2] = r0; + r31=0x20e30; + pc=0x40e00; + run_40800(); return; + case 0x20e30: + r31=0x20e38; + pc=0x37800; + run_37800(); return; + case 0x20e38: + page[(r23+44)>>>2] = r2; + if(r22 == r0) { + pc=0x20aec; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2096c; + continue; + case 0x20e50: + r5 = 6 << 16; r4 = r0 + -1; - r5 = r5 + 28952; - /* Next insn is delay slot */ - r31 = 0x21538; - pc = 0x20600; - run_20600(); + r5 = r5 + 4340; + r31=0x20e64; + pc=0x1fc00; + run_1f800(); return; + case 0x20e64: + pc=0x20a80; + continue; + case 0x20e6c: + addr=r5+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 != r4) { + pc=0x20c80; + continue; + } + case 0x20e7c: + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 != r0) { + pc=0x20c80; + continue; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 4376; + r31=0x20ea4; + pc=0x1fc00; + run_1f800(); return; + case 0x20ea4: + pc=0x20c80; + continue; + case 0x20eac: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 4340; + r31=0x20ec0; + pc=0x1fc00; + run_1f800(); return; + case 0x20ec0: + pc=0x20dd8; + continue; + case 0x21000: + pc=0x21000; return; - case 0x21538: - /* Next insn is delay slot */ - pc = 0x213bc; - run_21200(); - return; - case 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 */ + private final void run_21000() throws ExecutionException { /* 0x21000 - 0x21800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x21600: - addr = r28 + -31268; - 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 0x21000: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x21680; + page[(r29+20)>>>2] = r31; + if(r2 == r3) { + pc=0x21080; continue; } - case 0x21618: + case 0x21018: r3 = r0 + 123; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21638; + if(r2 == r3) { + pc=0x21038; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x21638: - /* Next insn is delay slot */ - r31 = 0x21640; - pc = 0x21000; - run_21000(); - return; - case 0x21640: - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; - if ((tmp & 0x80) != 0) - tmp |= 0xffffff00; /* sign extend */ + case 0x21038: + r31=0x21040; + pc=0x20800; + run_20800(); return; + case 0x21040: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 125; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x21664; + if(r3 == r2) { + pc=0x21064; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5208; + r31=0x21064; + pc=0x1fc00; + run_1f800(); return; + case 0x21064: + r31=0x2106c; + pc=0x23000; + run_23000(); return; + case 0x2106c: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x21080: + r31=0x21088; + pc=0x23000; + run_23000(); return; + case 0x21088: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x21618; + pc=0x21018; + continue; + case 0x21200: + r29 = r29 + -56; + page[(r29+44)>>>2] = r16; + r16 = 6 << 16; + r2= page[(r16+31320)>>>2]; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r17; + if(r2 == r0) { + pc=0x21238; + continue; + } + case 0x21220: + r31= page[(r29+52)>>>2]; + r17= page[(r29+48)>>>2]; + r16= page[(r29+44)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x21238: + r2= page[(r28+-31348)>>>2]; + if(r2 != r0) { + pc=0x21220; + continue; + } + r2= page[(r28+-31352)>>>2]; + r2 = r2 & 8; + if(r2 != r0) { + pc=0x21220; + continue; + } + r17 = 6 << 16; + r17 = r17 + 31340; + r2= page[(r17+28)>>>2]; + if(r2 == r0) { + pc=0x21338; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4196; + case 0x21284: + r3= page[(r17+24)>>>2]; + r5= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x2134c; + continue; + } + page[(r29+16)>>>2] = r2; + r2= page[(r5+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r5+4)>>>2]; + r7= page[(r17+32)>>>2]; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r5 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + page[(r29+36)>>>2] = r4; + r4 = r7 + r0; + r7 = 6 << 16; + page[(r29+32)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4316; + r31=0x212e0; + pc=0x4b800; + run_4b800(); return; + case 0x212e0: + r16 = r16 + 31320; + r2= page[(r16+12)>>>2]; + r2 = r2 + 1; + page[(r16+12)>>>2] = r2; + r2= page[(r17+44)>>>2]; + if(r2 == r0) { + pc=0x21220; + continue; + } + r2= page[(r16+8)>>>2]; + r3= page[(r17+20)>>>2]; + r2 = r2 + 1; + page[(r16+8)>>>2] = r2; + r2 = r2 < r3 ? 1 : 0; + if(r2 != r0) { + pc=0x21220; + continue; + } + r4 = r0 + 1; + r31=0x2132c; + pc=0x12000; + run_12000(); return; + case 0x2132c: + r4 = r2 + r0; + r31=0x21338; + pc=0x49a00; + run_49800(); return; + case 0x21338: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x21284; + continue; + case 0x2134c: + r8= page[(r5+0)>>>2]; + r7= page[(r5+4)>>>2]; + r5 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r5 = r5 + 4316; + page[(r29+16)>>>2] = r6; + page[(r29+20)>>>2] = r5; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r9= page[(r17+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r5 = 6 << 16; + page[(r29+36)>>>2] = r4; + page[(r29+32)>>>2] = r2; + r4 = r9 + r0; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x2139c; + pc=0x4b800; + run_4b800(); return; + case 0x2139c: + pc=0x212e0; + continue; + case 0x21400: + r2= page[(r28+-31348)>>>2]; + r29 = r29 + -56; + page[(r29+48)>>>2] = r18; + page[(r29+44)>>>2] = r17; + page[(r29+52)>>>2] = r31; + page[(r29+40)>>>2] = r16; + r17 = r4 + r0; + r18 = r5 + r0; + if(r2 != r0) { + pc=0x215d4; + continue; + } + r2= page[(r28+-31352)>>>2]; + r16 = 6 << 16; + r2 = r2 & 8; + r16 = r16 + 31340; + if(r2 == r0) { + pc=0x21500; + continue; + } + case 0x21440: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + 4456; + r6 = r18 + r0; + r31=0x2145c; + pc=0x4b800; + run_4b800(); return; + case 0x2145c: + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x214ec; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4184; + case 0x2147c: + r3= page[(r16+24)>>>2]; + r5= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x215e4; + continue; + } + page[(r29+16)>>>2] = r2; + r2= page[(r5+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r5+4)>>>2]; + r7 = 6 << 16; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r5 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+32)>>>2] = r2; + page[(r29+36)>>>2] = r17; + r5 = r5 + 4268; + r7 = r7 + 4252; + r31=0x214d4; + pc=0x4b800; + run_4b800(); return; + case 0x214d4: + r4 = r0 + 1; + r31=0x214e0; + pc=0x12000; + run_12000(); return; + case 0x214e0: + r4 = r2 + r0; + r31=0x214ec; + pc=0x49a00; + run_49800(); return; + case 0x214ec: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x2147c; + continue; + case 0x21500: + r2= page[(r16+28)>>>2]; + if(r2 == r0) { + pc=0x21638; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4196; + case 0x21520: + r3= page[(r16+24)>>>2]; + r5= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x2164c; + continue; + } + page[(r29+16)>>>2] = r2; + r2= page[(r5+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r5+4)>>>2]; + r7 = 6 << 16; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r5 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+32)>>>2] = r2; + r2 = 6 << 16; + r2 = r2 + 4428; + page[(r29+36)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4316; + r31=0x21580; + pc=0x4b800; + run_4b800(); return; + case 0x21580: + r2 = 6 << 16; + r2 = r2 + 31320; + r3= page[(r2+12)>>>2]; + r3 = r3 + 1; + page[(r2+12)>>>2] = r3; + r3= page[(r16+44)>>>2]; + if(r3 == r0) { + pc=0x21440; + continue; + } + r3= page[(r2+8)>>>2]; + r3 = r3 + 1; + page[(r2+8)>>>2] = r3; + r2= page[(r16+20)>>>2]; + r3 = r3 < r2 ? 1 : 0; + if(r3 != r0) { + pc=0x21440; + continue; + } + pc=0x214d4; + continue; + case 0x215d4: + r16 = 6 << 16; + r16 = r16 + 31340; + pc=0x21440; + continue; + case 0x215e4: + r8= page[(r5+0)>>>2]; + r7= page[(r5+4)>>>2]; + r5 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r5 = r5 + 4252; + page[(r29+16)>>>2] = r6; + page[(r29+20)>>>2] = r5; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + page[(r29+36)>>>2] = r17; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x21630; + pc=0x4b800; + run_4b800(); return; + case 0x21630: + pc=0x214d4; + continue; + case 0x21638: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x21520; + continue; + case 0x2164c: + r8= page[(r5+0)>>>2]; + r7= page[(r5+4)>>>2]; + r5 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r5 = r5 + 4316; + page[(r29+16)>>>2] = r6; + page[(r29+20)>>>2] = r5; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r16+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r2 = 6 << 16; + r2 = r2 + 4428; + page[(r29+36)>>>2] = r2; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x216a0; + pc=0x4b800; + run_4b800(); return; + case 0x216a0: + pc=0x21580; continue; 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 */ + private final void run_21800() throws ExecutionException { /* 0x21800 - 0x22000 */ int addr, tmp; - for (;;) { - switch (pc) { + for(;;) { + switch(pc) { case 0x21800: - 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; - 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) { - case 0x21a00: - 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: - 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 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 0x21c00: - pc = 0x21c00; - return; - 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) { - case 0x21c00: r3 = 6 << 16; - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2= page[(r4+0)>>>2]; 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; + r3 = r3 + 15440; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+20)>>>2] = r17; r18 = r4 + r0; r16 = r5 + r0; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21d3c; + if(r2 == r3) { + pc=0x21950; continue; } r3 = 6 << 16; - r3 = r3 + -26240; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21d74; + r3 = r3 + 15400; + if(r2 == r3) { + pc=0x219bc; continue; } r3 = 6 << 16; - r3 = r3 + -26280; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x21c88; + r3 = r3 + 15360; + if(r2 == r3) { + pc=0x218b8; continue; } - 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]; + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 4428; + r31=0x2186c; + pc=0x1fc00; + run_1f800(); return; + case 0x2186c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + 4456; + r6 = r0 + r0; + r31=0x21888; + pc=0x4b800; + run_4b800(); return; + case 0x21888: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 4484; + case 0x21894: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x21a00; - run_21a00(); - 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; + pc=0x1fc00; + run_1f800(); return; + case 0x218b8: + r18= page[(r4+8)>>>2]; + r2= page[(r5+4)>>>2]; + r17= page[(r18+0)>>>2]; + if(r2 == r0) { + pc=0x21930; continue; } - case 0x21c9c: + case 0x218cc: r18 = r18 + 8; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x21cdc; + if(r17 == r0) { + pc=0x2190c; continue; } - case 0x21ca8: + case 0x218d8: r18 = r18 + 1; - addr = r18 + -1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r18+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - addr = r16 + 8; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r16+8; + tmp= page[(addr)>>>2]; + 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: + r19= page[(r16+0)>>>2]; + r31=0x218f0; + pc=0x1d600; + run_1d000(); return; + case 0x218f0: r2 = r2 ^ r20; r4 = r2 & 255; r17 = r17 + -1; - /* Next insn is delay slot */ - pc = r19; - r31 = 0x21cd4; + pc=r19; + r31=0x21904; return; - case 0x21cd4: - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x21ca8; + case 0x21904: + if(r17 != r0) { + pc=0x218d8; continue; } - 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]; + case 0x2190c: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x21d00: + case 0x21930: r2 = r17 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x21c9c; + if(r2 != r0) { + pc=0x218cc; 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; + r5 = 6 << 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; + r5 = r5 + 1392; + pc=0x21894; + continue; + case 0x21950: + r17= page[(r4+8)>>>2]; + if(r17 == r0) { + pc=0x21a1c; continue; } r2 = r0 + 1; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x21e4c; - run_21e00(); - return; + if(r17 == r2) { + pc=0x21a94; + continue; } 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 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; + if(r17 == r2) { + pc=0x21a48; continue; } - case 0x21d8c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 4428; + r31=0x2198c; + pc=0x1fc00; + run_1f800(); return; + case 0x2198c: + r2= page[(r28+-31512)>>>2]; + r5 = 6 << 16; + r4= page[(r2+12)>>>2]; + r5 = r5 + 4456; + r6 = r17 + r0; + r31=0x219a8; + pc=0x4b800; + run_4b800(); return; + case 0x219a8: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 4464; + pc=0x21894; + continue; + case 0x219bc: + r2= page[(r4+8)>>>2]; + r17= page[(r2+0)>>>2]; + if(r2 == r17) { + pc=0x2190c; + continue; + } + case 0x219d4: r4 = r17 + 8; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x21d9c; - pc = 0x21c00; + r31=0x219e4; + pc=0x21800; 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; + case 0x219e4: + r17= page[(r17+0)>>>2]; + r2= page[(r18+8)>>>2]; + if(r2 != r17) { + pc=0x219d4; 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]; + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x21dd4: - r25 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x21a1c: + r25= page[(r5+0)>>>2]; r4 = r0 + r0; - case 0x21ddc: - 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]; + case 0x21a24: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; - 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) { - case 0x21e00: - r5 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; - r4 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + case 0x21a48: + r5= page[(r4+20)>>>2]; + r4= page[(r4+16)>>>2]; f0 = r5; - r25 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r25= page[(r16+0)>>>2]; 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 + 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 = r2; r4 = f0; - /* Next insn is delay slot */ - pc = 0x21ddc; - run_21c00(); - return; - case 0x21e4c: - 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 0x22000: - pc = 0x22000; - return; - 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) { - case 0x22000: + pc=0x21a24; + continue; + case 0x21a94: + r25= page[(r5+0)>>>2]; + r4= page[(r4+16)>>>2]; + pc=0x21a24; + continue; + case 0x21c00: 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; + r29 = r29 + -56; + r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; + page[(r29+44)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r17; r16 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x22034; + if(r2 == r0) { + pc=0x21c44; continue; } - r5 = 5 << 16; - r4 = r0 + -2; - r5 = r5 + 29728; - /* Next insn is delay slot */ - r31 = 0x22034; - pc = 0x20600; - run_20600(); - return; - case 0x22034: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x21c24: + r31= page[(r29+52)>>>2]; + r17= page[(r29+48)>>>2]; 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; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+44)>>>2]; + r29 = r29 + 56; + 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) { - case 0x22200: + case 0x21c44: + r17 = 6 << 16; + r17 = r17 + 31340; + r2= page[(r17+28)>>>2]; + if(r2 == r0) { + pc=0x21d10; + continue; + } + r2 = 6 << 16; + r6 = 6 << 16; + r2 = r2 + 4176; + r6 = r6 + 4188; + case 0x21c6c: + r3= page[(r17+24)>>>2]; + r5= page[(r28+-32692)>>>2]; + if(r3 != r0) { + pc=0x21d24; + continue; + } + page[(r29+16)>>>2] = r2; + r2= page[(r5+0)>>>2]; + r3= page[(r28+-32672)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r5+4)>>>2]; + r7 = 6 << 16; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r5 = 6 << 16; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r4= page[(r17+32)>>>2]; + page[(r29+32)>>>2] = r2; + r2 = 6 << 16; + r2 = r2 + 5152; + page[(r29+36)>>>2] = r2; + r5 = r5 + 4268; + r7 = r7 + 4308; + r31=0x21ccc; + pc=0x4b800; + run_4b800(); return; + case 0x21ccc: + r3 = 6 << 16; + r3 = r3 + 31320; + r2= page[(r3+8)>>>2]; + r2 = r2 + 1; + page[(r3+8)>>>2] = r2; + r3= page[(r17+20)>>>2]; + r2 = r2 < r3 ? 1 : 0; + if(r2 != r0) { + pc=0x21c24; + continue; + } + r4 = r0 + 1; + r31=0x21d04; + pc=0x12000; + run_12000(); return; + case 0x21d04: + r4 = r2 + r0; + r31=0x21d10; + pc=0x49a00; + run_49800(); return; + case 0x21d10: + r2 = 6 << 16; + r2 = r2 + -4072; + r6 = r2 + r0; + pc=0x21c6c; + continue; + case 0x21d24: + r8= page[(r5+0)>>>2]; + r7= page[(r5+4)>>>2]; + r5 = 6 << 16; + r3= page[(r28+-32672)>>>2]; + r5 = r5 + 4308; + page[(r29+16)>>>2] = r6; + page[(r29+20)>>>2] = r5; + page[(r29+24)>>>2] = r2; + r2= page[(r3+8)>>>2]; + r4= page[(r17+32)>>>2]; + page[(r29+28)>>>2] = r2; + r2= page[(r3+12)>>>2]; + r5 = 6 << 16; + page[(r29+32)>>>2] = r2; + r2 = 6 << 16; + r2 = r2 + 5152; + page[(r29+36)>>>2] = r2; + r5 = r5 + 4220; + r6 = r8 + r0; + r31=0x21d78; + pc=0x4b800; + run_4b800(); return; + case 0x21d78: + pc=0x21ccc; + continue; + case 0x21e00: 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; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x22240; + if(r2 != r0) { + pc=0x21e40; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29696; - /* Next insn is delay slot */ - r31 = 0x22240; - pc = 0x20600; - run_20600(); - return; - case 0x22240: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r5 = r5 + 5120; + r31=0x21e40; + pc=0x1fc00; + run_1f800(); return; + case 0x21e40: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22250; + pc=r2; + r31=0x21e50; return; - case 0x22250: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x21e50: + r31= page[(r29+20)>>>2]; r4 = r16 + r0; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; - case 0x22400: - pc = 0x22400; + case 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_22400() throws ExecutionException { /* 0x22400 - 0x22600 */ + private final void run_22000() throws ExecutionException { /* 0x22000 - 0x22800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x22400: + for(;;) { + switch(pc) { + case 0x22000: 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; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x22440; + if(r2 != r0) { + pc=0x22040; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5120; + r31=0x22040; + pc=0x1fc00; + run_1f800(); return; + case 0x22040: + r2= page[(r28+-31264)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22450; + pc=r2; + r31=0x22050; return; - case 0x22450: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x22050: + r31= page[(r29+20)>>>2]; r4 = r16 >> 8; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + 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: + case 0x22200: 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; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2263c; + if(r2 != r0) { + pc=0x2223c; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29664; - /* Next insn is delay slot */ - r31 = 0x2263c; - pc = 0x20600; - run_20600(); - return; - case 0x2263c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r5 = r5 + 5088; + r31=0x2223c; + pc=0x1fc00; + run_1f800(); return; + case 0x2223c: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 16; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2264c; + pc=r2; + r31=0x2224c; return; - case 0x2264c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2224c: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2265c; + pc=r2; + r31=0x2225c; return; - case 0x2265c: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x2225c: + r31= page[(r29+20)>>>2]; r4 = r16 + r0; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + 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: + case 0x22400: 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; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2283c; + if(r2 != r0) { + pc=0x2243c; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5088; + r31=0x2243c; + pc=0x1fc00; + run_1f800(); return; + case 0x2243c: + r2= page[(r28+-31264)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2284c; + pc=r2; + r31=0x2244c; return; - case 0x2284c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2244c: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2285c; + pc=r2; + r31=0x2245c; return; - case 0x2285c: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x2245c: + r31= page[(r29+20)>>>2]; r4 = r16 >> 16; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + 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: + case 0x22600: 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; + r2= page[(r28+-31264)>>>2]; + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; r16 = r4 + r0; r4 = r4 >> 24; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22a20; + pc=r2; + r31=0x22620; return; - case 0x22a20: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x22620: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 16; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22a30; + pc=r2; + r31=0x22630; return; - case 0x22a30: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x22630: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22a40; + pc=r2; + r31=0x22640; return; - case 0x22a40: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x22640: + r31= page[(r29+20)>>>2]; r4 = r16 + r0; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; - case 0x22c00: - pc = 0x22c00; + case 0x22800: + pc=0x22800; 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_22c00() throws ExecutionException { /* 0x22c00 - 0x22e00 */ + private final void run_22800() throws ExecutionException { /* 0x22800 - 0x23000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x22c00: + for(;;) { + switch(pc) { + case 0x22800: 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; + r2= page[(r28+-31264)>>>2]; + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; r16 = r4 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22c1c; + pc=r2; + r31=0x2281c; return; - case 0x22c1c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2281c: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22c2c; + pc=r2; + r31=0x2282c; return; - case 0x22c2c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2282c: + r2= page[(r28+-31264)>>>2]; r4 = r16 >> 16; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x22c3c; + pc=r2; + r31=0x2283c; return; - case 0x22c3c: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x2283c: + r31= page[(r29+20)>>>2]; r4 = r16 >> 24; - r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r25= page[(r28+-31264)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r25; + 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]; + case 0x22a00: + r2= page[(r28+-31340)>>>2]; r29 = r29 + -80; - r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r17; + r3= page[(r28+-32692)>>>2]; + page[(r29+56)>>>2] = 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; + r4= page[(r2+4)>>>2]; + page[(r29+76)>>>2] = r31; + page[(r29+72)>>>2] = r21; + page[(r29+68)>>>2] = r20; + page[(r29+64)>>>2] = r19; + page[(r29+60)>>>2] = r18; + page[(r29+52)>>>2] = r16; + if(r4 == r3) { + pc=0x22acc; 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: + r6= page[(r3+0)>>>2]; + r4= page[(r2+0)>>>2]; + r5 = 6 << 16; + r5 = r5 + 5320; + r31=0x22a50; + pc=0x4b800; + run_4b800(); return; + case 0x22a50: + r2= page[(r28+-31340)>>>2]; + r3= page[(r28+-32692)>>>2]; + page[(r2+8)>>>2] = r0; + page[(r2+4)>>>2] = r3; + addr=r28+-31336; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x22a64: r3 = r0 + 10; - if (r17 == r3) { - /* Next insn is delay slot */ - pc = 0x22ea0; + if(r17 == r3) { + pc=0x22aa0; continue; } r3 = r0 + 13; - if (r17 == r3) { - /* Next insn is delay slot */ - pc = 0x22ea0; + if(r17 == r3) { + pc=0x22aa0; 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; + r3= page[(r2+8)>>>2]; + r4 = (r3&0xffffffffL) < (1024&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x22aa0; continue; } r4 = r3 + 1; - writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + page[(r2+8)>>>2] = 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]; + addr=r2+20; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x22aa0: + r31= page[(r29+76)>>>2]; + r21= page[(r29+72)>>>2]; + r20= page[(r29+68)>>>2]; + r19= page[(r29+64)>>>2]; + r18= page[(r29+60)>>>2]; + r16= page[(r29+52)>>>2]; + addr=r28+-31336; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r17= page[(r29+56)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x22acc: + addr=r28+-31336; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; r3 = r0 + 10; - if (r5 != r3) { - /* Next insn is delay slot */ - pc = 0x22e64; + if(r5 != r3) { + pc=0x22a64; 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= page[(r4+4)>>>2]; + r5 = 6 << 16; + r4= page[(r2+0)>>>2]; + r5 = r5 + 5344; 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; + r31=0x22af8; + pc=0x4b800; + run_4b800(); return; + case 0x22af8: + r2= page[(r28+-31340)>>>2]; + r3= page[(r2+12)>>>2]; + if(r3 != r0) { + pc=0x22b8c; 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; + addr=r29+36; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+16; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r21 = r29 + 36; r20 = r29 + 16; - case 0x22f20: - r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - r5 = 5 << 16; + case 0x22b20: + r4= page[(r2+0)>>>2]; + r5 = 6 << 16; r6 = r21 + r0; - r5 = r5 + 29944; + r5 = r5 + 5368; 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]; + r31=0x22b3c; + pc=0x4b800; + run_4b800(); return; + case 0x22b3c: + r6= page[(r28+-31340)>>>2]; 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; + r2= page[(r6+8)>>>2]; + if(r2 == r3) { + pc=0x22c24; + continue; } - case 0x22f54: + case 0x22b54: 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; + r4= page[(r6+0)>>>2]; + r5 = 6 << 16; + addr=r2+20; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r5 = r5 + 5340; 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; + r31=0x22b74; + pc=0x4b800; + run_4b800(); return; + case 0x22b74: + r2= page[(r28+-31340)>>>2]; + page[(r2+8)>>>2] = r0; + page[(r2+12)>>>2] = r0; + pc=0x22a64; continue; - case 0x22f8c: + case 0x22b8c: r21 = r29 + 36; - r5 = 5 << 16; - r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r6= page[(r2+16)>>>2]; 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]; + r5 = r5 + 5352; + r31=0x22ba8; + pc=0x50c00; + run_50800(); return; + case 0x22ba8: + r2= page[(r28+-31340)>>>2]; 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; + r3= page[(r2+12)>>>2]; + addr=r29+16; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r3 == r0) { + pc=0x22b20; 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; + r18 = r20 + r0; + r16 = r0 + r0; + r19 = r19 + 5360; + case 0x22bd0: + r2 = r2 + r16; + addr=r2+1044; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r4 = r18 + r0; + r5 = r19 + r0; + r31=0x22be8; + pc=0x50c00; + run_50800(); return; + case 0x22be8: + r2= page[(r28+-31340)>>>2]; + r16 = r16 + 1; + r3= page[(r2+12)>>>2]; + r18 = r18 + 2; + r4 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if(r4 != r0) { + pc=0x22bd0; 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; + r4 = r0 + 9; + if(r3 != r4) { + pc=0x22b20; 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; + r3 = 11822 << 16; + r3 = r3 + 11776; + page[(r29+32)>>>2] = r3; + pc=0x22b20; continue; - case 0x23cc0: - r5 = 5 << 16; + case 0x22c24: + r2 = r0 + 1023; + page[(r6+8)>>>2] = r2; + pc=0x22b54; + continue; + case 0x22e00: + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 1; + page[(r2+0)>>>2] = r4; + page[(r2+4)>>>2] = r3; + page[(r2+8)>>>2] = r0; + page[(r2+12)>>>2] = r0; + page[(r2+16)>>>2] = r5; + pc=r31; + return; + case 0x23000: + pc=0x23000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_23000() throws ExecutionException { /* 0x23000 - 0x23800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x23000: + r3= page[(r28+-32692)>>>2]; + r29 = r29 + -48; + r5= page[(r3+8)>>>2]; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + if(r5 == r0) { + pc=0x230c0; + continue; + } + r2 = r0 + 1; + if(r5 == r2) { + pc=0x2309c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 5440; + r31=0x2304c; + pc=0x21400; + run_21000(); return; + case 0x2304c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + case 0x23050: + r3 = r0 + 10; + if(r2 != r3) { + pc=0x23074; + continue; + } + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + 1; + page[(r3+4)>>>2] = r4; + case 0x23074: + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 48; + pc=r31; + return; + case 0x2309c: + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x230c0: + r20 = 6 << 16; + r4 = 6 << 16; + r5= page[(r3+12)>>>2]; + r20 = r20 + 5832; + r19 = r4 + 5420; + r17 = r0 + -1; + r18 = r0 + 13; + r16 = r0 + 10; + case 0x230e0: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x23500; + continue; + } + case 0x230ec: + r5 = r5 << 2; + r5 = r20 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x23104: + if(r2 == r17) { + pc=0x23210; + continue; + } + if(r2 == r18) { + pc=0x23210; + continue; + } + if(r2 == r16) { + pc=0x23210; + continue; + } + r3= page[(r28+-32692)>>>2]; + case 0x23124: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x234e8; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23160: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23104; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23188; + pc=0x22a00; + run_22800(); return; + case 0x23188: + r2= page[(r28+-31332)>>>2]; + pc=0x23104; + continue; + case 0x23194: + r4= page[(r3+16)>>>2]; + r19 = r0 + 9; + r2= page[(r4+4)>>>2]; + r21 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x234d0; + continue; + } + case 0x231b4: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x231d0: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23200; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x231f8; + pc=0x22a00; + run_22800(); return; + case 0x231f8: + r2= page[(r28+-31332)>>>2]; + case 0x23200: + if(r2 == r19) { + pc=0x234a8; + continue; + } + if(r2 == r21) { + pc=0x234a8; + continue; + } + case 0x23210: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x230ec; + continue; + case 0x23228: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2356c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23264: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x235e0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x2328c; + pc=0x22a00; + run_22800(); return; + case 0x2328c: + r3= page[(r28+-32692)>>>2]; + case 0x23290: + r2= page[(r28+-31332)>>>2]; + case 0x23294: + r4 = r0 + 1; + page[(r3+12)>>>2] = r4; + r4 = r0 + -1; + if(r2 == r4) { + pc=0x235c8; + continue; + } + r5 = 6 << 16; + r4 = r2 & 255; + r5 = r5 + 4764; + r4 = r4 + r5; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x235b4; + continue; + } + r4 = r0 + 32; + if(r2 == r4) { + pc=0x236a4; + continue; + } + r4 = r2 < 33 ? 1 : 0; + if(r4 != r0) { + pc=0x23520; + continue; + } + r4 = r0 + 58; + if(r2 == r4) { + pc=0x236ec; + continue; + } + r4 = r2 < 59 ? 1 : 0; + if(r4 != r0) { + pc=0x235ec; + continue; + } + r4 = r0 + 59; + if(r2 == r4) { + pc=0x2368c; + continue; + } + r4 = r0 + 125; + if(r2 != r4) { + pc=0x23544; + continue; + } + r2 = r0 + 8; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x2332c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2359c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23368: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23394; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23390; + pc=0x22a00; + run_22800(); return; + case 0x23390: + r2= page[(r28+-31332)>>>2]; + case 0x23394: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x23210; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + page[(r2+12)>>>2] = r3; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x233bc: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x233d4: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x233ec: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23584; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23428: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23458; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23450; + pc=0x22a00; + run_22800(); return; + case 0x23450: + r2= page[(r28+-31332)>>>2]; + case 0x23458: + if(r2 != r16) { + pc=0x23210; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x230ec; + continue; + case 0x23478: + r2 = r0 + 6; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x23490: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x234a8: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x231b4; + continue; + } + case 0x234d0: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x234e0; + pc=0x50a00; + run_50800(); return; + case 0x234e0: + pc=0x231d0; + continue; + case 0x234e8: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x234f8; + pc=0x50a00; + run_50800(); return; + case 0x234f8: + pc=0x23160; + continue; + case 0x23500: + r4 = r19 + r0; + r31=0x2350c; + pc=0x21400; + run_21000(); return; + case 0x2350c: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x230e0; + continue; + case 0x23520: + r4 = r0 + 10; + if(r2 == r4) { + pc=0x236d4; + continue; + } + r4 = r0 + 13; + if(r2 == r4) { + pc=0x236bc; + continue; + } + r4 = r0 + 9; + if(r2 == r4) { + pc=0x236a4; + continue; + } + case 0x23544: + r5 = 6 << 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 */ + r5 = r5 + 5380; + r31=0x23558; + pc=0x1fc00; + run_1f800(); return; + case 0x23558: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - r29 = r29 + -24; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x23e2c; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x2356c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2357c; + pc=0x50a00; + run_50800(); return; + case 0x2357c: + pc=0x23264; + continue; + case 0x23584: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23594; + pc=0x50a00; + run_50800(); return; + case 0x23594: + pc=0x23428; + continue; + case 0x2359c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x235ac; + pc=0x50a00; + run_50800(); return; + case 0x235ac: + pc=0x23368; + continue; + case 0x235b4: + r2 = r2 << 24; + r2 = r2 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x235c8: + r2 = r0 + 9; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x235e0: + r3= page[(r28+-32692)>>>2]; + pc=0x23294; + continue; + case 0x235ec: + r4 = r0 + 47; + if(r2 != r4) { + pc=0x23544; 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; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x236fc; 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; + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23634: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23660; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x2365c; + pc=0x22a00; + run_22800(); return; + case 0x2365c: + r2= page[(r28+-31332)>>>2]; + case 0x23660: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x23688; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + page[(r2+12)>>>2] = r3; + r2 = r0 + 47; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x23688: + r3= page[(r28+-32692)>>>2]; + case 0x2368c: + r2 = r0 + 7; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x236a4: + r2 = r0 + 3; + page[(r3+12)>>>2] = r2; r2 = r0 + 32; - writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r31; - if (r7 == r2) { - /* Next insn is delay slot */ - pc = 0x2409c; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x236bc: + r2 = r0 + 5; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x236d4: + r2 = r0 + 4; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x236ec: + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23050; + continue; + case 0x236fc: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2370c; + pc=0x50a00; + run_50800(); return; + case 0x2370c: + pc=0x23634; + continue; + case 0x23800: + pc=0x23800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_23800() throws ExecutionException { /* 0x23800 - 0x24000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x23800: + r29 = r29 + -56; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + page[(r29+48)>>>2] = r30; + page[(r29+36)>>>2] = r21; + r30 = 6 << 16; + r21 = 6 << 16; + page[(r29+44)>>>2] = r23; + page[(r29+40)>>>2] = r22; + page[(r29+52)>>>2] = r31; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + r21 = r21 + 5872; + r30 = r30 + 5420; + r23 = 6 << 16; + r22 = 6 << 16; + case 0x23848: + if(r2 == r0) { + pc=0x238bc; continue; } - case 0x24018: - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x24080; + case 0x23850: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x23908; + continue; + } + r2 = r0 + 1; + if(r5 != r2) { + pc=0x238f0; + continue; + } + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x23890: + r3 = r0 + 10; + if(r2 != r3) { + pc=0x23848; + continue; + } + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + 1; + page[(r3+4)>>>2] = r4; + if(r2 != r0) { + pc=0x23850; + continue; + } + case 0x238bc: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x238f0: + r4 = r22 + 5440; + r31=0x238fc; + pc=0x21400; + run_21000(); return; + case 0x238fc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x23890; + continue; + case 0x23908: + r5= page[(r3+12)>>>2]; + r17 = r0 + -1; + r18 = r0 + 13; + r16 = r0 + 10; + case 0x23918: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x23d38; + continue; + } + case 0x23924: + r5 = r5 << 2; + r5 = r21 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x2393c: + if(r2 == r17) { + pc=0x239d0; + continue; + } + case 0x23944: + if(r2 == r18) { + pc=0x239d0; + continue; + } + if(r2 == r16) { + pc=0x239d0; + continue; + } + r3= page[(r28+-32692)>>>2]; + case 0x2395c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23d20; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23998: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x2393c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x239c0; + pc=0x22a00; + run_22800(); return; + case 0x239c0: + r2= page[(r28+-31332)>>>2]; + if(r2 != r17) { + pc=0x23944; + continue; + } + case 0x239d0: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x23924; + continue; + case 0x239e8: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23e84; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23a24: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23ecc; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23a4c; + pc=0x22a00; + run_22800(); return; + case 0x23a4c: + r3= page[(r28+-32692)>>>2]; + case 0x23a50: + r2= page[(r28+-31332)>>>2]; + case 0x23a54: + r4 = r0 + 1; + page[(r3+12)>>>2] = r4; + r4 = r0 + -1; + if(r2 == r4) { + pc=0x23db8; + continue; + } + r4 = r2 & 255; + r5 = r23 + 4764; + r4 = r4 + r5; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x23da4; + continue; + } + r4 = r0 + 32; + if(r2 == r4) { + pc=0x23f0c; + continue; + } + r4 = r2 < 33 ? 1 : 0; + if(r4 != r0) { + pc=0x23d58; + continue; + } + r4 = r0 + 58; + if(r2 == r4) { + pc=0x23f24; + continue; + } + r4 = r2 < 59 ? 1 : 0; + if(r4 != r0) { + pc=0x23dd0; + continue; + } + r4 = r0 + 59; + if(r2 == r4) { + pc=0x23edc; + continue; + } + r4 = r0 + 125; + if(r2 != r4) { + pc=0x23d7c; + continue; + } + r2 = r0 + 8; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23ae8: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23e6c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23b24: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23b54; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23b4c; + pc=0x22a00; + run_22800(); return; + case 0x23b4c: + r2= page[(r28+-31332)>>>2]; + case 0x23b54: + if(r2 != r16) { + pc=0x239d0; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x23924; + continue; + case 0x23b74: + r2 = r0 + 6; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23b8c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23ba4: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23bbc: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23bd4: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23e9c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23c10: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23c3c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23c38; + pc=0x22a00; + run_22800(); return; + case 0x23c38: + r2= page[(r28+-31332)>>>2]; + case 0x23c3c: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x239d0; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + page[(r2+12)>>>2] = r3; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23c64: + r4= page[(r3+16)>>>2]; + r19 = r0 + 9; + r2= page[(r4+4)>>>2]; + r20 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23d08; + continue; + } + case 0x23c84: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23ca0: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23cd0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23cc8; + pc=0x22a00; + run_22800(); return; + case 0x23cc8: + r2= page[(r28+-31332)>>>2]; + case 0x23cd0: + if(r2 == r19) { + pc=0x23ce0; + continue; + } + if(r2 != r20) { + pc=0x239d0; + continue; + } + case 0x23ce0: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x23c84; + continue; + } + case 0x23d08: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23d18; + pc=0x50a00; + run_50800(); return; + case 0x23d18: + pc=0x23ca0; + continue; + case 0x23d20: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23d30; + pc=0x50a00; + run_50800(); return; + case 0x23d30: + pc=0x23998; + continue; + case 0x23d38: + r4 = r30 + r0; + r31=0x23d44; + pc=0x21400; + run_21000(); return; + case 0x23d44: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x23918; + continue; + case 0x23d58: + r4 = r0 + 10; + if(r2 == r4) { + pc=0x23eb4; + continue; + } + r4 = r0 + 13; + if(r2 == r4) { + pc=0x23ef4; + continue; + } + r4 = r0 + 9; + if(r2 == r4) { + pc=0x23f0c; + continue; + } + case 0x23d7c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5380; + r31=0x23d90; + pc=0x1fc00; + run_1f800(); return; + case 0x23d90: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23da4: + r2 = r2 << 24; + r2 = r2 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23db8: + r2 = r0 + 9; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23dd0: + r4 = r0 + 47; + if(r2 != r4) { + pc=0x23d7c; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x23f34; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x23e18: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x23e44; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x23e40; + pc=0x22a00; + run_22800(); return; + case 0x23e40: + r2= page[(r28+-31332)>>>2]; + case 0x23e44: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x23ed8; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + page[(r2+12)>>>2] = r3; + r2 = r0 + 47; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23e6c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23e7c; + pc=0x50a00; + run_50800(); return; + case 0x23e7c: + pc=0x23b24; + continue; + case 0x23e84: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23e94; + pc=0x50a00; + run_50800(); return; + case 0x23e94: + pc=0x23a24; + continue; + case 0x23e9c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23eac; + pc=0x50a00; + run_50800(); return; + case 0x23eac: + pc=0x23c10; + continue; + case 0x23eb4: + r2 = r0 + 4; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23ecc: + r3= page[(r28+-32692)>>>2]; + pc=0x23a54; + continue; + case 0x23ed8: + r3= page[(r28+-32692)>>>2]; + case 0x23edc: + r2 = r0 + 7; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23ef4: + r2 = r0 + 5; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23f0c: + r2 = r0 + 3; + page[(r3+12)>>>2] = r2; + r2 = r0 + 32; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23f24: + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x23890; + continue; + case 0x23f34: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x23f44; + pc=0x50a00; + run_50800(); return; + case 0x23f44: + pc=0x23e18; + continue; + case 0x24000: + pc=0x24000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_24000() throws ExecutionException { /* 0x24000 - 0x24800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x24000: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r7 = tmp; + r29 = r29 + -144; + r2 = r0 + 32; + page[(r29+140)>>>2] = r31; + page[(r29+136)>>>2] = r30; + page[(r29+132)>>>2] = r23; + page[(r29+128)>>>2] = r22; + page[(r29+124)>>>2] = r21; + page[(r29+120)>>>2] = r20; + page[(r29+116)>>>2] = r19; + page[(r29+112)>>>2] = r18; + page[(r29+108)>>>2] = r17; + page[(r29+104)>>>2] = r16; + if(r7 == r2) { + pc=0x245a8; + continue; + } + case 0x2403c: + if(r7 == r0) { + pc=0x2410c; continue; } r2 = r0 + 39; - if (r7 == r2) { - /* Next insn is delay slot */ - pc = 0x24090; + if(r7 == r2) { + pc=0x2459c; continue; } r6 = r0 + 39; - case 0x24030: - r5 = 5 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + case 0x24054: + r5 = 6 << 16; + page[(r29+16)>>>2] = r6; r4 = r29 + 24; - r5 = r5 + 30032; - /* Next insn is delay slot */ - r31 = 0x24048; - pc = 0x47400; - run_47400(); - return; - case 0x24048: + r5 = r5 + 5456; + r31=0x2406c; + pc=0x50c00; + run_50800(); return; + case 0x2406c: 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 */ + r31=0x2407c; + pc=0x1fc00; + run_1f800(); return; + case 0x2407c: + r21 = 6 << 16; + r30 = 6 << 16; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x24080; + r21 = r21 + 5912; + r30 = r30 + 5420; + r23 = 6 << 16; + r22 = 6 << 16; + case 0x24098: + if(r2 == r0) { + pc=0x2410c; 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; + case 0x240a0: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x24158; continue; } - case 0x24080: - r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; - r29 = r29 + 112; - /* Next insn is delay slot */ - pc = r31; + r2 = r0 + 1; + if(r5 != r2) { + pc=0x24140; + continue; + } + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x240e0: + r3 = r0 + 10; + if(r2 != r3) { + pc=0x24098; + continue; + } + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + 1; + page[(r3+4)>>>2] = r4; + if(r2 != r0) { + pc=0x240a0; + continue; + } + case 0x2410c: + r31= page[(r29+140)>>>2]; + r30= page[(r29+136)>>>2]; + r23= page[(r29+132)>>>2]; + r22= page[(r29+128)>>>2]; + r21= page[(r29+124)>>>2]; + r20= page[(r29+120)>>>2]; + r19= page[(r29+116)>>>2]; + r18= page[(r29+112)>>>2]; + r17= page[(r29+108)>>>2]; + r16= page[(r29+104)>>>2]; + r29 = r29 + 144; + pc=r31; return; - case 0x24090: + case 0x24140: + r4 = r22 + 5440; + r31=0x2414c; + pc=0x21400; + run_21000(); return; + case 0x2414c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x240e0; + continue; + case 0x24158: + r5= page[(r3+12)>>>2]; + r17 = r0 + -1; + r18 = r0 + 13; + r16 = r0 + 10; + case 0x24168: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x24568; + continue; + } + case 0x24174: + r5 = r5 << 2; + r5 = r21 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x2418c: + if(r2 == r17) { + pc=0x24434; + continue; + } + if(r2 == r18) { + pc=0x24434; + continue; + } + if(r2 == r16) { + pc=0x24434; + continue; + } + r3= page[(r28+-32692)>>>2]; + case 0x241ac: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x24550; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x241e8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x2418c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x24210; + pc=0x22a00; + run_22800(); return; + case 0x24210: + r2= page[(r28+-31332)>>>2]; + pc=0x2418c; + continue; + case 0x2421c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x246fc; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x24258: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x24620; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x24280; + pc=0x22a00; + run_22800(); return; + case 0x24280: + r3= page[(r28+-32692)>>>2]; + case 0x24284: + r2= page[(r28+-31332)>>>2]; + case 0x24288: + r4 = r0 + 1; + page[(r3+12)>>>2] = r4; + r4 = r0 + -1; + if(r2 == r4) { + pc=0x24608; + continue; + } + r4 = r2 & 255; + r5 = r23 + 4764; + r4 = r4 + r5; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x24588; + continue; + } + r4 = r0 + 32; + if(r2 == r4) { + pc=0x24744; + continue; + } + r4 = r2 < 33 ? 1 : 0; + if(r4 != r0) { + pc=0x245bc; + continue; + } + r4 = r0 + 58; + if(r2 == r4) { + pc=0x24774; + continue; + } + r4 = r2 < 59 ? 1 : 0; + if(r4 != r0) { + pc=0x2462c; + continue; + } + r4 = r0 + 59; + if(r2 == r4) { + pc=0x246e4; + continue; + } + r4 = r0 + 125; + if(r2 != r4) { + pc=0x245e0; + continue; + } + r2 = r0 + 8; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x2431c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2472c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x24358: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x24388; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x24380; + pc=0x22a00; + run_22800(); return; + case 0x24380: + r2= page[(r28+-31332)>>>2]; + case 0x24388: + if(r2 != r16) { + pc=0x24434; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x24174; + continue; + case 0x243a8: + r2 = r0 + 6; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x243c0: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x24714; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x243fc: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x24428; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x24424; + pc=0x22a00; + run_22800(); return; + case 0x24424: + r2= page[(r28+-31332)>>>2]; + case 0x24428: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x24784; + continue; + } + case 0x24434: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x24174; + continue; + case 0x2444c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24464: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x2447c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24494: + r4= page[(r3+16)>>>2]; + r19 = r0 + 9; + r2= page[(r4+4)>>>2]; + r20 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x24538; + continue; + } + case 0x244b4: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x244d0: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x24500; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x244f8; + pc=0x22a00; + run_22800(); return; + case 0x244f8: + r2= page[(r28+-31332)>>>2]; + case 0x24500: + if(r2 == r19) { + pc=0x24510; + continue; + } + if(r2 != r20) { + pc=0x24434; + continue; + } + case 0x24510: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x244b4; + continue; + } + case 0x24538: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x24548; + pc=0x50a00; + run_50800(); return; + case 0x24548: + pc=0x244d0; + continue; + case 0x24550: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x24560; + pc=0x50a00; + run_50800(); return; + case 0x24560: + pc=0x241e8; + continue; + case 0x24568: + r4 = r30 + r0; + r31=0x24574; + pc=0x21400; + run_21000(); return; + case 0x24574: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x24168; + continue; + case 0x24588: + r2 = r2 << 24; + r2 = r2 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x2459c: r6 = r0 + 34; - /* Next insn is delay slot */ - pc = 0x24030; + pc=0x24054; 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 */ + case 0x245a8: + r31=0x245b0; + pc=0x23000; + run_23000(); return; + case 0x245b0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r7 = tmp; - /* Next insn is delay slot */ - pc = 0x24018; + pc=0x2403c; continue; - case 0x24200: - pc = 0x24200; + case 0x245bc: + r4 = r0 + 10; + if(r2 == r4) { + pc=0x2475c; + continue; + } + r4 = r0 + 13; + if(r2 == r4) { + pc=0x246c8; + continue; + } + r4 = r0 + 9; + if(r2 == r4) { + pc=0x24744; + continue; + } + case 0x245e0: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5380; + r31=0x245f4; + pc=0x1fc00; + run_1f800(); return; + case 0x245f4: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24608: + r2 = r0 + 9; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24620: + r3= page[(r28+-32692)>>>2]; + pc=0x24288; + continue; + case 0x2462c: + r4 = r0 + 47; + if(r2 != r4) { + pc=0x245e0; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x247a0; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x24674: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x246a0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x2469c; + pc=0x22a00; + run_22800(); return; + case 0x2469c: + r2= page[(r28+-31332)>>>2]; + case 0x246a0: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x246e0; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + page[(r2+12)>>>2] = r3; + r2 = r0 + 47; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x246c8: + r2 = r0 + 5; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x246e0: + r3= page[(r28+-32692)>>>2]; + case 0x246e4: + r2 = r0 + 7; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x246fc: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2470c; + pc=0x50a00; + run_50800(); return; + case 0x2470c: + pc=0x24258; + continue; + case 0x24714: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x24724; + pc=0x50a00; + run_50800(); return; + case 0x24724: + pc=0x243fc; + continue; + case 0x2472c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2473c; + pc=0x50a00; + run_50800(); return; + case 0x2473c: + pc=0x24358; + continue; + case 0x24744: + r2 = r0 + 3; + page[(r3+12)>>>2] = r2; + r2 = r0 + 32; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x2475c: + r2 = r0 + 4; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24774: + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x24784: + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + page[(r2+12)>>>2] = r3; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x240e0; + continue; + case 0x247a0: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x247b0; + pc=0x50a00; + run_50800(); return; + case 0x247b0: + pc=0x24674; + continue; + case 0x24800: + pc=0x24800; 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_24200() throws ExecutionException { /* 0x24200 - 0x24400 */ + private final void run_24800() throws ExecutionException { /* 0x24800 - 0x25000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x24200: - r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x24800: + r2= page[(r28+-32692)>>>2]; r29 = r29 + -56; - r5 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r5= page[(r2+8)>>>2]; + page[(r29+20)>>>2] = 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; + page[(r29+44)>>>2] = r23; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + r19 = 6 << 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; + r20 = 6 << 16; + r23 = r17 + 17104; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+16)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; r18 = r18 >> 24; r16 = r0 + r0; - r19 = r19 + 30088; - r20 = r20 + 30016; + r19 = r19 + 5512; + r20 = r20 + 5440; r22 = 6 << 16; r21 = r23 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x242f8; + if(r5 == r0) { + pc=0x248f4; continue; } - case 0x24268: + case 0x24868: 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; + if(r5 != r3) { + pc=0x24a30; continue; } - case 0x24298: - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x24404; - run_24400(); - return; + r3= page[(r2+16)>>>2]; + r4 = r3 + 1; + page[(r2+16)>>>2] = r4; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x249a8; + continue; } - if (r2 == r18) { - /* Next insn is delay slot */ - pc = 0x244fc; - run_24400(); - return; + case 0x24898: + if(r16 != r0) { + pc=0x24a00; + continue; + } + if(r2 == r18) { + pc=0x24afc; + continue; } 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; + if(r2 == r3) { + pc=0x24a54; 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; + case 0x248b4: + r3= page[(r23+4)>>>2]; + r4= page[(r23+8)>>>2]; + if(r3 == r4) { + pc=0x24a14; + continue; } - r3 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x248c8: + r4= page[(r17+17104)>>>2]; + r5 = r3 + 1; + r3 = r4 + r3; + page[(r23+4)>>>2] = r5; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r28+-32692)>>>2]; + r5= page[(r2+8)>>>2]; + if(r5 != r0) { + pc=0x24868; + continue; + } + case 0x248f4: + r4= page[(r2+16)>>>2]; + r3= page[(r4+4)>>>2]; + r3 = r3 + -1; + page[(r4+4)>>>2] = r3; + if(r3 < 0) { + pc=0x24ae0; + continue; + } + r3= page[(r2+16)>>>2]; + r2= page[(r3+0)>>>2]; 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; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + 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; + case 0x24930: + r2= page[(r28+-31340)>>>2]; + r2= page[(r2+0)>>>2]; + if(r2 == r0) { + pc=0x24958; continue; } r4 = r30 << 24; r4 = r4 >> 24; - /* Next insn is delay slot */ - r31 = 0x2435c; - pc = 0x22e00; - run_22e00(); - return; - case 0x2435c: + r31=0x24958; + pc=0x22a00; + run_22800(); return; + case 0x24958: r2 = r0 + 10; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x2439c; + if(r30 == r2) { + pc=0x24998; continue; } r2 = r0 + 13; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x244a8; - run_24400(); - return; + if(r30 == r2) { + pc=0x24aa8; + continue; } r2 = r0 + -1; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x24470; - run_24400(); - return; + if(r30 == r2) { + pc=0x24a70; + continue; } 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; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x24898; continue; } - /* Next insn is delay slot */ - pc = 0x243ac; + pc=0x249a8; continue; - case 0x2439c: - r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + case 0x24998: + r2= page[(r28+-32692)>>>2]; 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: + page[(r2+12)>>>2] = r3; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x249a8: 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 */ + r31=0x249b8; + pc=0x1fc00; + run_1f800(); return; + case 0x249b8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x24298; + if(r2 != r0) { + pc=0x24898; continue; } - case 0x243cc: + case 0x249c8: 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]; + case 0x249cc: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x24a00: + r3= page[(r23+4)>>>2]; + r4= page[(r23+8)>>>2]; r16 = r0 + r0; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x242c8; - run_24200(); - return; + if(r3 != r4) { + pc=0x248c8; + continue; } - case 0x24418: + case 0x24a14: 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: + r31=0x24a20; + pc=0x1c000; + run_1c000(); return; + case 0x24a20: + r3= page[(r21+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x248c8; + continue; + case 0x24a30: 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 */ + r31=0x24a3c; + pc=0x21400; + run_21000(); return; + case 0x24a3c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x24298; - run_24200(); - return; + if(r2 != r0) { + pc=0x24898; + continue; } - /* 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; + pc=0x249a8; + continue; + case 0x24a54: + r3 = r22 + 31340; + r16= page[(r3+52)>>>2]; + 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]; + pc=0x248b4; + continue; + case 0x24a70: + r2= page[(r28+-32692)>>>2]; r3 = r0 + 9; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + page[(r2+12)>>>2] = 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x24a90; + pc=0x1fc00; + run_1f800(); return; + case 0x24a90: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x24298; - run_24200(); - return; + if(r2 != r0) { + pc=0x24898; + continue; } - /* Next insn is delay slot */ - pc = 0x243cc; - run_24200(); - return; - case 0x244a8: - r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + pc=0x249c8; + continue; + case 0x24aa8: + r2= page[(r28+-32692)>>>2]; r3 = r0 + 5; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + page[(r2+12)>>>2] = 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x24ac8; + pc=0x1fc00; + run_1f800(); return; + case 0x24ac8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x24298; - run_24200(); - return; + if(r2 != r0) { + pc=0x24898; + continue; } - /* 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: + pc=0x249c8; + continue; + case 0x24ae0: + r4= page[(r28+-31512)>>>2]; + r5= page[(r2+16)>>>2]; + r31=0x24af0; + pc=0x50a00; + run_50800(); return; + case 0x24af0: r30 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x24334; - run_24200(); - return; - case 0x244fc: + pc=0x24930; + continue; + case 0x24afc: 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: + pc=0x249cc; + continue; + case 0x24c00: 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; + r2= page[(r2+31392)>>>2]; + r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x24dd0; continue; } r29 = r29 + -56; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + page[(r29+28)>>>2] = 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; + page[(r29+32)>>>2] = r20; + r20 = r19 + 17104; + page[(r29+20)>>>2] = r17; + r5 = 6 << 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; + r4= page[(r20+4)>>>2]; + page[(r29+48)>>>2] = r30; + page[(r29+44)>>>2] = r23; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+24)>>>2] = r18; + page[(r29+52)>>>2] = r31; + page[(r29+16)>>>2] = r16; r18 = r17 + r0; r6 = r0 + r0; r21 = r0 + 92; - r30 = r5 + 30124; + r30 = r5 + 5548; r22 = r0 + 114; r23 = r0 + 116; - case 0x24670: + case 0x24c70: r2 = ((r17 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r3 = r17 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x24704; + if(r2 == r0) { + pc=0x24d04; continue; } - case 0x24680: - r2 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; + case 0x24c80: + r2= page[(r19+17104)>>>2]; 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 */ + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r16 = tmp; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x24754; + if(r6 == r0) { + pc=0x24d54; continue; } - if (r16 == r21) { - /* Next insn is delay slot */ - pc = 0x246e0; + if(r16 == r21) { + pc=0x24ce0; continue; } r3 = r16 < 93 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x24774; + if(r3 != r0) { + pc=0x24d74; continue; } - if (r16 == r22) { - /* Next insn is delay slot */ - pc = 0x247b0; + if(r16 == r22) { + pc=0x24db0; continue; } - if (r16 == r23) { - /* Next insn is delay slot */ - pc = 0x247a4; + if(r16 == r23) { + pc=0x24da4; continue; } r3 = r0 + 110; - if (r16 == r3) { - /* Next insn is delay slot */ - pc = 0x24748; + if(r16 == r3) { + pc=0x24d48; continue; } - case 0x246c8: + case 0x24cc8: 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: + r31=0x24cd8; + pc=0x1fc00; + run_1f800(); return; + case 0x24cd8: + r2= page[(r19+17104)>>>2]; + case 0x24ce0: 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]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r4= page[(r20+4)>>>2]; 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; + if(r2 != r0) { + pc=0x24c80; continue; } - case 0x24704: - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x247dc; + case 0x24d04: + if(r6 != r0) { + pc=0x24ddc; 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]; + case 0x24d0c: + r31= page[(r29+52)>>>2]; + page[(r20+4)>>>2] = r18; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + r0; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x24748: + case 0x24d48: r16 = r0 + 10; - /* Next insn is delay slot */ - pc = 0x246e0; + pc=0x24ce0; continue; - case 0x24754: - if (r16 == r21) { - /* Next insn is delay slot */ - pc = 0x24798; + case 0x24d54: + if(r16 == r21) { + pc=0x24d98; 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]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r4= page[(r20+4)>>>2]; r18 = r18 + 1; - /* Next insn is delay slot */ - pc = 0x24670; + pc=0x24c70; continue; - case 0x24774: + case 0x24d74: r3 = r0 + 39; - if (r16 == r3) { - /* Next insn is delay slot */ - pc = 0x246e0; + if(r16 == r3) { + pc=0x24ce0; continue; } r3 = r0 + 48; - if (r16 != r3) { - /* Next insn is delay slot */ - pc = 0x247bc; + if(r16 != r3) { + pc=0x24dbc; continue; } r16 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x246e0; + pc=0x24ce0; continue; - case 0x24798: + case 0x24d98: r6 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x24670; + pc=0x24c70; continue; - case 0x247a4: + case 0x24da4: r16 = r0 + 9; - /* Next insn is delay slot */ - pc = 0x246e0; + pc=0x24ce0; continue; - case 0x247b0: + case 0x24db0: r16 = r0 + 13; - /* Next insn is delay slot */ - pc = 0x246e0; + pc=0x24ce0; continue; - case 0x247bc: + case 0x24dbc: r3 = r0 + 34; - if (r16 != r3) { - /* Next insn is delay slot */ - pc = 0x246c8; + if(r16 != r3) { + pc=0x24cc8; continue; } - /* Next insn is delay slot */ - pc = 0x246e0; + pc=0x24ce0; continue; - case 0x247d0: + case 0x24dd0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x247dc: - r4 = 5 << 16; - r4 = r4 + 30156; + case 0x24ddc: + r4 = 6 << 16; + r4 = r4 + 5580; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x247f0; - pc = 0x21a00; - run_21a00(); - return; - case 0x247f0: - /* Next insn is delay slot */ - pc = 0x2470c; + r31=0x24df0; + pc=0x21400; + run_21000(); return; + case 0x24df0: + pc=0x24d0c; 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: + case 0x24e00: 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; + page[(r29+28)>>>2] = r17; + r17 = 6 << 16; + page[(r29+52)>>>2] = r23; + page[(r29+16)>>>2] = r4; + r23 = 6 << 16; + r4 = r17 + 17104; + page[(r29+56)>>>2] = r30; + page[(r29+24)>>>2] = r16; + page[(r29+60)>>>2] = r31; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+32)>>>2] = r18; + r16 = r0 + 1; + r31=0x24e48; + pc=0x1be00; + run_1b800(); return; + case 0x24e48: + r30 = r17 + 17104; + r23 = r23 + 5952; + case 0x24e50: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x24ffc; 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; + r2 = r0 + 1; + if(r5 != r2) { + pc=0x24fe0; continue; } - r3 = r2 < 40 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x24b18; + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r18 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x24e90: + r2 = r0 + 10; + if(r18 != r2) { + pc=0x24eb4; continue; } - if (r2 == r20) { - /* Next insn is delay slot */ - pc = 0x24b78; + r2= page[(r28+-32692)>>>2]; + r3= page[(r2+4)>>>2]; + r3 = r3 + 1; + page[(r2+4)>>>2] = r3; + case 0x24eb4: + r2= page[(r30+4)>>>2]; + r3= page[(r30+8)>>>2]; + if(r2 == r3) { + pc=0x25478; + run_25000(); return; + } + case 0x24ec8: + r3= page[(r17+17104)>>>2]; + r4 = r2 + 1; + r2 = r3 + r2; + page[(r30+4)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2 = r0 + 39; + if(r18 == r2) { + pc=0x24f98; continue; } - r3 = r0 + 125; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x24ab4; + r2 = r18 < 40 ? 1 : 0; + if(r2 != r0) { + pc=0x24f80; continue; } - r17 = r17 + -1; - case 0x24ab4: - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x24a58; + r2 = r0 + 123; + if(r18 == r2) { + pc=0x25418; + run_25000(); return; + } + r2 = r0 + 125; + if(r18 != r2) { + pc=0x24f10; continue; } - case 0x24abc: - if (r23 == r0) { - /* Next insn is delay slot */ - pc = 0x24c00; - run_24c00(); - return; + r16 = r16 + -1; + case 0x24f10: + if(r16 != r0) { + pc=0x24e50; + continue; } - r4 = r18 + -24536; + case 0x24f18: + r5= page[(r29+16)>>>2]; + if(r5 == r0) { + pc=0x25544; + run_25000(); return; + } + r4 = r17 + 17104; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x24ad4; - pc = 0x1ca00; - run_1ca00(); - return; - case 0x24ad4: - r4 = r18 + -24536; + r31=0x24f38; + pc=0x1c400; + run_1c000(); return; + case 0x24f38: + r4 = r17 + 17104; 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]; + r31=0x24f48; + pc=0x1c400; + run_1c000(); return; + case 0x24f48: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r16= page[(r29+24)>>>2]; + r4 = r17 + 17104; + r17= page[(r29+28)>>>2]; 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; + pc=0x1c200; + run_1c000(); return; + case 0x24f80: + r2 = r0 + 13; + if(r18 == r2) { + pc=0x2542c; + run_25000(); return; + } + r2 = r0 + 34; + if(r18 != r2) { + pc=0x24f10; continue; } - r3 = r0 + 34; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x24ab4; - continue; + case 0x24f98: + r4 = r18 + r0; + r31=0x24fa4; + pc=0x24800; + continue; + case 0x24fa4: + r2= page[(r30+4)>>>2]; + r3= page[(r30+8)>>>2]; + if(r2 == r3) { + pc=0x25460; + run_25000(); return; } - 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: + case 0x24fb8: 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 */ + r4= page[(r17+17104)>>>2]; + page[(r30+4)>>>2] = r3; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r16 != r0) { + pc=0x24e50; continue; } - /* Next insn is delay slot */ - pc = 0x24abc; + pc=0x24f18; continue; - case 0x24b78: - r17 = r17 + 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x24a58; - continue; - } - /* Next insn is delay slot */ - pc = 0x24abc; + case 0x24fe0: + r2 = 6 << 16; + r4 = r2 + 5440; + r31=0x24ff0; + pc=0x21400; + run_21000(); return; + case 0x24ff0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r18 = tmp; + pc=0x24e90; 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(); + case 0x24ffc: + r5= page[(r3+12)>>>2]; + case 0x25000: + pc=0x25000; 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)); + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_24c00() throws ExecutionException { /* 0x24c00 - 0x24e00 */ + private final void run_25000() throws ExecutionException { /* 0x25000 - 0x25800 */ 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]; + for(;;) { + switch(pc) { + case 0x25000: + r19 = r0 + -1; + r20 = r0 + 13; + r18 = r0 + 10; + case 0x2500c: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x254a8; + continue; + } + case 0x25018: + r5 = r5 << 2; + r5 = r23 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x25030: + if(r2 == r19) { + pc=0x250c4; + continue; + } + case 0x25038: + if(r2 == r20) { + pc=0x250c4; + continue; + } + if(r2 == r18) { + pc=0x250c4; + continue; + } + r3= page[(r28+-32692)>>>2]; + case 0x25050: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25490; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x2508c: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25030; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x250b4; + pc=0x22a00; + run_22800(); return; + case 0x250b4: + r2= page[(r28+-31332)>>>2]; + if(r2 != r19) { + pc=0x25038; + continue; + } + case 0x250c4: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x25018; + continue; + case 0x250dc: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25674; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + case 0x25118: + r2= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r4; + r2= page[(r2+0)>>>2]; + if(r2 == r0) { + pc=0x2557c; + continue; + } + r4 = r4 << 24; + r4 = r4 >> 24; + r31=0x25140; + pc=0x22a00; + run_22800(); return; + case 0x25140: + r3= page[(r28+-32692)>>>2]; + case 0x25144: + r18= page[(r28+-31332)>>>2]; + case 0x25148: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + -1; + if(r18 == r2) { + pc=0x2552c; + continue; + } + r5 = 6 << 16; + r2 = r18 & 255; + r4 = r5 + 4764; + r2 = r2 + r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x25518; + continue; + } + r2 = r0 + 32; + if(r18 == r2) { + pc=0x256a8; + continue; + } + r2 = r18 < 33 ? 1 : 0; + if(r2 != r0) { + pc=0x254cc; + continue; + } + r2 = r0 + 58; + if(r18 == r2) { + pc=0x256d8; + continue; + } + r2 = r18 < 59 ? 1 : 0; + if(r2 != r0) { + pc=0x2558c; + continue; + } + r2 = r0 + 59; + if(r18 == r2) { + pc=0x25644; + continue; + } + r2 = r0 + 125; + if(r18 != r2) { + pc=0x254f0; + continue; + } + r2 = r0 + 8; + r18 = r0 + r0; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x251e0: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2565c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x2521c: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x2524c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25244; + pc=0x22a00; + run_22800(); return; + case 0x25244: + r2= page[(r28+-31332)>>>2]; + case 0x2524c: + if(r2 != r18) { + pc=0x250c4; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x25018; + continue; + case 0x2526c: + r2 = r0 + 6; + r18 = r0 + 10; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25284: + r2 = r0 + 1; + r18 = r0 + 10; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x2529c: + r4= page[(r3+16)>>>2]; + r21 = r0 + 9; + r2= page[(r4+4)>>>2]; + r22 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25340; + continue; + } + case 0x252bc: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x252d8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25308; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25300; + pc=0x22a00; + run_22800(); return; + case 0x25300: + r2= page[(r28+-31332)>>>2]; + case 0x25308: + if(r2 == r21) { + pc=0x25318; + continue; + } + if(r2 != r22) { + pc=0x250c4; + continue; + } + case 0x25318: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x252bc; + continue; + } + case 0x25340: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x25350; + pc=0x50a00; + run_50800(); return; + case 0x25350: + pc=0x252d8; + continue; + case 0x25358: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25690; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x25394: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x253c0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x253bc; + pc=0x22a00; + run_22800(); return; + case 0x253bc: + r2= page[(r28+-31332)>>>2]; + case 0x253c0: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x250c4; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + r18 = r0 + r0; + page[(r2+12)>>>2] = r3; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x253e8: + r2 = r0 + 1; + r18 = r0 + 13; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25400: + r2 = r0 + 1; + r18 = r0 + 125; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25418: + r16 = r16 + 1; + if(r16 != r0) { + pc=0x24e50; + run_24800(); return; + } + pc=0x24f18; + run_24800(); return; + case 0x2542c: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5208; + r31=0x25440; + pc=0x1fc00; + run_1f800(); return; + case 0x25440: + r4 = r18 + r0; + r31=0x2544c; + pc=0x24800; + run_24800(); return; + case 0x2544c: + r2= page[(r30+4)>>>2]; + r3= page[(r30+8)>>>2]; + if(r2 != r3) { + pc=0x24fb8; + run_24800(); return; + } + case 0x25460: + r4 = r30 + r0; + r31=0x2546c; + pc=0x1c000; + run_1c000(); return; + case 0x2546c: + r2= page[(r30+4)>>>2]; + pc=0x24fb8; + run_24800(); return; + case 0x25478: + r4 = r30 + r0; + r31=0x25484; + pc=0x1c000; + run_1c000(); return; + case 0x25484: + r2= page[(r30+4)>>>2]; + pc=0x24ec8; + run_24800(); return; + case 0x25490: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x254a0; + pc=0x50a00; + run_50800(); return; + case 0x254a0: + pc=0x2508c; + continue; + case 0x254a8: + r4 = 6 << 16; + r4 = r4 + 5420; + r31=0x254b8; + pc=0x21400; + run_21000(); return; + case 0x254b8: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x2500c; + continue; + case 0x254cc: + r2 = r0 + 10; + if(r18 == r2) { + pc=0x25628; + continue; + } + r2 = r0 + 13; + if(r18 == r2) { + pc=0x256c0; + continue; + } + r2 = r0 + 9; + if(r18 == r2) { + pc=0x256a8; + continue; + } + case 0x254f0: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5380; + r31=0x25504; + pc=0x1fc00; + run_1f800(); return; + case 0x25504: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r18 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25518: + r18 = r18 << 24; + r18 = r18 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x2552c: + r2 = r0 + 9; + r18 = r0 + r0; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25544: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r2 = r0 + r0; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x24e00: - pc = 0x24e00; + case 0x2557c: + r3= page[(r28+-32692)>>>2]; + r18 = r4 + r0; + pc=0x25148; + continue; + case 0x2558c: + r2 = r0 + 47; + if(r18 != r2) { + pc=0x254f0; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x256e8; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x255d4: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25600; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x255fc; + pc=0x22a00; + run_22800(); return; + case 0x255fc: + r2= page[(r28+-31332)>>>2]; + case 0x25600: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x25640; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + r18 = r0 + 47; + page[(r2+12)>>>2] = r3; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25628: + r2 = r0 + 4; + r18 = r0 + r0; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x25640: + r3= page[(r28+-32692)>>>2]; + case 0x25644: + r2 = r0 + 7; + r18 = r0 + r0; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x2565c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2566c; + pc=0x50a00; + run_50800(); return; + case 0x2566c: + pc=0x2521c; + continue; + case 0x25674: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x25684; + pc=0x50a00; + run_50800(); return; + case 0x25684: + r4 = r2 + r0; + pc=0x25118; + continue; + case 0x25690: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x256a0; + pc=0x50a00; + run_50800(); return; + case 0x256a0: + pc=0x25394; + continue; + case 0x256a8: + r2 = r0 + 3; + r18 = r0 + 32; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x256c0: + r2 = r0 + 5; + r18 = r0 + r0; + page[(r3+12)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x256d8: + r18 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x24e90; + run_24800(); return; + case 0x256e8: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x256f8; + pc=0x50a00; + run_50800(); return; + case 0x256f8: + pc=0x255d4; + continue; + case 0x25800: + pc=0x25800; 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_24e00() throws ExecutionException { /* 0x24e00 - 0x25000 */ + private final void run_25800() throws ExecutionException { /* 0x25800 - 0x26000 */ 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 */ + for(;;) { + switch(pc) { + case 0x25800: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - r29 = r29 + -24; + r29 = r29 + -56; r2 = r0 + 46; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x24e88; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; + page[(r29+44)>>>2] = r23; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + if(r5 == r2) { + pc=0x25e74; continue; } r2 = r0 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x24e88; + if(r5 == r2) { + pc=0x25e74; 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 */ + r17 = 6 << 16; + r2 = r5 & 255; + r17 = r17 + 4764; + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x24e60; + if(r2 >= 0) { + pc=0x25e30; 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; + r18 = 6 << 16; + r16 = r0 + r0; + r23 = r18 + 17104; + pc=0x258cc; + continue; + case 0x2587c: + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r19 = r5 & 255; + case 0x2589c: + r2 = r0 + 10; + if(r5 != r2) { + pc=0x258c0; 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; + r2= page[(r28+-32692)>>>2]; + r3= page[(r2+4)>>>2]; + r3 = r3 + 1; + page[(r2+4)>>>2] = r3; 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 */ + r19 = r17 + r19; + addr=r19+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + case 0x258cc: + r2 = r2 & 64; + if(r2 == r0) { + pc=0x25b58; + continue; + } + r2= page[(r23+4)>>>2]; + r3= page[(r23+8)>>>2]; + if(r2 == r3) { + pc=0x25b30; + continue; + } + case 0x258ec: + r3= page[(r18+17104)>>>2]; + r4 = r2 + 1; + r2 = r3 + r2; + page[(r23+4)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r28+-32692)>>>2]; + r16 = r16 + 1; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x25948; + continue; + } + r2 = r0 + 1; + if(r5 == r2) { + pc=0x2587c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 5440; + r31=0x25934; + pc=0x21400; + run_21000(); return; + case 0x25934: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r19 = r5 & 255; + pc=0x2589c; + continue; + case 0x25948: + r5= page[(r3+12)>>>2]; + r20 = r0 + -1; + r21 = r0 + 13; + r19 = r0 + 10; + case 0x25958: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x25e50; + continue; + } + case 0x25964: + r2 = 6 << 16; + r2 = r2 + 5992; + r5 = r5 << 2; + r5 = r2 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x25984: + if(r2 == r20) { + pc=0x25a18; + continue; + } + case 0x2598c: + if(r2 == r21) { + pc=0x25a18; + continue; + } + if(r2 == r19) { + pc=0x25a18; + continue; + } + r3= page[(r28+-32692)>>>2]; + case 0x259a4: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25b98; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x259e0: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25984; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25a08; + pc=0x22a00; + run_22800(); return; + case 0x25a08: + r2= page[(r28+-31332)>>>2]; + if(r2 != r20) { + pc=0x2598c; continue; } case 0x25a18: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x25964; + continue; + case 0x25a30: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26034; + run_26000(); return; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + case 0x25a6c: + r2= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r4; + r2= page[(r2+0)>>>2]; + if(r2 == r0) { + pc=0x25f50; + continue; + } + r4 = r4 << 24; + r4 = r4 >> 24; + r31=0x25a94; + pc=0x22a00; + run_22800(); return; + case 0x25a94: + r3= page[(r28+-32692)>>>2]; + case 0x25a98: + r19= page[(r28+-31332)>>>2]; + case 0x25a9c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + -1; + if(r19 == r2) { + pc=0x25ec0; + continue; + } + r2 = r19 & 255; + r4 = r17 + r2; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x25e18; + continue; + } + r2 = r0 + 32; + if(r19 == r2) { + pc=0x25f34; + continue; + } + r2 = r19 < 33 ? 1 : 0; + if(r2 != r0) { + pc=0x25edc; + continue; + } + r2 = r0 + 58; + if(r19 == r2) { + pc=0x25eac; + continue; + } + r2 = r19 < 59 ? 1 : 0; + if(r2 != r0) { + pc=0x25f60; + continue; + } + r2 = r0 + 59; + if(r19 == r2) { + pc=0x26000; + run_26000(); return; + } + r2 = r0 + 125; + if(r19 != r2) { + pc=0x25f00; + continue; + } + r2 = r0 + 8; + r5 = r0 + r0; + page[(r3+12)>>>2] = r2; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25b30: + r4 = 6 << 16; + r4 = r4 + 17104; + r31=0x25b40; + pc=0x1c000; + run_1c000(); return; + case 0x25b40: + r3 = 6 << 16; + r3 = r3 + 17104; + r2= page[(r3+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + pc=0x258ec; + continue; + case 0x25b58: + if(r16 == r0) { + pc=0x25dfc; + continue; + } + case 0x25b60: + r2 = (r16&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + case 0x25b64: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x25b98: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x25ba8; + pc=0x50a00; + run_50800(); return; + case 0x25ba8: + pc=0x259e0; + continue; + case 0x25bb0: + r2 = r0 + 1; + r5 = r0 + 125; + page[(r3+12)>>>2] = r2; + r19 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25bcc: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26050; + run_26000(); return; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x25c08: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25c38; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25c30; + pc=0x22a00; + run_22800(); return; + case 0x25c30: + r2= page[(r28+-31332)>>>2]; + case 0x25c38: + if(r2 != r19) { + pc=0x25a18; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x25964; + continue; + case 0x25c58: + r2 = r0 + 6; + r5 = r0 + 10; + page[(r3+12)>>>2] = r2; + r19 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25c74: + r2 = r0 + 1; + r5 = r0 + 10; + page[(r3+12)>>>2] = r2; + r19 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25c90: + r4= page[(r3+16)>>>2]; + r22 = r0 + 9; + r2= page[(r4+4)>>>2]; + r30 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x25d34; + continue; + } + case 0x25cb0: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x25ccc: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25cfc; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25cf4; + pc=0x22a00; + run_22800(); return; + case 0x25cf4: + r2= page[(r28+-31332)>>>2]; + case 0x25cfc: + if(r2 == r22) { + pc=0x25d0c; + continue; + } + if(r2 != r30) { + pc=0x25a18; + continue; + } + case 0x25d0c: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x25cb0; + continue; + } + case 0x25d34: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x25d44; + pc=0x50a00; + run_50800(); return; + case 0x25d44: + pc=0x25ccc; + continue; + case 0x25d4c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2601c; + run_26000(); return; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x25d88: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25db4; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25db0; + pc=0x22a00; + run_22800(); return; + case 0x25db0: + r2= page[(r28+-31332)>>>2]; + case 0x25db4: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x25a18; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + r5 = r0 + r0; + page[(r2+12)>>>2] = r3; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25de0: + r2 = r0 + 1; + r5 = r0 + 13; + page[(r3+12)>>>2] = r2; + r19 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25dfc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x25e10; + pc=0x1fc00; + run_1f800(); return; + case 0x25e10: + pc=0x25b60; + continue; + case 0x25e18: + r5 = r19 << 24; + r5 = r5 >> 24; + r19 = r2 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25e30: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x25e44; + pc=0x1fc00; + run_1f800(); return; + case 0x25e44: + r2 = r0 + 1; + pc=0x25b64; + continue; + case 0x25e50: + r4 = 6 << 16; + r4 = r4 + 5420; + r31=0x25e60; + pc=0x21400; + run_21000(); return; + case 0x25e60: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x25958; + continue; + case 0x25e74: + r4 = 6 << 16; + r4 = r4 + 17104; + r31=0x25e84; + pc=0x1c400; + run_1c000(); return; + case 0x25e84: + r31=0x25e8c; + pc=0x23000; + run_23000(); return; + case 0x25e8c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r17 = 6 << 16; + r2 = r5 & 255; + r17 = r17 + 4764; + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x25868; + continue; + case 0x25eac: + r5 = r0 + r0; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25ec0: + r2 = r0 + 9; + r5 = r0 + r0; + page[(r3+12)>>>2] = r2; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25edc: + r2 = r0 + 10; + if(r19 == r2) { + pc=0x26084; + run_26000(); return; + } + r2 = r0 + 13; + if(r19 == r2) { + pc=0x26068; + run_26000(); return; + } + r2 = r0 + 9; + if(r19 == r2) { + pc=0x25f34; + continue; + } + case 0x25f00: + r3 = 6 << 16; + r5 = r3 + 5380; + r4 = r0 + -2; + r31=0x25f14; + pc=0x1fc00; + run_1f800(); return; + case 0x25f14: + r19= page[(r28+-31332)>>>2]; + r5 = r19 << 24; + r5 = r5 >> 24; + r19 = r19 & 255; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25f34: + r2 = r0 + 3; + r5 = r0 + 32; + page[(r3+12)>>>2] = r2; + r19 = r0 + 32; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25f50: + r3= page[(r28+-32692)>>>2]; + r19 = r4 + r0; + pc=0x25a9c; + continue; + case 0x25f60: + r2 = r0 + 47; + if(r19 != r2) { + pc=0x25f00; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x260a0; + run_26000(); return; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x25fa8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x25fd4; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x25fd0; + pc=0x22a00; + run_22800(); return; + case 0x25fd0: + r2= page[(r28+-31332)>>>2]; + case 0x25fd4: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x25ffc; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + r5 = r0 + 47; + page[(r2+12)>>>2] = r3; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + continue; + case 0x25ffc: + r3= page[(r28+-32692)>>>2]; + case 0x26000: + pc=0x26000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_26000() throws ExecutionException { /* 0x26000 - 0x26800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x26000: + r2 = r0 + 7; + r5 = r0 + r0; + page[(r3+12)>>>2] = r2; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + run_25800(); return; + case 0x2601c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2602c; + pc=0x50a00; + run_50800(); return; + case 0x2602c: + pc=0x25d88; + run_25800(); return; + case 0x26034: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26044; + pc=0x50a00; + run_50800(); return; + case 0x26044: + r4 = r2 + r0; + pc=0x25a6c; + run_25800(); return; + case 0x26050: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26060; + pc=0x50a00; + run_50800(); return; + case 0x26060: + pc=0x25c08; + run_25800(); return; + case 0x26068: + r2 = r0 + 5; + r5 = r0 + r0; + page[(r3+12)>>>2] = r2; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + run_25800(); return; + case 0x26084: + r2 = r0 + 4; + r5 = r0 + r0; + page[(r3+12)>>>2] = r2; + r19 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x2589c; + run_25800(); return; + case 0x260a0: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x260b0; + pc=0x50a00; + run_50800(); return; + case 0x260b0: + pc=0x25fa8; + run_25800(); return; + case 0x26200: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r29 = r29 + -40; + r2 = r0 + 32; + page[(r29+28)>>>2] = r19; + page[(r29+16)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + r19 = r4 + r0; + r16 = r5 + r0; + if(r3 == r2) { + pc=0x264e0; + continue; + } + case 0x26234: + r17 = 6 << 16; + r4 = r17 + 17104; + r31=0x26244; + pc=0x1be00; + run_1b800(); return; + case 0x26244: + if(r16 == r0) { + pc=0x2630c; + continue; + } + r5 = r0 + 46; + r4 = r17 + 17104; + r31=0x2625c; + pc=0x1c400; + run_1c000(); return; + case 0x2625c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r18 = 6 << 16; + r2 = r5 & 255; + r18 = r18 + 4764; + r2 = r18 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r2 = r2 & 64; + if(r2 == r0) { + pc=0x263e0; + continue; + } + r16 = r17 + 17104; + r20 = r16 + r0; + pc=0x262dc; + continue; + case 0x26294: + r2 = r3 + r0; + case 0x26298: + r3= page[(r17+17104)>>>2]; + r4 = r2 + 1; + r2 = r3 + r2; + page[(r16+4)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x262b4; + pc=0x23000; + run_23000(); return; + case 0x262b4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 == r0) { + pc=0x26464; + continue; + } + r5 = r2 + r0; + case 0x262dc: + r3= page[(r16+4)>>>2]; + r2= page[(r16+8)>>>2]; + if(r3 != r2) { + pc=0x26294; + continue; + } + r4 = r20 + r0; + r31=0x262fc; + pc=0x1c000; + run_1c000(); return; + case 0x262fc: + r2= page[(r20+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + pc=0x26298; + continue; + case 0x2630c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r2 = r0 + 46; + if(r5 == r2) { + pc=0x264ac; + continue; + } + r2 = r0 + 64; + if(r5 == r2) { + pc=0x264ac; + continue; + } + r18 = 6 << 16; + r2 = r5 & 255; + r18 = r18 + 4764; + r2 = r18 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 >= 0) { + pc=0x263e0; + continue; + } + case 0x26348: + r2 = r2 & 64; + if(r2 == r0) { + pc=0x263e0; + continue; + } + r16 = 6 << 16; + r16 = r16 + 17104; + r20 = r16 + r0; + pc=0x263b0; + continue; + case 0x26368: + r2 = r3 + r0; + case 0x2636c: + r3= page[(r17+17104)>>>2]; + r4 = r2 + 1; + r2 = r3 + r2; + page[(r16+4)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x26388; + pc=0x23000; + run_23000(); return; + case 0x26388: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 == r0) { + pc=0x26464; + continue; + } + r5 = r2 + r0; + case 0x263b0: + r3= page[(r16+4)>>>2]; + r2= page[(r16+8)>>>2]; + if(r3 != r2) { + pc=0x26368; + continue; + } + r4 = r20 + r0; + r31=0x263d0; + pc=0x1c000; + run_1c000(); return; + case 0x263d0: + r2= page[(r20+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + pc=0x2636c; + continue; + case 0x263e0: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x263f4; + pc=0x1fc00; + run_1f800(); return; + case 0x263f4: + r16 = r0 + 1; + r4 = r17 + 17104; + r5 = r0 + r0; + r31=0x26408; + pc=0x1c400; + run_1c000(); return; + case 0x26408: + if(r16 != r0) { + pc=0x26480; + continue; + } + case 0x26410: + r2 = 6 << 16; + r2= page[(r2+17104)>>>2]; + r3 = r0 + 46; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 == r3) { + pc=0x264f0; + continue; + } + r3 = r0 + 64; + if(r2 == r3) { + pc=0x26524; + continue; + } + page[(r19+0)>>>2] = r0; + r2 = r0 + r0; + case 0x26440: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x26464: + r16 = r0 + r0; + r4 = r17 + 17104; + r5 = r0 + r0; + r31=0x26478; + pc=0x1c400; + run_1c000(); return; + case 0x26478: + if(r16 == r0) { + pc=0x26410; + continue; + } + case 0x26480: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + page[(r19+0)>>>2] = r0; + r2 = r0 + 1; + r19= page[(r29+28)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x264ac: + r4 = r17 + 17104; + r31=0x264b8; + pc=0x1c400; + run_1c000(); return; + case 0x264b8: + r31=0x264c0; + pc=0x23000; + run_23000(); return; + case 0x264c0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r5 = tmp; + r18 = 6 << 16; + r2 = r5 & 255; + r18 = r18 + 4764; + r2 = r18 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x26348; + continue; + case 0x264e0: + r31=0x264e8; + pc=0x23000; + run_23000(); return; + case 0x264e8: + pc=0x26234; + continue; + case 0x264f0: + r2= page[(r28+-32672)>>>2]; + r31= page[(r29+36)>>>2]; + r2= page[(r2+0)>>>2]; + r20= page[(r29+32)>>>2]; + page[(r19+0)>>>2] = r2; + r18= page[(r29+24)>>>2]; + r19= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r2 = r0 + r0; + r29 = r29 + 40; + pc=r31; + return; + case 0x26524: + r2= page[(r28+-32672)>>>2]; + r2= page[(r2+4)>>>2]; + page[(r19+0)>>>2] = r2; + r2 = r0 + r0; + pc=0x26440; + continue; + case 0x26600: + r29 = r29 + -56; + page[(r29+20)>>>2] = r17; + r17 = 6 << 16; + r4 = r17 + 17104; + page[(r29+44)>>>2] = r23; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + r18 = 6 << 16; + r31=0x26640; + pc=0x1be00; + run_1b800(); return; + case 0x26640: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r16 = r0 + r0; + r18 = r18 + 4764; + r23 = r17 + 17104; + case 0x26650: + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 == r0) { + pc=0x26714; + continue; + } + case 0x2666c: + r3= page[(r23+4)>>>2]; + r4= page[(r23+8)>>>2]; + if(r3 == r4) { + pc=0x26bb0; + run_26800(); return; + } + case 0x26680: + r4= page[(r17+17104)>>>2]; + r5 = r3 + 1; + r3 = r4 + r3; + page[(r23+4)>>>2] = r5; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r28+-32692)>>>2]; + r16 = r16 + 1; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x26794; + continue; + } + r2 = r0 + 1; + if(r5 != r2) { + pc=0x26778; + continue; + } + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x266d4: + r3 = r0 + 10; + if(r2 != r3) { + pc=0x26650; + continue; + } + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + 1; + page[(r3+4)>>>2] = r4; + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 != r0) { + pc=0x2666c; + continue; + } + case 0x26714: + if(r16 != r0) { + pc=0x26730; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x26730; + pc=0x1fc00; + run_1f800(); return; + case 0x26730: + r4 = r17 + 17104; + r5 = r0 + r0; + r31=0x26740; + pc=0x1c400; + run_1c000(); return; + case 0x26740: + r31= page[(r29+52)>>>2]; + r2 = r16 + r0; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x26778: + r4 = 6 << 16; + r4 = r4 + 5440; + r31=0x26788; + pc=0x21400; + run_21000(); return; + case 0x26788: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x266d4; + continue; + case 0x26794: + r5= page[(r3+12)>>>2]; + r20 = r0 + -1; + r21 = r0 + 13; + r19 = r0 + 10; + case 0x267a4: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x26be4; + run_26800(); return; + } + case 0x267b0: + r2 = 6 << 16; + r2 = r2 + 6032; + r5 = r5 << 2; + r5 = r2 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x267d0: + if(r2 == r20) { + pc=0x26864; + run_26800(); return; + } + case 0x267d8: + if(r2 == r21) { + pc=0x26864; + run_26800(); return; + } + if(r2 == r19) { + pc=0x26864; + run_26800(); return; + } + r3= page[(r28+-32692)>>>2]; + case 0x267f0: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + case 0x26800: + pc=0x26800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_26800() throws ExecutionException { /* 0x26800 - 0x27000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x26800: + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26bcc; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x2682c: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x267d0; + run_26000(); return; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x26854; + pc=0x22a00; + run_22800(); return; + case 0x26854: + r2= page[(r28+-31332)>>>2]; + if(r2 != r20) { + pc=0x267d8; + run_26000(); return; + } + case 0x26864: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x267b0; + run_26000(); return; + case 0x2687c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26d4c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x268b8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x26d7c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x268e0; + pc=0x22a00; + run_22800(); return; + case 0x268e0: + r3= page[(r28+-32692)>>>2]; + case 0x268e4: + r2= page[(r28+-31332)>>>2]; + case 0x268e8: + r4 = r0 + 1; + page[(r3+12)>>>2] = r4; + r4 = r0 + -1; + if(r2 == r4) { + pc=0x26c68; + continue; + } + r4 = r2 & 255; + r4 = r18 + r4; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x26c54; + continue; + } + r4 = r0 + 32; + if(r2 == r4) { + pc=0x26dcc; + continue; + } + r4 = r2 < 33 ? 1 : 0; + if(r4 != r0) { + pc=0x26c08; + continue; + } + r4 = r0 + 58; + if(r2 == r4) { + pc=0x26dbc; + continue; + } + r4 = r2 < 59 ? 1 : 0; + if(r4 != r0) { + pc=0x26c80; + continue; + } + r4 = r0 + 59; + if(r2 == r4) { + pc=0x26d8c; + continue; + } + r4 = r0 + 125; + if(r2 != r4) { + pc=0x26c2c; + continue; + } + r2 = r0 + 8; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26978: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26d1c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x269b4: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x269e4; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x269dc; + pc=0x22a00; + run_22800(); return; + case 0x269dc: + r2= page[(r28+-31332)>>>2]; + case 0x269e4: + if(r2 != r19) { + pc=0x26864; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x267b0; + run_26000(); return; + case 0x26a04: + r2 = r0 + 6; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26a1c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26a34: + r4= page[(r3+16)>>>2]; + r22 = r0 + 9; + r2= page[(r4+4)>>>2]; + r30 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26ad8; + continue; + } + case 0x26a54: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x26a70: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x26aa0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x26a98; + pc=0x22a00; + run_22800(); return; + case 0x26a98: + r2= page[(r28+-31332)>>>2]; + case 0x26aa0: + if(r2 == r22) { + pc=0x26ab0; + continue; + } + if(r2 != r30) { + pc=0x26864; + continue; + } + case 0x26ab0: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x26a54; + continue; + } + case 0x26ad8: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26ae8; + pc=0x50a00; + run_50800(); return; + case 0x26ae8: + pc=0x26a70; + continue; + case 0x26af0: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26b08: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26d34; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x26b44: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x26b70; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x26b6c; + pc=0x22a00; + run_22800(); return; + case 0x26b6c: + r2= page[(r28+-31332)>>>2]; + case 0x26b70: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x26864; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + page[(r2+12)>>>2] = r3; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26b98: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26bb0: + r4 = r23 + r0; + r31=0x26bbc; + pc=0x1c000; + run_1c000(); return; + case 0x26bbc: + r3= page[(r23+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x26680; + run_26000(); return; + case 0x26bcc: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26bdc; + pc=0x50a00; + run_50800(); return; + case 0x26bdc: + pc=0x2682c; + continue; + case 0x26be4: + r4 = 6 << 16; + r4 = r4 + 5420; + r31=0x26bf4; + pc=0x21400; + run_21000(); return; + case 0x26bf4: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x267a4; + run_26000(); return; + case 0x26c08: + r4 = r0 + 10; + if(r2 == r4) { + pc=0x26d64; + continue; + } + r4 = r0 + 13; + if(r2 == r4) { + pc=0x26da4; + continue; + } + r4 = r0 + 9; + if(r2 == r4) { + pc=0x26dcc; + continue; + } + case 0x26c2c: + r2 = 6 << 16; + r5 = r2 + 5380; + r4 = r0 + -2; + r31=0x26c40; + pc=0x1fc00; + run_1f800(); return; + case 0x26c40: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26c54: + r2 = r2 << 24; + r2 = r2 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26c68: + r2 = r0 + 9; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26c80: + r4 = r0 + 47; + if(r2 != r4) { + pc=0x26c2c; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x26de4; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x26cc8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x26cf4; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x26cf0; + pc=0x22a00; + run_22800(); return; + case 0x26cf0: + r2= page[(r28+-31332)>>>2]; + case 0x26cf4: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x26d88; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + page[(r2+12)>>>2] = r3; + r2 = r0 + 47; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26d1c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26d2c; + pc=0x50a00; + run_50800(); return; + case 0x26d2c: + pc=0x269b4; + continue; + case 0x26d34: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26d44; + pc=0x50a00; + run_50800(); return; + case 0x26d44: + pc=0x26b44; + continue; + case 0x26d4c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26d5c; + pc=0x50a00; + run_50800(); return; + case 0x26d5c: + pc=0x268b8; + continue; + case 0x26d64: + r2 = r0 + 4; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26d7c: + r3= page[(r28+-32692)>>>2]; + pc=0x268e8; + continue; + case 0x26d88: + r3= page[(r28+-32692)>>>2]; + case 0x26d8c: + r2 = r0 + 7; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26da4: + r2 = r0 + 5; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26dbc: + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26dcc: + r2 = r0 + 3; + page[(r3+12)>>>2] = r2; + r2 = r0 + 32; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x266d4; + run_26000(); return; + case 0x26de4: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x26df4; + pc=0x50a00; + run_50800(); return; + case 0x26df4: + pc=0x26cc8; + continue; + case 0x26e00: + r29 = r29 + -56; + page[(r29+20)>>>2] = r17; + r17 = 6 << 16; + r4 = r17 + 17104; + page[(r29+44)>>>2] = r23; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + r18 = 6 << 16; + r31=0x26e40; + pc=0x1be00; + run_1b800(); return; + case 0x26e40: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r16 = r0 + r0; + r18 = r18 + 4764; + r23 = r17 + 17104; + case 0x26e50: + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 == r0) { + pc=0x26f14; + continue; + } + case 0x26e6c: + r3= page[(r23+4)>>>2]; + r4= page[(r23+8)>>>2]; + if(r3 == r4) { + pc=0x273c0; + run_27000(); return; + } + case 0x26e80: + r4= page[(r17+17104)>>>2]; + r5 = r3 + 1; + r3 = r4 + r3; + page[(r23+4)>>>2] = r5; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r28+-32692)>>>2]; + r16 = r16 + 1; + r5= page[(r3+8)>>>2]; + if(r5 == r0) { + pc=0x26fa4; + continue; + } + r2 = r0 + 1; + if(r5 != r2) { + pc=0x26f88; + continue; + } + r2= page[(r3+16)>>>2]; + r4 = r2 + 1; + page[(r3+16)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x26ed4: + r3 = r0 + 10; + if(r2 != r3) { + pc=0x26e50; + continue; + } + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+4)>>>2]; + r4 = r4 + 1; + page[(r3+4)>>>2] = r4; + r3 = r2 & 255; + r3 = r18 + r3; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if(r3 != r0) { + pc=0x26e6c; + continue; + } + case 0x26f14: + if(r16 != r0) { + pc=0x26f30; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5300; + r31=0x26f30; + pc=0x1fc00; + run_1f800(); return; + case 0x26f30: + r4 = r17 + 17104; + r5 = r0 + r0; + r31=0x26f40; + pc=0x1c400; + run_1c000(); return; + case 0x26f40: + r4 = r17 + 17104; + r5 = r4 + r0; + r31=0x26f50; + pc=0x1cc00; + run_1c800(); return; + case 0x26f50: + r31= page[(r29+52)>>>2]; + r2 = r16 + r0; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x26f88: + r4 = 6 << 16; + r4 = r4 + 5440; + r31=0x26f98; + pc=0x21400; + run_21000(); return; + case 0x26f98: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x26ed4; + continue; + case 0x26fa4: + r5= page[(r3+12)>>>2]; + r20 = r0 + -1; + r21 = r0 + 13; + r19 = r0 + 10; + case 0x26fb4: + r2 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x273f4; + run_27000(); return; + } + case 0x26fc0: + r2 = 6 << 16; + r2 = r2 + 6072; + r5 = r5 << 2; + r5 = r2 + r5; + r2= page[(r5+0)>>>2]; + pc=r2; + return; + case 0x26fe0: + if(r2 == r20) { + pc=0x27074; + run_27000(); return; + } + case 0x26fe8: + if(r2 == r21) { + pc=0x27074; + run_27000(); return; + } + if(r2 == r19) { + pc=0x27074; + run_27000(); return; + } + r3= page[(r28+-32692)>>>2]; + case 0x27000: + pc=0x27000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_27000() throws ExecutionException { /* 0x27000 - 0x27800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x27000: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x273dc; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x2703c: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x26fe0; + run_26800(); return; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x27064; + pc=0x22a00; + run_22800(); return; + case 0x27064: + r2= page[(r28+-31332)>>>2]; + if(r2 != r20) { + pc=0x26fe8; + run_26800(); return; + } + case 0x27074: + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 2; + page[(r3+12)>>>2] = r2; + r5 = r0 + 2; + pc=0x26fc0; + run_26800(); return; + case 0x2708c: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2755c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x270c8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x2758c; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x270f0; + pc=0x22a00; + run_22800(); return; + case 0x270f0: + r3= page[(r28+-32692)>>>2]; + case 0x270f4: + r2= page[(r28+-31332)>>>2]; + case 0x270f8: + r4 = r0 + 1; + page[(r3+12)>>>2] = r4; + r4 = r0 + -1; + if(r2 == r4) { + pc=0x27478; + continue; + } + r4 = r2 & 255; + r4 = r18 + r4; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if(r4 == r0) { + pc=0x27464; + continue; + } + r4 = r0 + 32; + if(r2 == r4) { + pc=0x275dc; + continue; + } + r4 = r2 < 33 ? 1 : 0; + if(r4 != r0) { + pc=0x27418; + continue; + } + r4 = r0 + 58; + if(r2 == r4) { + pc=0x275cc; + continue; + } + r4 = r2 < 59 ? 1 : 0; + if(r4 != r0) { + pc=0x27490; + continue; + } + r4 = r0 + 59; + if(r2 == r4) { + pc=0x2759c; + continue; + } + r4 = r0 + 125; + if(r2 != r4) { + pc=0x2743c; + continue; + } + r2 = r0 + 8; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27188: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x2752c; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x271c4: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x271f4; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x271ec; + pc=0x22a00; + run_22800(); return; + case 0x271ec: + r2= page[(r28+-31332)>>>2]; + case 0x271f4: + if(r2 != r19) { + pc=0x27074; + continue; + } + r3= page[(r28+-32692)>>>2]; + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r5 = r0 + 1; + pc=0x26fc0; + run_26800(); return; + case 0x27214: + r2 = r0 + 6; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x2722c: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 10; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27244: + r4= page[(r3+16)>>>2]; + r22 = r0 + 9; + r2= page[(r4+4)>>>2]; + r30 = r0 + 32; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x272e8; + continue; + } + case 0x27264: + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x27280: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x272b0; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x272a8; + pc=0x22a00; + run_22800(); return; + case 0x272a8: + r2= page[(r28+-31332)>>>2]; + case 0x272b0: + if(r2 == r22) { + pc=0x272c0; + continue; + } + if(r2 != r30) { + pc=0x27074; + continue; + } + case 0x272c0: + r3= page[(r28+-32692)>>>2]; + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x27264; + continue; + } + case 0x272e8: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x272f8; + pc=0x50a00; + run_50800(); return; + case 0x272f8: + pc=0x27280; + continue; + case 0x27300: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 125; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27318: + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x27544; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x27354: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x27380; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x2737c; + pc=0x22a00; + run_22800(); return; + case 0x2737c: + r2= page[(r28+-31332)>>>2]; + case 0x27380: + r3 = r0 + 35; + if(r2 != r3) { + pc=0x27074; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 7; + page[(r2+12)>>>2] = r3; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x273a8: + r2 = r0 + 1; + page[(r3+12)>>>2] = r2; + r2 = r0 + 13; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x273c0: + r4 = r23 + r0; + r31=0x273cc; + pc=0x1c000; + run_1c000(); return; + case 0x273cc: + r3= page[(r23+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x26e80; + run_26800(); return; + case 0x273dc: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x273ec; + pc=0x50a00; + run_50800(); return; + case 0x273ec: + pc=0x2703c; + continue; + case 0x273f4: + r4 = 6 << 16; + r4 = r4 + 5420; + r31=0x27404; + pc=0x21400; + run_21000(); return; + case 0x27404: + r3= page[(r28+-32692)>>>2]; + r5= page[(r3+12)>>>2]; + pc=0x26fb4; + run_26800(); return; + case 0x27418: + r4 = r0 + 10; + if(r2 == r4) { + pc=0x27574; + continue; + } + r4 = r0 + 13; + if(r2 == r4) { + pc=0x275b4; + continue; + } + r4 = r0 + 9; + if(r2 == r4) { + pc=0x275dc; + continue; + } + case 0x2743c: + r2 = 6 << 16; + r5 = r2 + 5380; + r4 = r0 + -2; + r31=0x27450; + pc=0x1fc00; + run_1f800(); return; + case 0x27450: + addr=r28+-31329; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27464: + r2 = r2 << 24; + r2 = r2 >> 24; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27478: + r2 = r0 + 9; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x27490: + r4 = r0 + 47; + if(r2 != r4) { + pc=0x2743c; + continue; + } + r4= page[(r3+16)>>>2]; + r2= page[(r4+4)>>>2]; + r2 = r2 + -1; + page[(r4+4)>>>2] = r2; + if(r2 < 0) { + pc=0x275f4; + continue; + } + r3= page[(r3+16)>>>2]; + r2= page[(r3+0)>>>2]; + r4 = r2 + 1; + page[(r3+0)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + case 0x274d8: + r3= page[(r28+-31340)>>>2]; + page[(r28+-31332)>>>2] = r2; + r3= page[(r3+0)>>>2]; + if(r3 == r0) { + pc=0x27504; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + r31=0x27500; + pc=0x22a00; + run_22800(); return; + case 0x27500: + r2= page[(r28+-31332)>>>2]; + case 0x27504: + r3 = r0 + 47; + if(r2 == r3) { + pc=0x27598; + continue; + } + r2= page[(r28+-32692)>>>2]; + r3 = r0 + 2; + page[(r2+12)>>>2] = r3; + r2 = r0 + 47; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x2752c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2753c; + pc=0x50a00; + run_50800(); return; + case 0x2753c: + pc=0x271c4; + continue; + case 0x27544: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x27554; + pc=0x50a00; + run_50800(); return; + case 0x27554: + pc=0x27354; + continue; + case 0x2755c: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x2756c; + pc=0x50a00; + run_50800(); return; + case 0x2756c: + pc=0x270c8; + continue; + case 0x27574: + r2 = r0 + 4; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x2758c: + r3= page[(r28+-32692)>>>2]; + pc=0x270f8; + continue; + case 0x27598: + r3= page[(r28+-32692)>>>2]; + case 0x2759c: + r2 = r0 + 7; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x275b4: + r2 = r0 + 5; + page[(r3+12)>>>2] = r2; + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x275cc: + r2 = r0 + r0; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x275dc: + r2 = r0 + 3; + page[(r3+12)>>>2] = r2; + r2 = r0 + 32; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x26ed4; + run_26800(); return; + case 0x275f4: + r4= page[(r28+-31512)>>>2]; + r5= page[(r3+16)>>>2]; + r31=0x27604; + pc=0x50a00; + run_50800(); return; + case 0x27604: + pc=0x274d8; + continue; + case 0x27800: + pc=0x27800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_27800() throws ExecutionException { /* 0x27800 - 0x28000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x27800: + r29 = r29 + -40; + page[(r29+24)>>>2] = r16; + r16 = 6 << 16; + page[(r29+28)>>>2] = r17; + r17 = r4 + r0; + r4 = r16 + 17104; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r18; + r31=0x27828; + pc=0x1be00; + run_1b800(); return; + case 0x27828: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x27968; + continue; + } + case 0x27838: + r3 = r0 + 60; + if(r2 == r3) { + pc=0x278bc; + continue; + } + r3 = r0 + 34; + page[(r17+0)>>>2] = r0; + if(r2 == r3) { + pc=0x27888; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5644; + r31=0x27868; + pc=0x1fc00; + run_1f800(); return; + case 0x27868: + r2 = r0 + 1; + case 0x2786c: + r31= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x27888: + r4 = r0 + 34; + r31=0x27894; + pc=0x24800; + run_24800(); return; + case 0x27894: + if(r2 == r0) { + pc=0x2790c; + continue; + } + case 0x2789c: + r31= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r2 = r0 + 1; + r29 = r29 + 40; + pc=r31; + return; + case 0x278bc: + r5= page[(r28+-31300)>>>2]; + r2 = r0 + 1; + page[(r17+0)>>>2] = r2; + if(r5 == r0) { + pc=0x2799c; + continue; + } + r4 = r16 + 17104; + r31=0x278dc; + pc=0x1c600; + run_1c000(); return; + case 0x278dc: + r16 = r16 + 17104; + r4 = r0 + 62; + r17= page[(r16+4)>>>2]; + r31=0x278f0; + pc=0x24800; + run_24800(); return; + case 0x278f0: + if(r2 != r0) { + pc=0x2789c; + continue; + } + r18 = r17 + r0; + r31=0x27904; + pc=0x23000; + run_23000(); return; + case 0x27904: + pc=0x27924; + continue; + case 0x2790c: + r16 = 6 << 16; + r31=0x27918; + pc=0x23000; + run_23000(); return; + case 0x27918: + r17 = r0 + r0; + r18 = r0 + r0; + r16 = r16 + 17104; + case 0x27924: + r2= page[(r16+4)>>>2]; + if(r2 == r17) { + pc=0x2797c; + continue; + } + r4 = r18 + r0; + r31=0x27940; + pc=0x24c00; + run_24800(); return; + case 0x27940: + if(r2 != r0) { + pc=0x2789c; + continue; + } + r4 = r16 + r0; + r5 = r0 + r0; + page[(r29+16)>>>2] = r2; + r31=0x2795c; + pc=0x1c400; + run_1c000(); return; + case 0x2795c: + r2= page[(r29+16)>>>2]; + pc=0x2786c; + continue; + case 0x27968: + r31=0x27970; + pc=0x23000; + run_23000(); return; + case 0x27970: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x27838; + continue; + case 0x2797c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5684; + r31=0x27990; + pc=0x1fc00; + run_1f800(); return; + case 0x27990: + r2 = r0 + 1; + pc=0x2786c; + continue; + case 0x2799c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5604; + r31=0x279b0; + pc=0x1fc00; + run_1f800(); return; + case 0x279b0: + r2 = r0 + 1; + pc=0x2786c; + continue; + case 0x27a00: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r29 = r29 + -32; + r3 = r0 + 32; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r16; + if(r2 == r3) { + pc=0x27aec; + continue; + } + case 0x27a1c: + r3 = r0 + 60; + if(r2 == r3) { + pc=0x27b00; + continue; + } + r3 = r0 + 34; + if(r2 == r3) { + pc=0x27a60; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5740; + r31=0x27a48; + pc=0x1fc00; + run_1f800(); return; + case 0x27a48: + r2 = r0 + 1; + case 0x27a4c: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 32; + pc=r31; + return; + case 0x27a60: + r16 = 6 << 16; + r4 = r16 + 17104; + r31=0x27a70; + pc=0x1be00; + run_1b800(); return; + case 0x27a70: + r4 = r0 + 34; + r31=0x27a7c; + pc=0x24800; + run_24800(); return; + case 0x27a7c: + if(r2 == r0) { + pc=0x27a9c; + continue; + } + case 0x27a84: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r2 = r0 + 1; + r29 = r29 + 32; + pc=r31; + return; + case 0x27a9c: + r16 = r16 + 17104; + r31=0x27aa8; + pc=0x23000; + run_23000(); return; + case 0x27aa8: + r2= page[(r16+4)>>>2]; + if(r2 == r0) { + pc=0x27b20; + continue; + } + r4 = r0 + r0; + r31=0x27ac4; + pc=0x24c00; + run_24800(); return; + case 0x27ac4: + if(r2 != r0) { + pc=0x27a84; + continue; + } + r4 = r16 + r0; + r5 = r0 + r0; + page[(r29+16)>>>2] = r2; + r31=0x27ae0; + pc=0x1c400; + run_1c000(); return; + case 0x27ae0: + r2= page[(r29+16)>>>2]; + pc=0x27a4c; + continue; + case 0x27aec: + r31=0x27af4; + pc=0x23000; + run_23000(); return; + case 0x27af4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x27a1c; + continue; + case 0x27b00: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5704; + r31=0x27b14; + pc=0x1fc00; + run_1f800(); return; + case 0x27b14: + r2 = r0 + 1; + pc=0x27a4c; + continue; + case 0x27b20: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5684; + r31=0x27b34; + pc=0x1fc00; + run_1f800(); return; + case 0x27b34: + r2 = r0 + 1; + pc=0x27a4c; + continue; + case 0x27c00: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r29 = r29 + -24; + r3 = r0 + 32; + page[(r29+20)>>>2] = r31; + if(r2 == r3) { + pc=0x27c60; + continue; + } + case 0x27c18: r3 = r0 + 44; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25a38; + if(r2 == r3) { + pc=0x27c38; continue; } r2 = r0 + r0; - case 0x25a28: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x27c28: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x25a38: - /* Next insn is delay slot */ - r31 = 0x25a40; - pc = 0x23400; - run_23400(); - return; - case 0x25a40: + case 0x27c38: + r31=0x27c40; + pc=0x23000; + run_23000(); return; + case 0x27c40: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25a74; + if(r2 == r3) { + pc=0x27c74; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x27c60: + r31=0x27c68; + pc=0x23000; + run_23000(); return; + case 0x27c68: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x25a18; + pc=0x27c18; continue; - case 0x25a74: - /* Next insn is delay slot */ - r31 = 0x25a7c; - pc = 0x23400; - run_23400(); - return; - case 0x25a7c: + case 0x27c74: + r31=0x27c7c; + pc=0x23000; + run_23000(); return; + case 0x27c7c: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x25a28; + pc=0x27c28; 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 */ + case 0x27e00: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; + if(r2 == r3) { + pc=0x27e64; continue; } r16 = r0 + r0; - case 0x25c20: + case 0x27e20: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25c44; + if(r2 == r3) { + pc=0x27e44; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r16 + r0; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x27e44: + r31=0x27e4c; + pc=0x23000; + run_23000(); return; + case 0x27e4c: + r31= page[(r29+20)>>>2]; r2 = r16 + r0; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x25c64: - /* Next insn is delay slot */ - r31 = 0x25c6c; - pc = 0x23400; - run_23400(); - return; - case 0x25c6c: + case 0x27e64: + r31=0x27e6c; + pc=0x23000; + run_23000(); return; + case 0x27e6c: r3 = r0 + 49; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25cb4; + if(r2 == r3) { + pc=0x27eb4; continue; } r3 = r0 + 50; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25ccc; + if(r2 == r3) { + pc=0x27ecc; continue; } r3 = r0 + 51; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x25cd8; + if(r2 == r3) { + pc=0x27ed8; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 30352; - /* Next insn is delay slot */ - r31 = 0x25ca4; - pc = 0x20600; - run_20600(); - return; - case 0x25ca4: + r5 = r5 + 5776; + r31=0x27ea4; + pc=0x1fc00; + run_1f800(); return; + case 0x27ea4: 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x25c20; + pc=0x27e20; continue; - case 0x25cb4: + case 0x27eb4: 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 */ + case 0x27eb8: + r31=0x27ec0; + pc=0x23000; + run_23000(); return; + case 0x27ec0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x25c20; + pc=0x27e20; continue; - case 0x25ccc: + case 0x27ecc: r16 = r0 + 2; - /* Next insn is delay slot */ - pc = 0x25cb8; + pc=0x27eb8; continue; - case 0x25cd8: + case 0x27ed8: r16 = r0 + 4; - /* Next insn is delay slot */ - pc = 0x25cb8; + pc=0x27eb8; continue; - case 0x25e00: - pc = 0x25e00; + case 0x28000: + pc=0x28000; 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_25e00() throws ExecutionException { /* 0x25e00 - 0x26000 */ + private final void run_28000() throws ExecutionException { /* 0x28000 - 0x28800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x25e00: + for(;;) { + switch(pc) { + case 0x28000: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = 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: + page[(r29+20)>>>2] = r31; + r31=0x2801c; + pc=0x20200; + run_20000(); return; + case 0x2801c: 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; + r3 = r3 + 17220; + r4= page[(r3+4)>>>2]; + page[(r2+0)>>>2] = r3; + page[(r2+4)>>>2] = r4; + page[(r3+4)>>>2] = r2; + r3= page[(r2+4)>>>2]; + r31= page[(r29+20)>>>2]; + page[(r2+8)>>>2] = r16; + r16= page[(r29+16)>>>2]; + page[(r3+0)>>>2] = r2; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x28200: r29 = r29 + -56; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + page[(r29+24)>>>2] = r18; r18 = 6 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = r16; r16 = r4 + r0; - r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r4= page[(r18+17104)>>>2]; 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: + page[(r29+48)>>>2] = r30; + page[(r29+52)>>>2] = r31; + page[(r29+44)>>>2] = r23; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+20)>>>2] = r17; + r31=0x28244; + pc=0x4b600; + run_4b000(); return; + case 0x28244: r30 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x26088; + if(r2 == r0) { + pc=0x28288; continue; } - case 0x26050: - r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + case 0x28250: + r31= page[(r29+52)>>>2]; 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]; + r23= page[(r29+44)>>>2]; + r30= page[(r29+48)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x26088: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x26100; + case 0x28288: + if(r16 == r0) { + pc=0x28300; 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: + case 0x28294: + r4 = r19 + 17208; + r31=0x282a0; + pc=0x1be00; + run_1b800(); return; + case 0x282a0: 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; + r4 = r19 + 17208; + r5 = r5 + 5796; + r31=0x282b4; + pc=0x1c600; + run_1c000(); return; + case 0x282b4: + r5= page[(r18+17104)>>>2]; + r4 = r19 + 17208; + r31=0x282c4; + pc=0x1c600; + run_1c000(); return; + case 0x282c4: + r5 = 6 << 16; + r4 = r19 + 17208; + r5 = r5 + 12036; + r31=0x282d8; + pc=0x1c600; + run_1c000(); return; + case 0x282d8: + r4 = r19 + 17208; 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]; + r31=0x282e8; + pc=0x1c400; + run_1c000(); return; + case 0x282e8: + r5= page[(r19+17208)>>>2]; r4 = r0 + -2; - /* Next insn is delay slot */ - r31 = 0x260f8; - pc = 0x20600; - run_20600(); - return; - case 0x260f8: - /* Next insn is delay slot */ - pc = 0x26050; + r31=0x282f8; + pc=0x1fc00; + run_1f800(); return; + case 0x282f8: + pc=0x28250; continue; - case 0x26100: + case 0x28300: r21 = 6 << 16; - r17 = readPages[(r21 + -24420) >>> 12][((r21 + -24420) >>> 2) & 0x3ff]; - r21 = r21 + -24420; + r17= page[(r21+17220)>>>2]; + r21 = r21 + 17220; r19 = 6 << 16; - if (r17 == r21) { - /* Next insn is delay slot */ - pc = 0x26094; + if(r17 == r21) { + pc=0x28294; continue; } - r20 = r19 + -24432; + r20 = r19 + 17208; r23 = r19 + r0; r16 = r20 + r0; r22 = r0 + 47; - /* Next insn is delay slot */ - pc = 0x26140; + pc=0x28340; continue; - case 0x26130: - r17 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - if (r17 == r21) { - /* Next insn is delay slot */ - pc = 0x26094; + case 0x28330: + r17= page[(r17+0)>>>2]; + if(r17 == r21) { + pc=0x28294; continue; } - case 0x26140: + case 0x28340: 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]; + r31=0x2834c; + pc=0x1be00; + run_1b800(); return; + case 0x2834c: + r5= page[(r17+8)>>>2]; 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; + r31=0x2835c; + pc=0x1c600; + run_1c000(); return; + case 0x2835c: + r2= page[(r20+4)>>>2]; + if(r2 == r0) { + pc=0x2839c; continue; } - r4 = readPages[(r23 + -24432) >>> 12][((r23 + -24432) >>> 2) & 0x3ff]; + r4= page[(r23+17208)>>>2]; 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 */ + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r22) { - /* Next insn is delay slot */ - pc = 0x2619c; + if(r2 == r22) { + pc=0x2839c; continue; } r4 = 6 << 16; - r4 = r4 + -24432; + r4 = r4 + 17208; 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]; + r31=0x2839c; + pc=0x1c400; + run_1c000(); return; + case 0x2839c: + r5= page[(r18+17104)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x261ac; - pc = 0x1cc00; - run_1cc00(); - return; - case 0x261ac: + r31=0x283ac; + pc=0x1c600; + run_1c000(); return; + case 0x283ac: 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]; + r31=0x283bc; + pc=0x1c400; + run_1c000(); return; + case 0x283bc: + r4= page[(r19+17208)>>>2]; 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; + r31=0x283cc; + pc=0x4b600; + run_4b000(); return; + case 0x283cc: + if(r2 == r0) { + pc=0x28330; continue; } r30 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x26050; + pc=0x28250; 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; + case 0x28400: + r29 = r29 + -64; 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: + page[(r29+52)>>>2] = r22; + r22 = 6 << 16; + page[(r29+60)>>>2] = r31; + page[(r29+44)>>>2] = r20; + page[(r29+32)>>>2] = r17; + page[(r29+56)>>>2] = r23; 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; + page[(r29+48)>>>2] = r21; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + page[(r29+28)>>>2] = r16; + r31=0x28440; + pc=0x26200; + run_26000(); return; + case 0x28440: + r4 = r22 + 17264; + r31=0x2844c; + pc=0x1be00; + run_1b800(); return; + case 0x2844c: + r5= page[(r17+17104)>>>2]; + r4 = r22 + 17264; + r31=0x2845c; + pc=0x1c600; + run_1c000(); return; + case 0x2845c: + r20 = 6 << 16; 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: - 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; + r4 = r22 + 17264; + r31=0x28470; + pc=0x1c400; + run_1c000(); return; + case 0x28470: + r4 = r20 + 17252; + r31=0x2847c; + pc=0x1be00; + run_1b800(); return; + case 0x2847c: + r5= page[(r17+17104)>>>2]; + r4 = r20 + 17252; + r31=0x2848c; + pc=0x1c600; + run_1c000(); return; + case 0x2848c: + r4 = r20 + 17252; 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 */ + r31=0x2849c; + pc=0x1c400; + run_1c000(); return; + case 0x2849c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 32; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x262b0; + if(r3 == r2) { + pc=0x28774; 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; - return; - 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) { - case 0x26400: - 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 0x26440: - r4 = r16 + -24536; - /* Next insn is delay slot */ - r31 = 0x2644c; - pc = 0x1c400; - run_1c400(); - return; - 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 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; - return; - 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) { - case 0x26600: - r29 = r29 + -32; - 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 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; - return; - case 0x26800: - pc = 0x26800; - return; - 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) { - case 0x26800: - 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: - writePages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff] = r2; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x26840; + case 0x284ac: + r4 = r17 + 17104; + r23= page[(r29+16)>>>2]; + r31=0x284bc; + pc=0x1be00; + run_1b800(); return; + case 0x284bc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 123; + if(r2 == r3) { + pc=0x285a4; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; - return; - 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 0x26a00: - pc = 0x26a00; - return; - 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) { - case 0x26a00: - 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; - } - r19 = 6 << 16; - r19 = r19 + -24388; + r19 = r20 + 17252; r18 = r0 + 126; - r16 = r17 + -24536; - r20 = r0 + 44; + r16 = r17 + 17104; + r21 = r0 + 44; r4 = r19 + r0; - if (r3 == r18) { - /* Next insn is delay slot */ - pc = 0x26ac8; + if(r2 == r18) { + pc=0x28544; continue; } - case 0x26a6c: + case 0x284e8: r5 = r0 + 118; - /* Next insn is delay slot */ - r31 = 0x26a78; - pc = 0x1ca00; - run_1ca00(); - return; - 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; + r31=0x284f4; + pc=0x1c400; + run_1c000(); return; + case 0x284f4: + r31=0x284fc; + pc=0x25800; + run_25800(); return; + case 0x284fc: + r31=0x28504; + pc=0x27c00; + run_27800(); return; + case 0x28504: + if(r2 == r0) { + pc=0x28580; 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 0x2850c: + r2= page[(r16+4)>>>2]; + r3= page[(r16+8)>>>2]; + if(r2 == r3) { + pc=0x2875c; + continue; } - 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; + case 0x28520: + r3= page[(r17+17104)>>>2]; + r4 = r2 + 1; + r2 = r3 + r2; + page[(r16+4)>>>2] = r4; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r21&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; r4 = r19 + r0; - if (r3 != r18) { - /* Next insn is delay slot */ - pc = 0x26a6c; + if(r2 != r18) { + pc=0x284e8; continue; } - case 0x26ac8: + case 0x28544: r5 = r0 + 114; - /* Next insn is delay slot */ - r31 = 0x26ad4; - pc = 0x1ca00; - run_1ca00(); - return; - case 0x26ad4: + r31=0x28550; + pc=0x1c400; + run_1c000(); return; + case 0x28550: 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; + r31=0x28560; + pc=0x1c400; + run_1c000(); return; + case 0x28560: + r31=0x28568; + pc=0x23000; + run_23000(); return; + case 0x28568: + r31=0x28570; + pc=0x25800; + run_25800(); return; + case 0x28570: + r31=0x28578; + pc=0x27c00; + run_27800(); return; + case 0x28578: + if(r2 != r0) { + pc=0x2850c; 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 */ + case 0x28580: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x26b28; + if(r3 == r2) { + pc=0x285a4; continue; } - r5 = 5 << 16; + r5 = 6 << 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 = r5 + 5260; + r31=0x285a4; + pc=0x1fc00; + run_1f800(); return; + case 0x285a4: 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 = r17 + 17104; + r31=0x285b4; + pc=0x1c400; + run_1c000(); return; + case 0x285b4: + r4 = r17 + 17104; + r31=0x285c0; + pc=0x1c200; + run_1c000(); return; + case 0x285c0: + r5 = r0 + r0; + r4 = r20 + 17252; + r18 = r2 + r0; + r31=0x285d4; + pc=0x1c400; + run_1c000(); return; + case 0x285d4: + r4 = r17 + 17104; + r31=0x285e0; + pc=0x1be00; + run_1b800(); return; + case 0x285e0: + r5= page[(r20+17252)>>>2]; + r4 = r17 + 17104; + r31=0x285f0; + pc=0x1c600; + run_1c000(); return; + case 0x285f0: + r4 = r17 + 17104; + r5 = r0 + r0; + r31=0x28600; + pc=0x1c400; + run_1c000(); return; + case 0x28600: + r5 = 6 << 16; 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; + r5 = r5 + 29160; + r6 = r23 + r0; + r7 = r0 + 1; + r31=0x2861c; + pc=0x42800; + run_42800(); return; + case 0x2861c: + if(r2 != r0) { + pc=0x28680; continue; } - r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - r16 = 5 << 16; - r18 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r2= page[(r29+16)>>>2]; + r16 = 6 << 16; + r17= page[(r2+16)>>>2]; 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]; + r5 = r16 + 6276; + r31=0x28640; + pc=0x1fc00; + run_1f800(); return; + case 0x28640: + r3= page[(r17+4)>>>2]; + r2= page[(r28+-32692)>>>2]; 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: + page[(r2+0)>>>2] = r3; + r3= page[(r17+0)>>>2]; + r5 = r16 + 6276; + page[(r2+4)>>>2] = r3; + r2= page[(r28+-32672)>>>2]; + r3 = 6 << 16; + r3 = r3 + 6112; + page[(r2+8)>>>2] = r3; + r3 = 6 << 16; + r3 = r3 + 6124; + page[(r2+12)>>>2] = r3; + r31=0x28680; + pc=0x1fc00; + run_1f800(); return; + case 0x28680: 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]; + r31=0x2868c; + pc=0x20200; + run_20000(); return; + case 0x2868c: 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; - return; - 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) { - case 0x26c00: - writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r17; + r2= page[(r28+-32692)>>>2]; + r3= page[(r2+4)>>>2]; + r19= page[(r2+0)>>>2]; + page[(r16+0)>>>2] = r3; + r4 = r19 + r0; + r31=0x286b0; + pc=0x10268; + run_10000(); return; + case 0x286b0: + r17 = r2 + 1; + r4 = r17 + r0; + r31=0x286c0; + pc=0x20200; + run_20000(); return; + case 0x286c0: + r4 = r2 + r0; + r5 = r19 + r0; + r6 = r17 + r0; + r31=0x286d4; + pc=0x56fe0; + run_56800(); return; + case 0x286d4: + r19= page[(r22+17264)>>>2]; + page[(r16+4)>>>2] = r2; + r4 = r19 + r0; + r31=0x286e8; + pc=0x10268; + run_10000(); return; + case 0x286e8: + r17 = r2 + 1; + r4 = r17 + r0; + r31=0x286f8; + pc=0x20200; + run_20000(); return; + case 0x286f8: + r4 = r2 + r0; + r5 = r19 + r0; + r6 = r17 + r0; + r31=0x2870c; + pc=0x56fe0; + run_56800(); return; + case 0x2870c: + page[(r16+8)>>>2] = r2; + page[(r16+12)>>>2] = r18; r4 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x26c10; - pc = 0x24a00; - run_24a00(); + r31=0x28720; + pc=0x24e00; + run_24800(); return; + case 0x28720: + page[(r16+16)>>>2] = r2; + r2= page[(r29+16)>>>2]; + r31= page[(r29+60)>>>2]; + page[(r2+16)>>>2] = r16; + r23= page[(r29+56)>>>2]; + r22= page[(r29+52)>>>2]; + r21= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 64; + pc=r31; 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 0x26c44: + case 0x2875c: r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x26c50; - pc = 0x1c600; - run_1c600(); + r31=0x28768; + pc=0x1c000; + run_1c000(); return; + case 0x28768: + r2= page[(r16+4)>>>2]; + pc=0x28520; + continue; + case 0x28774: + r31=0x2877c; + pc=0x23000; + run_23000(); return; + case 0x2877c: + pc=0x284ac; + continue; + case 0x28800: + pc=0x28800; 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; - 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 */ + private final void run_28800() throws ExecutionException { /* 0x28800 - 0x29000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x26e00: - r2 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x28800: + r2= page[(r28+-31328)>>>2]; 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; + page[(r29+108)>>>2] = r31; + page[(r29+104)>>>2] = r30; + page[(r29+100)>>>2] = r23; + page[(r29+96)>>>2] = r22; + page[(r29+92)>>>2] = r21; + page[(r29+88)>>>2] = r20; + page[(r29+84)>>>2] = r19; + page[(r29+80)>>>2] = r18; + page[(r29+76)>>>2] = r17; + page[(r29+72)>>>2] = r16; + if(r2 == r0) { + pc=0x28d00; continue; } + case 0x28838: + r2= page[(r28+-32764)>>>2]; + r2 = r2 + -1; + page[(r28+-32764)>>>2] = r2; + if(r2 < 0) { + pc=0x28cc0; + continue; + } + case 0x28850: + r5 = r0 + r0; + r16 = 6 << 16; + r4 = r29 + 16; + r31=0x28864; + pc=0x26200; + run_26000(); return; + case 0x28864: + r21 = 6 << 16; + r4 = r16 + 17264; + r31=0x28874; + pc=0x1be00; + run_1b800(); return; + case 0x28874: + r5= page[(r21+17104)>>>2]; + r4 = r16 + 17264; + r31=0x28884; + pc=0x1c600; + run_1c000(); return; + case 0x28884: r18 = 6 << 16; + r5 = r0 + r0; + r4 = r16 + 17264; + r31=0x28898; + pc=0x1c400; + run_1c000(); return; + case 0x28898: + r4 = r18 + 17252; + r31=0x288a4; + pc=0x1be00; + run_1b800(); return; + case 0x288a4: + r5= page[(r21+17104)>>>2]; + r4 = r18 + 17252; + r31=0x288b4; + pc=0x1c600; + run_1c000(); return; + case 0x288b4: + r4 = r18 + 17252; + r5 = r0 + 32; + r31=0x288c4; + pc=0x1c400; + run_1c000(); return; + case 0x288c4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x28cac; + continue; + } + case 0x288d4: + r22= page[(r29+16)>>>2]; + if(r2 == r0) { + pc=0x289f0; + continue; + } + r23 = 6 << 16; r17 = r0 + r0; r16 = r0 + r0; - r19 = r0 + 126; - r18 = r18 + -24388; - /* Next insn is delay slot */ - pc = 0x26ecc; + r23 = r23 + 5244; + r20 = r0 + 126; + r19 = r18 + 17252; + pc=0x28944; continue; - 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; + case 0x28900: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r4 = r19 + r0; + if(r2 == r20) { + pc=0x2899c; continue; } - case 0x26e98: + case 0x28910: r5 = r0 + 118; - /* Next insn is delay slot */ - r31 = 0x26ea4; - pc = 0x1ca00; - run_1ca00(); - return; - case 0x26ea4: - r4 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r31=0x2891c; + pc=0x1c400; + run_1c000(); return; + case 0x2891c: + r4= page[(r28+-31328)>>>2]; 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: + r31=0x28930; + pc=0x1aa00; + run_1a800(); return; + case 0x28930: + r31=0x28938; + pc=0x27c00; + run_27800(); return; + case 0x28938: r17 = r17 + 32; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x26f4c; + if(r2 == r0) { + pc=0x289f0; 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; + case 0x28944: + r5= page[(r28+-32684)>>>2]; + r2 = r16 < r5 ? 1 : 0; + if(r2 != r0) { + pc=0x28900; 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; + r4= page[(r28+-31328)>>>2]; + r2 = r5 << 1; + r5 = r5 << 6; + page[(r28+-32684)>>>2] = r2; + r31=0x28970; + pc=0x4fa00; + run_4f800(); return; + case 0x28970: + page[(r28+-31328)>>>2] = r2; + if(r2 != r0) { + pc=0x28900; continue; } - case 0x26ef8: + r4 = r0 + -3; + r5 = r23 + r0; + r31=0x2898c; + pc=0x1fc00; + run_1f800(); return; + case 0x2898c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r4 = r19 + r0; + if(r2 != r20) { + pc=0x28910; + continue; + } + case 0x2899c: 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: + r31=0x289a8; + pc=0x1c400; + run_1c000(); return; + case 0x289a8: + r31=0x289b0; + pc=0x23000; + run_23000(); return; + case 0x289b0: 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: + r31=0x289c0; + pc=0x26200; + run_26000(); return; + case 0x289c0: + r30= page[(r28+-31328)>>>2]; + r4= page[(r29+56)>>>2]; + r30 = r30 + r17; + r31=0x289d4; + pc=0x40c00; + run_40800(); return; + case 0x289d4: + page[(r30+0)>>>2] = r2; + r31=0x289e0; + pc=0x27c00; + run_27800(); return; + case 0x289e0: r16 = r16 + 1; r17 = r17 + 32; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x26ecc; + if(r2 != r0) { + pc=0x28944; continue; } - case 0x26f4c: + case 0x289f0: + r5 = r0 + r0; + r4 = r18 + 17252; + r31=0x28a00; + pc=0x1c400; + run_1c000(); return; + case 0x28a00: + r4 = r21 + 17104; + r31=0x28a0c; + pc=0x1be00; + run_1b800(); return; + case 0x28a0c: + r5= page[(r18+17252)>>>2]; + r4 = r21 + 17104; + r31=0x28a1c; + pc=0x1c600; + run_1c000(); return; + case 0x28a1c: + r4 = r21 + 17104; + r5 = r0 + r0; + r31=0x28a2c; + pc=0x1c400; + run_1c000(); return; + case 0x28a2c: + r5 = 6 << 16; 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; + r5 = r5 + 29160; + r6 = r22 + r0; + r7 = r0 + r0; + r31=0x28a48; + pc=0x42800; + run_42800(); return; + case 0x28a48: + r2= page[(r29+64)>>>2]; + if(r2 == r0) { + pc=0x28cdc; + continue; } - r17 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r17= page[(r2+16)>>>2]; 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= page[(r17+4)>>>2]; + r18 = r19 + 31320; + page[(r29+16)>>>2] = r2; + r2= page[(r17+0)>>>2]; + r23= page[(r28+-32692)>>>2]; + page[(r29+20)>>>2] = 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; + page[(r29+24)>>>2] = r2; + page[(r29+28)>>>2] = r2; + r2= page[(r17+12)>>>2]; + r21= page[(r18+12)>>>2]; + page[(r29+32)>>>2] = 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; + r6= page[(r17+8)>>>2]; + page[(r28+-32692)>>>2] = r2; + r5 = 6 << 16; + r2= page[(r18+8)>>>2]; + r5 = r5 + 6220; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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: + r30= page[(r28+-32672)>>>2]; + r31=0x28ac4; + pc=0x3fa00; + run_3f800(); return; + case 0x28ac4: 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 */ + r31=0x28ad0; + pc=0x3fc00; + run_3f800(); return; + case 0x28ad0: + r31=0x28ad8; + pc=0x23000; + run_23000(); return; + case 0x28ad8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x270e0; - run_27000(); - return; + if(r3 == r0) { + pc=0x28bc8; + continue; } - 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) { - case 0x27000: r20 = 6 << 16; r16 = r0 + r0; - r20 = r20 + -11392; - /* Next insn is delay slot */ - pc = 0x27060; + r20 = r20 + 30256; + pc=0x28b48; continue; - case 0x27014: + case 0x28afc: 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]; + r31=0x28b0c; + pc=0x26200; + run_26000(); return; + case 0x28b0c: + r4= page[(r29+56)>>>2]; + r31=0x28b18; + pc=0x40c00; + run_40800(); return; + case 0x28b18: + r5= page[(r28+-31328)>>>2]; 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: + r31=0x28b30; + pc=0x56fe0; + run_56800(); return; + case 0x28b30: + r31=0x28b38; + pc=0x27c00; + run_27800(); return; + case 0x28b38: r16 = r16 + 32; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x270e0; + if(r2 == r0) { + pc=0x28bc8; continue; } - case 0x2705c: - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; - if ((tmp & 0x80) != 0) - tmp |= 0xffffff00; /* sign extend */ + case 0x28b44: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - case 0x27060: + case 0x28b48: r2 = r0 + 126; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x27014; + if(r3 != r2) { + pc=0x28afc; continue; } - /* Next insn is delay slot */ - r31 = 0x27074; - pc = 0x23400; - run_23400(); - return; - case 0x27074: + r31=0x28b5c; + pc=0x23000; + run_23000(); return; + case 0x28b5c: 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]; + r31=0x28b6c; + pc=0x26200; + run_26000(); return; + case 0x28b6c: + r6= page[(r29+56)>>>2]; 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; + r31=0x28b84; + pc=0x42800; + run_42800(); return; + case 0x28b84: + if(r2 != r0) { + pc=0x28b9c; continue; } - r2 = readPages[(r19 + -10328) >>> 12][((r19 + -10328) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x271a8; + r2= page[(r19+31320)>>>2]; + if(r2 == r0) { + pc=0x28c90; continue; } - case 0x270b4: - r2 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + case 0x28b9c: + r2= page[(r28+-31328)>>>2]; r2 = r2 + r16; - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r3= page[(r2+0)>>>2]; + r2= page[(r29+60)>>>2]; 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: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2705c; + page[(r2+16)>>>2] = r3; + r31=0x28bc0; + pc=0x27c00; + run_27800(); return; + case 0x28bc0: + if(r2 != r0) { + pc=0x28b44; continue; } - case 0x270e0: - r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + case 0x28bc8: + r2= page[(r28+-32692)>>>2]; 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 */ + page[(r2+12)>>>2] = r3; + r3= page[(r17+16)>>>2]; + page[(r2+16)>>>2] = r3; + r31=0x28be8; + pc=0x20800; + run_20800(); return; + case 0x28be8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; r2 = r0 + 125; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x27120; + if(r5 == r2) { + pc=0x28c08; continue; } - r4 = 5 << 16; - r4 = r4 + 28612; - /* Next insn is delay slot */ - r31 = 0x27120; - pc = 0x21a00; - run_21a00(); - return; - case 0x27120: + r4 = 6 << 16; + r4 = r4 + 4056; + r31=0x28c08; + pc=0x21400; + run_21000(); return; + case 0x28c08: 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; + r31=0x28c14; + pc=0x3fe00; + run_3f800(); return; + case 0x28c14: + r3= page[(r18+12)>>>2]; + r2= page[(r18+8)>>>2]; + page[(r28+-32672)>>>2] = 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; + page[(r28+-32692)>>>2] = r23; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r21) { + pc=0x28c48; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 6252; + r31=0x28c48; + pc=0x1fc00; + run_1f800(); return; + case 0x28c48: + r31=0x28c50; + pc=0x24000; + run_24000(); return; + case 0x28c50: + r2= page[(r28+-32764)>>>2]; + r31= page[(r29+108)>>>2]; 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; + r30= page[(r29+104)>>>2]; + r23= page[(r29+100)>>>2]; + r22= page[(r29+96)>>>2]; + r21= page[(r29+92)>>>2]; + r20= page[(r29+88)>>>2]; + r19= page[(r29+84)>>>2]; + r18= page[(r29+80)>>>2]; + r17= page[(r29+76)>>>2]; + r16= page[(r29+72)>>>2]; + page[(r28+-32764)>>>2] = r2; r29 = r29 + 112; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x271a8: - r5 = 5 << 16; + case 0x28c90: + r5 = 6 << 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; + r5 = r5 + 6228; + r31=0x28ca4; + pc=0x1fc00; + run_1f800(); return; + case 0x28ca4: + pc=0x28b9c; continue; - case 0x271c4: - r5 = 5 << 16; + case 0x28cac: + r31=0x28cb4; + pc=0x23000; + run_23000(); return; + case 0x28cb4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x288d4; + continue; + case 0x28cc0: + r5 = 6 << 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; + r5 = r5 + 6136; + r31=0x28cd4; + pc=0x1fc00; + run_1f800(); return; + case 0x28cd4: + pc=0x28850; 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: + case 0x28cdc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 6180; + r31=0x28cf0; + pc=0x1fc00; + run_1f800(); return; + case 0x28cf0: + r31=0x28cf8; + pc=0x23800; + run_23800(); return; + case 0x28cf8: + pc=0x28c50; + continue; + case 0x28d00: + r5= page[(r28+-32684)>>>2]; + r4 = r0 + r0; + r2 = r5 << 1; + r5 = r5 << 6; + page[(r28+-32684)>>>2] = r2; + r31=0x28d1c; + pc=0x4fa00; + run_4f800(); return; + case 0x28d1c: + page[(r28+-31328)>>>2] = r2; + if(r2 != r0) { + pc=0x28838; + continue; + } + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 5244; + r31=0x28d3c; + pc=0x1fc00; + run_1f800(); return; + case 0x28d3c: + pc=0x28838; + continue; + case 0x28e00: 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; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; r16 = r5 + r0; - if (r6 == r2) { - /* Next insn is delay slot */ - pc = 0x2750c; + if(r6 == r2) { + pc=0x28f0c; continue; } - r2 = (r6 & 0xffffffffL) < (257 & 0xffffffffL) ? 1 : 0; + r2 = (r6&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; r17 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x274e0; + if(r2 != r0) { + pc=0x28ee0; continue; } r2 = r0 + 512; - if (r6 == r2) { - /* Next insn is delay slot */ - pc = 0x274a0; + if(r6 == r2) { + pc=0x28ea0; continue; } r2 = r0 + 768; - if (r6 != r2) { - /* Next insn is delay slot */ - pc = 0x274e8; + if(r6 != r2) { + pc=0x28ee8; 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]; + r3 = r2 + 31424; + r3= page[(r3+40)>>>2]; + case 0x28e54: + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; r2 = r2 & 2; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x274c4; + if(r2 == r0) { + pc=0x28ec4; continue; } - case 0x27470: - r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x27528; + case 0x28e70: + r2= page[(r17+0)>>>2]; + if(r2 == r0) { + pc=0x28f28; continue; } - case 0x27480: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + case 0x28e80: + r31= page[(r29+28)>>>2]; r2 = r16 << 8; r2 = r2 | r16; - r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x274a0: + case 0x28ea0: 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]; + r3 = r2 + 31424; + r2= page[(r2+31424)>>>2]; + r3= page[(r3+36)>>>2]; + r2= page[(r2+4)>>>2]; r2 = r2 & 2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x27470; + if(r2 != r0) { + pc=0x28e70; continue; } - case 0x274c4: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + case 0x28ec4: + r31= page[(r29+28)>>>2]; r2 = r16 + r0; - r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x274e0: - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x274c4; + case 0x28ee0: + if(r6 == r0) { + pc=0x28ec4; continue; } - case 0x274e8: - r4 = 5 << 16; - r4 = r4 + 30636; + case 0x28ee8: + r4 = 6 << 16; + r4 = r4 + 6300; r5 = r6 + r0; - /* Next insn is delay slot */ - r31 = 0x274fc; - pc = 0x21a00; - run_21a00(); - return; - case 0x274fc: + r31=0x28efc; + pc=0x21400; + run_21000(); return; + case 0x28efc: r3 = r0 + r0; r2 = 6 << 16; - /* Next insn is delay slot */ - pc = 0x27454; + pc=0x28e54; 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]; + case 0x28f0c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r5 << 8; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x27528: - r3 = (r3 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + case 0x28f28: + 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; + page[(r17+0)>>>2] = r3; + pc=0x28e80; continue; - case 0x27600: - pc = 0x27600; + case 0x29000: + pc=0x29000; 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_27600() throws ExecutionException { /* 0x27600 - 0x27800 */ + private final void run_29000() throws ExecutionException { /* 0x29000 - 0x29800 */ 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: + for(;;) { + switch(pc) { + case 0x29000: r2 = r0 + 1; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x27a14; + if(r4 == r2) { + pc=0x29014; continue; } - case 0x27a0c: - /* Next insn is delay slot */ - pc = r31; + case 0x2900c: + pc=r31; return; - case 0x27a14: - r3 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + case 0x29014: + r3= page[(r5+0)>>>2]; r2 = r0 + 255; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x27a0c; + if(r3 != r2) { + pc=0x2900c; continue; } r2 = 6 << 16; - r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; r2 = r2 & 32; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x27a0c; + if(r2 == r0) { + pc=0x2900c; continue; } - r5 = 5 << 16; + r5 = 6 << 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: + r5 = r5 + 6324; + pc=0x1fc00; + run_1f800(); return; + case 0x29200: 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; + page[(r29+20)>>>2] = r31; + r31=0x29210; + pc=0x27c00; + run_27800(); return; + case 0x29210: + if(r2 == r0) { + pc=0x2926c; continue; } - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + 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; + r3 = (r2&0xffffffffL) < (40&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x29318; continue; } - r3 = 5 << 16; + r3 = 6 << 16; r2 = r2 << 2; - r3 = r3 + 32248; + r3 = r3 + 7912; r2 = r3 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x27c54: - /* Next insn is delay slot */ - r31 = 0x27c5c; - pc = 0x23400; - run_23400(); - return; - case 0x27c5c: + case 0x29254: + r31=0x2925c; + pc=0x23000; + run_23000(); return; + case 0x2925c: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x27d40; + if(r2 == r3) { + pc=0x29340; continue; } r2 = r0 + 4; - case 0x27c6c: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x2926c: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x2927c: + r31=0x29284; + pc=0x23000; + run_23000(); return; + case 0x29284: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r4 = r0 + -33; r4 = r2 & r4; r3 = r0 + 80; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x27ca8; + if(r4 != r3) { + pc=0x292a8; 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 */ + r31=0x292a4; + pc=0x23000; + run_23000(); return; + case 0x292a4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - case 0x27ca8: + case 0x292a8: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x27d54; + if(r2 == r3) { + pc=0x29354; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x27cc8: - /* Next insn is delay slot */ - r31 = 0x27cd0; - pc = 0x23400; - run_23400(); - return; - case 0x27cd0: + case 0x292c8: + r31=0x292d0; + pc=0x23000; + run_23000(); return; + case 0x292d0: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x27d7c; + if(r2 == r3) { + pc=0x2937c; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r0 + 2; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x27cf0: - /* Next insn is delay slot */ - r31 = 0x27cf8; - pc = 0x23400; - run_23400(); - return; - case 0x27cf8: + case 0x292f0: + r31=0x292f8; + pc=0x23000; + run_23000(); return; + case 0x292f8: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x27d68; + if(r2 == r3) { + pc=0x29368; continue; } - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; r2 = r0 + 3; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x27d18: - r5 = 5 << 16; + case 0x29318: + r5 = 6 << 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]; + r5 = r5 + 5020; + r31=0x2932c; + pc=0x1fc00; + run_1f800(); return; + case 0x2932c: + r31= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x27d40: - /* Next insn is delay slot */ - r31 = 0x27d48; - pc = 0x23400; - run_23400(); - return; - case 0x27d48: + case 0x29340: + r31=0x29348; + pc=0x23000; + run_23000(); return; + case 0x29348: r2 = r0 + 4; - /* Next insn is delay slot */ - pc = 0x27c6c; + pc=0x2926c; continue; - case 0x27d54: - /* Next insn is delay slot */ - r31 = 0x27d5c; - pc = 0x23400; - run_23400(); - return; - case 0x27d5c: + case 0x29354: + r31=0x2935c; + pc=0x23000; + run_23000(); return; + case 0x2935c: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x27c6c; + pc=0x2926c; continue; - case 0x27d68: - /* Next insn is delay slot */ - r31 = 0x27d70; - pc = 0x23400; - run_23400(); - return; - case 0x27d70: + case 0x29368: + r31=0x29370; + pc=0x23000; + run_23000(); return; + case 0x29370: r2 = r0 + 3; - /* Next insn is delay slot */ - pc = 0x27c6c; + pc=0x2926c; continue; - case 0x27d7c: - /* Next insn is delay slot */ - r31 = 0x27d84; - pc = 0x23400; - run_23400(); - return; - case 0x27d84: + case 0x2937c: + r31=0x29384; + pc=0x23000; + run_23000(); return; + case 0x29384: r2 = r0 + 2; - /* Next insn is delay slot */ - pc = 0x27c6c; + pc=0x2926c; 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; + case 0x29400: r29 = r29 + -72; - r3 = r0 + 32; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + r5 = r0 + r0; + page[(r29+64)>>>2] = r16; 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: + page[(r29+68)>>>2] = r31; + r31=0x29420; + pc=0x1a800; + run_1a800(); return; + case 0x29420: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x29440; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x29440; + pc=0x21200; + run_21000(); return; + case 0x29440: 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]; + r31=0x29454; + pc=0x56fe0; + run_56800(); return; + case 0x29454: + r31= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x29600: r29 = r29 + -136; - writePages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff] = r16; + page[(r29+128)>>>2] = 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: + page[(r29+132)>>>2] = r31; + r31=0x2961c; + pc=0x36a00; + run_36800(); return; + case 0x2961c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2962c; + pc=0x1a800; + run_1a800(); return; + case 0x2962c: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2964c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2964c; + pc=0x21200; + run_21000(); return; + case 0x2964c: r4 = r29 + 80; - r5 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x2822c; - pc = 0x27600; - run_27600(); - return; - case 0x2822c: + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x29660; + pc=0x56fe0; + run_56800(); return; + case 0x29660: 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]; + r31=0x2966c; + pc=0x42e00; + run_42800(); return; + case 0x2966c: + r2= page[(r29+104)>>>2]; r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x28270; + if(r2 == r3) { + pc=0x296a4; continue; } - case 0x28248: + case 0x2967c: 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]; + case 0x29680: + r31=0x29688; + pc=0x22000; + run_22000(); return; + case 0x29688: + r31=0x29690; + pc=0x24000; + run_24000(); return; + case 0x29690: + r31= page[(r29+132)>>>2]; + r16= page[(r29+128)>>>2]; r29 = r29 + 136; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x28270: - r3 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x28248; + case 0x296a4: + r3= page[(r29+80)>>>2]; + if(r3 != r2) { + pc=0x2967c; continue; } - r6 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r6= page[(r29+88)>>>2]; r2 = r0 | 65535; r3 = r6 | 65535; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x282b0; + if(r3 != r2) { + pc=0x296e4; continue; } - r4 = readPages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff]; + r4= page[(r29+112)>>>2]; r4 = r16 + r4; r4 = r6 - r4; r4 = r4 & 65535; - /* Next insn is delay slot */ - pc = 0x2824c; + pc=0x29680; continue; - case 0x282b0: - r5 = 5 << 16; + case 0x296e4: + r5 = 6 << 16; r4 = r29 + 16; - r5 = r5 + 30748; - /* Next insn is delay slot */ - r31 = 0x282c4; - pc = 0x47400; - run_47400(); - return; - case 0x282c4: + r5 = r5 + 6460; + r31=0x296f8; + pc=0x50c00; + run_50800(); return; + case 0x296f8: r4 = r0 + -2; r5 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x282d4; - pc = 0x20600; - run_20600(); - return; - case 0x282d4: + r31=0x29708; + pc=0x1fc00; + run_1f800(); return; + case 0x29708: r4 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2824c; + pc=0x29680; continue; - case 0x28400: - pc = 0x28400; + case 0x29800: + pc=0x29800; 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_29800() throws ExecutionException { /* 0x29800 - 0x2a000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x28400: + for(;;) { + switch(pc) { + case 0x29800: + r29 = r29 + -136; + page[(r29+128)>>>2] = r16; + r16 = r4 + r0; + r4 = r29 + 104; + page[(r29+132)>>>2] = r31; + r31=0x2981c; + pc=0x36a00; + run_36800(); return; + case 0x2981c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2982c; + pc=0x1a800; + run_1a800(); return; + case 0x2982c: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2984c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2984c; + pc=0x21200; + run_21000(); return; + case 0x2984c: + r4 = r29 + 80; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x29860; + pc=0x56fe0; + run_56800(); return; + case 0x29860: + r4 = r29 + 80; + r31=0x2986c; + pc=0x42e00; + run_42800(); return; + case 0x2986c: + r2= page[(r29+104)>>>2]; + r3 = r0 + 1; + if(r2 == r3) { + pc=0x298ac; + continue; + } + case 0x2987c: + r16 = r0 + r0; + case 0x29880: + r2= page[(r28+-31264)>>>2]; + r4 = r16 + r0; + pc=r2; + r31=0x29890; + return; + case 0x29890: + r31=0x29898; + pc=0x24000; + run_24000(); return; + case 0x29898: + r31= page[(r29+132)>>>2]; + r16= page[(r29+128)>>>2]; + r29 = r29 + 136; + pc=r31; + return; + case 0x298ac: + r3= page[(r29+80)>>>2]; + if(r3 != r2) { + pc=0x2987c; + continue; + } + r6= page[(r29+88)>>>2]; + r2 = r0 | 65535; + r3 = r6 | 65535; + if(r3 != r2) { + pc=0x29940; + continue; + } + r2= page[(r29+112)>>>2]; + r16 = r16 + r2; + r6 = r6 - r16; + r16 = r6 & 65535; + r6 = r6 & 32768; + if(r6 != r0) { + pc=0x29970; + continue; + } + case 0x298f0: + r2 = r16 + 128; + r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x29880; + continue; + } + r2 = r16 < -128 ? 1 : 0; + if(r2 != r0) { + pc=0x29980; + continue; + } + r7 = r16 + -127; + case 0x29910: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6488; + r6 = r16 + r0; + r31=0x29928; + pc=0x50c00; + run_50800(); return; + case 0x29928: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x29938; + pc=0x1fc00; + run_1f800(); return; + case 0x29938: + pc=0x29880; + continue; + case 0x29940: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6460; + r31=0x29954; + pc=0x50c00; + run_50800(); return; + case 0x29954: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x29964; + pc=0x1fc00; + run_1f800(); return; + case 0x29964: + r16 = r0 + r0; + pc=0x29880; + continue; + case 0x29970: + r2 = 65535 << 16; + r16 = r16 + r2; + pc=0x298f0; + continue; + case 0x29980: + r7 = r0 + -128; + r7 = r7 - r16; + pc=0x29910; + continue; + case 0x29a00: r29 = r29 + -32; r3 = r6 & 255; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + page[(r29+24)>>>2] = r16; r16 = r5 + r0; r5 = r6 & 65280; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + page[(r29+28)>>>2] = r31; r2 = ((r0 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x28428; + if(r5 == r0) { + pc=0x29a28; continue; } r2 = r2 | 2; - case 0x28428: + case 0x29a28: r5 = 255 << 16; r5 = r6 & r5; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x2843c; + if(r5 == r0) { + pc=0x29a3c; continue; } r2 = r2 | 4; - case 0x2843c: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x285d0; + case 0x29a3c: + if(r2 == r0) { + pc=0x29bd0; continue; } - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x2849c; + if(r4 == r0) { + pc=0x29a9c; continue; } r2 = r2 & r4; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x286a8; - run_28600(); - return; + if(r2 == r0) { + pc=0x29ca8; + continue; } - case 0x28458: + case 0x29a58: r2 = r0 + 2; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x285a4; + if(r4 == r2) { + pc=0x29ba4; continue; } r2 = r0 + 4; - if (r4 != r2) { - /* Next insn is delay slot */ - pc = 0x28638; - run_28600(); - return; + if(r4 != r2) { + pc=0x29c38; + continue; } - case 0x28470: + case 0x29a70: r4 = r6 >>> 16; - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r2= page[(r28+-31264)>>>2]; r4 = r4 & 255; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x28484; + pc=r2; + r31=0x29a84; 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]; + case 0x29a84: + r31= page[(r29+28)>>>2]; + r4= page[(r16+8)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x22800; - run_22800(); - return; - case 0x2849c: - r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + pc=0x22400; + run_22000(); return; + case 0x29a9c: + r4= page[(r16+4)>>>2]; r5 = r4 & 7; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x285f0; + if(r5 != r0) { + pc=0x29bf0; 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 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r5 != r0) { + pc=0x29cec; + continue; } r5 = r0 + 4; - if (r2 == r5) { - /* Next insn is delay slot */ - pc = 0x28470; + if(r2 == r5) { + pc=0x29a70; continue; } r5 = r4 & 16; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x28658; - run_28600(); - return; + if(r5 == r0) { + pc=0x29c58; + continue; } r5 = r2 & 1; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x284f0; + if(r5 == r0) { + pc=0x29af0; continue; } r4 = r4 & 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x28680; - run_28600(); - return; + if(r4 != r0) { + pc=0x29c80; + continue; } - case 0x284f0: + case 0x29af0: r4 = r2 & 2; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x2855c; + if(r4 != r0) { + pc=0x29b5c; 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; + if(r2 == r0) { + pc=0x29c80; continue; } - r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x29a70; + continue; + } + r3= page[(r16+8)>>>2]; 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; + if(r2 == r0) { + pc=0x29a70; continue; } - r5 = 5 << 16; + r5 = 6 << 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; + r5 = r5 + 8556; + page[(r29+16)>>>2] = r6; + r31=0x29b50; + pc=0x1fc00; + run_1f800(); return; + case 0x29b50: + r6= page[(r29+16)>>>2]; + pc=0x29a70; continue; - case 0x2855c: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x285a4; + case 0x29b5c: + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x29ba4; continue; } - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2= page[(r16+8)>>>2]; r2 = r2 + 128; - r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x285a4; + r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x29ba4; continue; } - r5 = 5 << 16; + r5 = 6 << 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: + r5 = r5 + 8556; + page[(r29+16)>>>2] = r6; + r31=0x29b9c; + pc=0x1fc00; + run_1f800(); return; + case 0x29b9c: + r6= page[(r29+16)>>>2]; + case 0x29ba4: r4 = r6 >>> 8; - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r2= page[(r28+-31264)>>>2]; r4 = r4 & 255; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x285b8; + pc=r2; + r31=0x29bb8; 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]; + case 0x29bb8: + r31= page[(r29+28)>>>2]; + r4= page[(r16+8)>>>2]; + r16= page[(r29+24)>>>2]; 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; + pc=0x22000; + run_22000(); return; + case 0x29bd0: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 32488; + r5 = r5 + 8592; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x285f0: + pc=0x1fc00; + run_1f800(); return; + case 0x29bf0: 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; + if(r5 != r0) { + pc=0x29c80; continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r4 = r4 & 2; + if(r4 != r0) { + pc=0x29ba4; + continue; + } + case 0x29c0c: + r2 = r2 & 4; + if(r2 != r0) { + pc=0x29a70; + continue; + } + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5184; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=0x1fc00; + run_1f800(); return; + case 0x29c38: + r2 = r0 + 1; + if(r4 == r2) { + pc=0x29c80; + continue; + } + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 32; + pc=r31; return; - case 0x28658: - r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x286f8; + case 0x29c58: + r4= page[(r16+8)>>>2]; + if(r4 < 0) { + pc=0x29cf8; continue; } r5 = r2 & 1; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x286c8; + if(r5 == r0) { + pc=0x29cc8; continue; } r5 = r4 < 256 ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x286c8; + if(r5 == r0) { + pc=0x29cc8; continue; } - case 0x28680: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x29c80: + r2= page[(r28+-31264)>>>2]; r4 = r3 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x28690; + pc=r2; + r31=0x29c90; 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]; + case 0x29c90: + r31= page[(r29+28)>>>2]; + r4= page[(r16+8)>>>2]; + r16= page[(r29+24)>>>2]; 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; + pc=0x21c00; + run_21800(); return; + case 0x29ca8: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 30864; + r5 = r5 + 6528; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x286c8: + pc=0x1fc00; + run_1f800(); return; + case 0x29cc8: r3 = r2 & 2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x2860c; + if(r3 == r0) { + pc=0x29c0c; 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; + if(r4 != r0) { + pc=0x29ba4; continue; } - r16 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + pc=0x29c0c; + continue; + case 0x29cec: + r4 = r2 + r0; + pc=0x29a58; + continue; + case 0x29cf8: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 6584; + r29 = r29 + 32; + pc=0x1fc00; + run_1f800(); return; + case 0x29e00: + r29 = r29 + -112; + page[(r29+100)>>>2] = r18; + page[(r29+96)>>>2] = r17; + page[(r29+108)>>>2] = r31; + page[(r29+104)>>>2] = r19; + page[(r29+92)>>>2] = r16; + r18 = r4 + r0; + r31=0x29e24; + pc=0x27e00; + run_27800(); return; + case 0x29e24: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r17 = r2 + r0; + if(r3 == r5) { + pc=0x2a140; + run_2a000(); return; + } + case 0x29e38: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x29f24; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x29f98; + continue; + } + if(r3 == r0) { + pc=0x29f5c; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r16 = r29 + 64; + r31=0x29e6c; + pc=0x1a800; + run_1a800(); return; + case 0x29e6c: + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x29e80; + pc=0x56fe0; + run_56800(); return; + case 0x29e80: + r4 = r16 + r0; + r31=0x29e8c; + pc=0x42e00; + run_42800(); return; + case 0x29e8c: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2a0e4; + run_2a000(); return; + } + case 0x29ea4: + r31=0x29eac; + pc=0x29200; + run_29000(); return; + case 0x29eac: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x29eb4: + r31=0x29ebc; + pc=0x24000; + run_24000(); return; + case 0x29ebc: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2a044; + run_2a000(); return; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2a164; + run_2a000(); return; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2a0c4; + run_2a000(); return; + } + r2 = 6 << 16; + r18 = r18 << 1; + r2 = r2 + 8656; + case 0x29eec: + r18 = r18 + r2; + addr=r18+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r17 + r0; + r5 = r16 + r0; + r31=0x29f04; + pc=0x29a00; + continue; + case 0x29f04: + r31= page[(r29+108)>>>2]; + r19= page[(r29+104)>>>2]; + r18= page[(r29+100)>>>2]; + r17= page[(r29+96)>>>2]; + r16= page[(r29+92)>>>2]; + r29 = r29 + 112; + pc=r31; + return; + case 0x29f24: + r31=0x29f2c; + pc=0x23000; + run_23000(); return; + case 0x29f2c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x29f3c; + pc=0x1a800; + run_1a800(); return; + case 0x29f3c: + r4 = r29 + 64; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x29f50; + pc=0x56fe0; + run_56800(); return; + case 0x29f50: + r4 = r29 + 64; + r31=0x29f5c; + pc=0x42c00; + run_42800(); return; + case 0x29f5c: + r31=0x29f64; + pc=0x24000; + run_24000(); return; + case 0x29f64: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x29f78; + pc=0x1fc00; + run_1f800(); return; + case 0x29f78: + r31= page[(r29+108)>>>2]; + r19= page[(r29+104)>>>2]; + r18= page[(r29+100)>>>2]; + r17= page[(r29+96)>>>2]; + r16= page[(r29+92)>>>2]; + r29 = r29 + 112; + pc=r31; + return; + case 0x29f98: + r31=0x29fa0; + pc=0x23000; + run_23000(); return; + case 0x29fa0: + r16 = r29 + 64; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x29fb4; + pc=0x1a800; + run_1a800(); return; + case 0x29fb4: + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x29fc8; + pc=0x56fe0; + run_56800(); return; + case 0x29fc8: + r4 = r16 + r0; + r31=0x29fd4; + pc=0x42e00; + run_42800(); return; + case 0x29fd4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2a120; + run_2a000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x29ff8; + pc=0x1fc00; + run_1f800(); return; + case 0x29ff8: + r31=0x2a000; + pc=0x24000; + run_24000(); return; + case 0x2a000: + pc=0x2a000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2a000() throws ExecutionException { /* 0x2a000 - 0x2a800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2a000: + r2 = 6 << 16; + r2 = r2 + 8704; + r18 = r18 << 2; + r18 = r18 + r2; + r6= page[(r18+0)>>>2]; + r4 = r17 + r0; + r5 = r16 + r0; + r31=0x2a024; + pc=0x29a00; + run_29800(); return; + case 0x2a024: + r31= page[(r29+108)>>>2]; + r19= page[(r29+104)>>>2]; + r18= page[(r29+100)>>>2]; + r17= page[(r29+96)>>>2]; + r16= page[(r29+92)>>>2]; + r29 = r29 + 112; + pc=r31; + return; + case 0x2a044: + r2 = 6 << 16; + r2 = r2 + 8688; + r18 = r18 << 1; + r18 = r18 + r2; + addr=r18+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r17 + r0; + r5 = r16 + r0; + r31=0x2a068; + pc=0x29a00; + run_29800(); return; + case 0x2a068: + r3= page[(r29+64)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x29f78; + run_29800(); return; + } + addr=r29+75; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r2 = r0 + 255; + if(r3 != r2) { + pc=0x29f78; + run_29800(); return; + } + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 1; + if(r2 == r0) { + pc=0x29f78; + run_29800(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6632; + r31=0x2a0bc; + pc=0x1fc00; + run_1f800(); return; + case 0x2a0bc: + pc=0x29f78; + run_29800(); return; + case 0x2a0c4: + r2 = r0 + 36; + if(r19 != r2) { + pc=0x29f64; + run_29800(); return; + } + r2 = 6 << 16; + r18 = r18 << 1; + r2 = r2 + 8672; + pc=0x29eec; + run_29800(); return; + case 0x2a0e4: + r31=0x2a0ec; + pc=0x29200; + run_29000(); return; + case 0x2a0ec: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2a154; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2a118; + pc=0x1fc00; + run_1f800(); return; + case 0x2a118: + pc=0x29ea4; + run_29800(); return; + case 0x2a120: + r31=0x2a128; + pc=0x23000; + run_23000(); return; + case 0x2a128: + r31=0x2a130; + pc=0x29200; + run_29000(); return; + case 0x2a130: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x29eb4; + run_29800(); return; + case 0x2a140: + r31=0x2a148; + pc=0x23000; + run_23000(); return; + case 0x2a148: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x29e38; + run_29800(); return; + case 0x2a154: + r31=0x2a15c; + pc=0x23000; + run_23000(); return; + case 0x2a15c: + pc=0x29ea4; + run_29800(); return; + case 0x2a164: + if(r19 == r0) { + pc=0x2a000; + continue; + } + pc=0x29f64; + run_29800(); return; + case 0x2a200: + r29 = r29 + -200; + r6 = 6 << 16; + r5 = r29 + 168; + r6 = r6 + 22536; + page[(r29+196)>>>2] = r31; + page[(r29+192)>>>2] = r20; + page[(r29+188)>>>2] = r19; + page[(r29+184)>>>2] = r18; + page[(r29+180)>>>2] = r17; + page[(r29+176)>>>2] = r16; + r31=0x2a230; + pc=0x42400; + run_42000(); return; + case 0x2a230: + if(r2 == r0) { + pc=0x2a284; + continue; + } + r16= page[(r29+168)>>>2]; r2 = r16 & 1024; r17 = r16 & 255; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x28894; + if(r2 != r0) { + pc=0x2a2ac; continue; } r2 = r16 + r0; - case 0x28848: + case 0x2a254: r2 = r2 >> 12; - r3 = (r2 & 0xffffffffL) < (11 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x28c90; - run_28c00(); - return; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2a840; + run_2a800(); return; } - r3 = 5 << 16; + r3 = 6 << 16; r2 = r2 << 2; - r3 = r3 + 32408; + r3 = r3 + 8072; r2 = r3 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x28878: + case 0x2a284: 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; + case 0x2a288: + r31= page[(r29+196)>>>2]; + r20= page[(r29+192)>>>2]; + r19= page[(r29+188)>>>2]; + r18= page[(r29+184)>>>2]; + r17= page[(r29+180)>>>2]; + r16= page[(r29+176)>>>2]; + r29 = r29 + 200; + pc=r31; return; - case 0x28894: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2a2ac: + r2= page[(r28+-31264)>>>2]; r4 = r0 + 66; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x288a4; + pc=r2; + r31=0x2a2bc; return; - case 0x288a4: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2a2bc: + r2= page[(r28+-31264)>>>2]; r4 = r0 + 66; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x288b4; + pc=r2; + r31=0x2a2cc; return; - case 0x288b4: - r2 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x28848; + case 0x2a2cc: + r2= page[(r29+168)>>>2]; + pc=0x2a254; continue; - case 0x288c0: - r5 = r0 + 1; + case 0x2a2d8: 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]; + r5 = r0 + r0; + r31=0x2a2e8; + pc=0x1a800; + run_1a800(); return; + case 0x2a2e8: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2a308; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2a308; + pc=0x21200; + run_21000(); return; + case 0x2a308: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2a31c; + pc=0x56fe0; + run_56800(); return; + case 0x2a31c: + r4 = r29 + 120; + r31=0x2a328; + pc=0x42e00; + run_42800(); return; + case 0x2a328: + r2= page[(r28+-31264)>>>2]; r4 = r17 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x288ec; + pc=r2; + r31=0x2a338; 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: + case 0x2a338: + r4= page[(r29+128)>>>2]; + r31=0x2a344; + pc=0x21c00; + run_21800(); return; + case 0x2a344: + r31=0x2a34c; + pc=0x24000; + run_24000(); return; + case 0x2a34c: 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; + case 0x2a350: + r31= page[(r29+196)>>>2]; + r20= page[(r29+192)>>>2]; + r19= page[(r29+188)>>>2]; + r18= page[(r29+184)>>>2]; + r17= page[(r29+180)>>>2]; + r16= page[(r29+176)>>>2]; + r29 = r29 + 200; + 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 */ + case 0x2a374: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x28e54; - run_28e00(); - return; + if(r2 == r3) { + pc=0x2ab24; + run_2a800(); return; } - case 0x2892c: + case 0x2a384: r3 = r0 + 35; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x28e68; - run_28e00(); - return; + if(r2 == r3) { + pc=0x2ab0c; + run_2a800(); return; } + r18 = r0 + 1; 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; + case 0x2a398: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2a3a8; + pc=0x1a800; + run_1a800(); return; + case 0x2a3a8: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2a3c8; + 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 */ + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2a3c8; + pc=0x21200; + run_21000(); return; + case 0x2a3c8: + r4 = r29 + 144; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2a3dc; + pc=0x56fe0; + run_56800(); return; + case 0x2a3dc: + r4 = r29 + 144; + r31=0x2a3e8; + pc=0x42c00; + run_42800(); return; + case 0x2a3e8: + r31=0x2a3f0; + pc=0x27c00; + run_27800(); return; + case 0x2a3f0: + if(r2 == r0) { + pc=0x2acf8; + run_2a800(); return; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 35; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x29098; - run_29000(); - return; + if(r3 == r2) { + pc=0x2ada4; + run_2a800(); return; } - case 0x28978: - r5 = r0 + 1; + case 0x2a408: 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; + r5 = r0 + r0; + r31=0x2a418; + pc=0x1a800; + run_1a800(); return; + case 0x2a418: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2a438; continue; } - r5 = 5 << 16; + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2a438; + pc=0x21200; + run_21000(); return; + case 0x2a438: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2a44c; + pc=0x56fe0; + run_56800(); return; + case 0x2a44c: + r4 = r29 + 120; + r31=0x2a458; + pc=0x42c00; + run_42800(); return; + case 0x2a458: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2a468; + return; + case 0x2a468: + r4= page[(r29+128)>>>2]; + r31=0x2a474; + pc=0x21c00; + run_21800(); return; + case 0x2a474: + r4= page[(r29+152)>>>2]; + r31=0x2a480; + pc=0x21c00; + run_21800(); return; + case 0x2a480: + if(r16 == r0) { + pc=0x2a344; + continue; + } + r5 = 6 << 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; + r5 = r5 + 5020; + r31=0x2a49c; + pc=0x1fc00; + run_1f800(); return; + case 0x2a49c: + r31=0x2a4a4; + pc=0x24000; + run_24000(); return; + case 0x2a4a4: + pc=0x2a34c; continue; - case 0x289e8: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x2a4ac: + r2= page[(r28+-31264)>>>2]; r4 = r17 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x289f8; + pc=r2; + r31=0x2a4bc; return; - case 0x289f8: + case 0x2a4bc: 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: + r31=0x2a4c8; + pc=0x29600; + run_29000(); return; + case 0x2a4c8: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x2887c; - run_28800(); - return; - case 0x28a10: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + pc=0x2a288; + continue; + case 0x2a4d4: + r2= page[(r28+-31264)>>>2]; r4 = r17 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x28a20; + pc=r2; + r31=0x2a4e4; return; - case 0x28a20: + case 0x2a4e4: r4 = r0 + 2; - /* Next insn is delay slot */ - r31 = 0x28a2c; - pc = 0x28200; - run_28200(); - return; - case 0x28a2c: + r31=0x2a4f0; + pc=0x29600; + run_29000(); return; + case 0x2a4f0: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x2887c; - run_28800(); + pc=0x2a288; + continue; + case 0x2a4fc: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2a50c; + pc=0x1a800; + run_1a800(); return; + case 0x2a50c: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2a52c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2a52c; + pc=0x21200; + run_21000(); return; + case 0x2a52c: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2a540; + pc=0x56fe0; + run_56800(); return; + case 0x2a540: + r4 = r29 + 120; + r31=0x2a54c; + pc=0x42e00; + run_42800(); return; + case 0x2a54c: + r31=0x2a554; + pc=0x27c00; + run_27800(); return; + case 0x2a554: + if(r2 != r0) { + pc=0x2a860; + run_2a800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2a570; + pc=0x1fc00; + run_1f800(); return; + case 0x2a570: + r2 = r0 + 1; + pc=0x2a350; + continue; + case 0x2a57c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2a58c; return; - case 0x28a38: + case 0x2a58c: + r4 = r0 + 2; + r31=0x2a598; + pc=0x29800; + run_29800(); return; + case 0x2a598: + r2 = r0 + 1; + pc=0x2a288; + continue; + case 0x2a5a4: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2a898; + run_2a800(); return; + } + case 0x2a5b0: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2a5c0; + return; + case 0x2a5c0: + r31=0x2a5c8; + pc=0x24000; + run_24000(); return; + case 0x2a5c8: + r2 = r0 + 1; + pc=0x2a288; + continue; + case 0x2a5d4: + r4 = r17 + r0; + r31=0x2a5e0; + pc=0x29e00; + run_29800(); return; + case 0x2a5e0: + r2 = r0 + 1; + pc=0x2a288; + continue; + case 0x2a5ec: + r31=0x2a5f4; + pc=0x27e00; + run_27800(); return; + case 0x2a5f4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2ab4c; + run_2a800(); return; + } + case 0x2a608: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2a8d0; + run_2a800(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2ac7c; + run_2a800(); return; + } + if(r3 == r0) { + pc=0x2ac3c; + run_2a800(); return; + } 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; + r18 = r29 + 120; + r31=0x2a63c; + pc=0x1a800; + run_1a800(); return; + case 0x2a63c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2a650; + pc=0x56fe0; + run_56800(); return; + case 0x2a650: + r4 = r18 + r0; + r31=0x2a65c; + pc=0x42e00; + run_42800(); return; + case 0x2a65c: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2adb8; + run_2a800(); 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 0x2a674: + r31=0x2a67c; + pc=0x29200; + run_29000(); return; + case 0x2a67c: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2a684: + r31=0x2a68c; + pc=0x24000; + run_24000(); return; + case 0x2a68c: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2a914; + run_2a800(); 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; + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2ab60; + run_2a800(); return; } - r3 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x28f5c; - run_28e00(); - return; + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2ad18; + run_2a800(); 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 = r0 + 384; + if(r20 != r2) { + pc=0x2ab74; + run_2a800(); 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 = r2 + 8736; + case 0x2a6c8: r2 = r17 + r2; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r2+0; + tmp= page[(addr)>>>2]; + 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]; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2a6e0; + pc=0x29a00; + run_29800(); return; + case 0x2a6e0: 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; + pc=0x2a350; + continue; + case 0x2a6ec: + r31=0x2a6f4; + pc=0x27e00; + run_27800(); return; + case 0x2a6f4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - r2 = r0 + 255; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x28900; - run_28800(); - return; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2ab38; + run_2a800(); return; + } + case 0x2a708: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2aa24; + run_2a800(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2aba4; + run_2a800(); return; + } + if(r3 == r0) { + pc=0x2ab94; + run_2a800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2a73c; + pc=0x1a800; + run_1a800(); return; + case 0x2a73c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2a750; + pc=0x56fe0; + run_56800(); return; + case 0x2a750: + r4 = r18 + r0; + r31=0x2a75c; + pc=0x42e00; + run_42800(); return; + case 0x2a75c: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2adf4; + run_2a800(); return; + } + case 0x2a774: + r31=0x2a77c; + pc=0x29200; + run_29000(); return; + case 0x2a77c: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2a784: + r31=0x2a78c; + pc=0x24000; + run_24000(); return; + case 0x2a78c: + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2ae6c; + run_2a800(); return; + } + r2 = (r20&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2ad2c; + run_2a800(); return; + } + r2 = r0 + 392; + if(r20 == r2) { + pc=0x2af40; + run_2a800(); return; + } + r2 = (r20&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2af80; + run_2a800(); return; + } + r2 = r0 + 516; + if(r20 == r2) { + pc=0x2aea0; + run_2a800(); return; + } + r2 = r0 + 520; + if(r20 == r2) { + pc=0x2ae30; + run_2a800(); return; + } + r2 = r0 + 404; + if(r20 != r2) { + pc=0x2ab74; + run_2a800(); 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; + r2 = r2 + 9360; + case 0x2a7e8: 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(); + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2a800; + pc=0x29a00; + run_29800(); return; + case 0x2a800: + pc=0x2a800; 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)); + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_28e00() throws ExecutionException { /* 0x28e00 - 0x29000 */ + private final void run_2a800() throws ExecutionException { /* 0x2a800 - 0x2b000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x28e00: + for(;;) { + switch(pc) { + case 0x2a800: r2 = r0 + 1; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x28900; - run_28800(); - return; + pc=0x2a350; + run_2a000(); return; + case 0x2a80c: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2a824; + pc=0x50c00; + run_50800(); return; + case 0x2a824: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2a834; + pc=0x1fc00; + run_1f800(); return; + case 0x2a834: + r2 = r0 + 1; + pc=0x2a288; + run_2a000(); return; + case 0x2a840: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2a854; + pc=0x21400; + run_21000(); return; + case 0x2a854: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2a860: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2a870; + return; + case 0x2a870: + r2= page[(r28+-31264)>>>2]; + r4= page[(r29+128)>>>2]; + pc=r2; + r31=0x2a880; + return; + case 0x2a880: + r4 = r0 + 3; + r31=0x2a88c; + pc=0x29800; + run_29800(); return; + case 0x2a88c: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2a898: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2a5b0; + run_2a000(); return; } - r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x28900; - run_28800(); - return; + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2a8c8; + pc=0x21200; + run_21000(); return; + case 0x2a8c8: + pc=0x2a5b0; + run_2a000(); return; + case 0x2a8d0: + r31=0x2a8d8; + pc=0x23000; + run_23000(); return; + case 0x2a8d8: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2a8ec; + pc=0x1a800; + run_1a800(); return; + case 0x2a8ec: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2a900; + pc=0x56fe0; + run_56800(); return; + case 0x2a900: + r4 = r18 + r0; + r31=0x2a90c; + pc=0x42c00; + run_42800(); return; + case 0x2a90c: + r31=0x2a914; + pc=0x24000; + run_24000(); return; + case 0x2a914: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2b004; + run_2b000(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2afbc; + continue; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2aff0; + continue; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2afd0; + continue; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r3= page[(r2+40)>>>2]; + case 0x2a964: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 2; + if(r2 == r0) { + pc=0x2a99c; + continue; + } + if(r19 != r0) { + pc=0x2a994; + continue; + } + r19 = (r3&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2a994: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2a99c: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2a9b0; + pc=0x29a00; + run_29800(); return; + case 0x2a9b0: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2a34c; + run_2a000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2a34c; + run_2a000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2a34c; + run_2a000(); return; } r2 = r0 + 139; - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x2919c; - run_29000(); - return; + if(r17 == r2) { + pc=0x2b088; + run_2b000(); return; } r2 = r0 + 171; - if (r16 != r2) { - /* Next insn is delay slot */ - pc = 0x28900; - run_28800(); - return; + if(r17 != r2) { + pc=0x2a34c; + run_2a000(); return; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -1; - r5 = r5 + 31016; - /* Next insn is delay slot */ - r31 = 0x28e48; - pc = 0x20600; - run_20600(); - return; - case 0x28e48: + r5 = r5 + 6720; + r31=0x2aa18; + pc=0x1fc00; + run_1f800(); return; + case 0x2aa18: 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]; + pc=0x2a350; + run_2a000(); return; + case 0x2aa24: + r31=0x2aa2c; + pc=0x23000; + run_23000(); return; + case 0x2aa2c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2aa40; + pc=0x1a800; + run_1a800(); return; + case 0x2aa40: + r4 = r18 + r0; r5 = r29 + 24; - /* Next insn is delay slot */ - r31 = 0x2908c; - pc = 0x27a00; - run_27a00(); - return; - case 0x2908c: + r6 = r0 + 24; + r31=0x2aa54; + pc=0x56fe0; + run_56800(); return; + case 0x2aa54: + r4 = r18 + r0; + r31=0x2aa60; + pc=0x42c00; + run_42800(); return; + case 0x2aa60: + r31=0x2aa68; + pc=0x24000; + run_24000(); return; + case 0x2aa68: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2b068; + run_2b000(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2b020; + run_2b000(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2b074; + run_2b000(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2b028; + run_2b000(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2aab8: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2b014; + run_2b000(); return; + } + if(r19 != r0) { + pc=0x2aae8; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2aae8: + r6 = r17 << 8; + r6 = r6 | r17; + case 0x2aaf0: + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2ab00; + pc=0x29a00; + run_29800(); return; + case 0x2ab00: 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; + pc=0x2a350; + run_2a000(); return; + case 0x2ab0c: + r31=0x2ab14; + pc=0x23000; + run_23000(); return; + case 0x2ab14: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2a398; + run_2a000(); return; + case 0x2ab24: + r31=0x2ab2c; + pc=0x23000; + run_23000(); return; + case 0x2ab2c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2a384; + run_2a000(); return; + case 0x2ab38: + r31=0x2ab40; + pc=0x23000; + run_23000(); return; + case 0x2ab40: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2a708; + run_2a000(); return; + case 0x2ab4c: + r31=0x2ab54; + pc=0x23000; + run_23000(); return; + case 0x2ab54: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2a608; + run_2a000(); return; + case 0x2ab60: + if(r20 == r0) { + pc=0x2ace4; 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; + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2ac44; 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; + case 0x2ab74: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2ab88; + pc=0x1fc00; + run_1f800(); return; + case 0x2ab88: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2ab94: + r31=0x2ab9c; + pc=0x24000; + run_24000(); return; + case 0x2ab9c: + pc=0x2ab74; continue; - case 0x29144: - r2 = 6 << 16; - r2 = r2 + -32400; - /* Next insn is delay slot */ - pc = 0x28ef0; - run_28e00(); - return; - case 0x29154: + case 0x2aba4: + r31=0x2abac; + pc=0x23000; + run_23000(); return; + case 0x2abac: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2abc0; + pc=0x1a800; + run_1a800(); return; + case 0x2abc0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2abd4; + pc=0x56fe0; + run_56800(); return; + case 0x2abd4: + r4 = r18 + r0; + r31=0x2abe0; + pc=0x42e00; + run_42800(); return; + case 0x2abe0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2ae80; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ac04; + pc=0x1fc00; + run_1f800(); return; + case 0x2ac04: + r31=0x2ac0c; + pc=0x24000; + run_24000(); return; + case 0x2ac0c: r2 = 6 << 16; r17 = r17 << 2; - r2 = r2 + -31632; - /* Next insn is delay slot */ - pc = 0x28e88; - run_28e00(); - return; - case 0x29168: + r2 = r2 + 10008; + case 0x2ac18: + r2 = r17 + r2; + r6= page[(r2+0)>>>2]; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2ac30; + pc=0x29a00; + run_29800(); return; + case 0x2ac30: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2ac3c: + r31=0x2ac44; + pc=0x24000; + run_24000(); return; + case 0x2ac44: 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(); + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2ab74; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2ac70; return; - case 0x29188: + case 0x2ac70: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2ac7c: + r31=0x2ac84; + pc=0x23000; + run_23000(); return; + case 0x2ac84: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2ac98; + pc=0x1a800; + run_1a800(); return; + case 0x2ac98: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2acac; + pc=0x56fe0; + run_56800(); return; + case 0x2acac: + r4 = r18 + r0; + r31=0x2acb8; + pc=0x42e00; + run_42800(); return; + case 0x2acb8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2af60; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2acdc; + pc=0x1fc00; + run_1f800(); return; + case 0x2acdc: + r31=0x2ace4; + pc=0x24000; + run_24000(); return; + case 0x2ace4: 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; + r2 = r2 + 8928; + pc=0x2a6c8; + run_2a000(); return; + case 0x2acf8: 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]; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ad0c; + pc=0x1fc00; + run_1f800(); return; + case 0x2ad0c: 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: + pc=0x2a288; + run_2a000(); return; + case 0x2ad18: 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; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2a6c8; + run_2a000(); return; + case 0x2ad2c: + r2 = r0 + 4; + if(r20 == r2) { + pc=0x2af30; + continue; + } + r2 = (r20&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2b0a8; + run_2b000(); return; + } + r2 = r0 + 36; + if(r20 == r2) { + pc=0x2af20; + continue; + } + r2 = r0 + 128; + if(r20 == r2) { + pc=0x2af50; + continue; + } + r2 = r0 + 8; + if(r20 != r2) { + pc=0x2ab74; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2ad84; 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; + r2 = r2 + 9300; + pc=0x2a7e8; + run_2a000(); return; + case 0x2ad84: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2ad94; 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; + case 0x2ad94: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2a7e8; + run_2a000(); return; + case 0x2ada4: + r31=0x2adac; + pc=0x23000; + run_23000(); return; + case 0x2adac: + r16 = r18 + r0; + pc=0x2a408; + run_2a000(); return; + case 0x2adb8: + r31=0x2adc0; + pc=0x29200; + run_29000(); return; + case 0x2adc0: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2b058; + run_2b000(); return; } - 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; + r5 = 6 << 16; 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; + r5 = r5 + 5020; + r31=0x2adec; + pc=0x1fc00; + run_1f800(); return; + case 0x2adec: + pc=0x2a674; + run_2a000(); return; + case 0x2adf4: + r31=0x2adfc; + pc=0x29200; + run_29000(); return; + case 0x2adfc: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2b048; + run_2b000(); return; } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ae28; + pc=0x1fc00; + run_1f800(); return; + case 0x2ae28: + pc=0x2a774; + run_2a000(); return; 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; + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2ae4c; 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; + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2a7e8; + run_2a000(); return; + case 0x2ae4c: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2ae5c; + return; + case 0x2ae5c: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2a7e8; + run_2a000(); return; 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; - } + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2ac18; + continue; case 0x2ae80: - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r31=0x2ae88; + pc=0x23000; + run_23000(); return; + case 0x2ae88: + r31=0x2ae90; + pc=0x29200; + run_29000(); return; + case 0x2ae90: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2a784; + run_2a000(); return; + case 0x2aea0: 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; + r2 = r2 + 9180; + case 0x2aea8: + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2aec0; + pc=0x29a00; + run_29800(); return; 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; + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2a34c; + run_2a000(); return; } - 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; + r3= page[(r29+128)>>>2]; + r2 = r0 + 255; + if(r3 != r2) { + pc=0x2a34c; + run_2a000(); return; + } + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 32; + if(r2 == r0) { + pc=0x2a34c; + run_2a000(); return; } - 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]; + r5 = r5 + 6324; + r31=0x2af14; + pc=0x1fc00; + run_1f800(); return; + case 0x2af14: 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; + pc=0x2a350; + run_2a000(); return; + case 0x2af20: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2a7e8; + run_2a000(); return; + case 0x2af30: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x2aea8; + continue; + case 0x2af40: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2a7e8; + run_2a000(); return; + case 0x2af50: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2a7e8; + run_2a000(); return; + case 0x2af60: + r31=0x2af68; + pc=0x23000; + run_23000(); return; + case 0x2af68: + r31=0x2af70; + pc=0x29200; + run_29000(); return; + case 0x2af70: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2a684; + run_2a000(); return; + case 0x2af80: + r2 = r0 + 384; + if(r20 == r2) { + pc=0x2afa8; 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; + r2 = r0 + 388; + if(r20 != r2) { + pc=0x2ab74; 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; + r2 = r2 + 9540; + pc=0x2aea8; + continue; + case 0x2afa8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + pc=0x2a6c8; + run_2a000(); return; + case 0x2afbc: + if(r5 != r0) { + pc=0x2afd0; + continue; + } + r16 = 6 << 16; + pc=0x2a99c; + continue; + case 0x2afd0: 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(); + r4 = r4 + 6300; + r31=0x2afe0; + pc=0x21400; + run_21000(); return; + case 0x2afe0: + r16 = 6 << 16; + r3 = r0 + r0; + pc=0x2a964; + continue; + case 0x2aff0: + r16 = 6 << 16; + r2 = r16 + 31424; + r3= page[(r2+36)>>>2]; + pc=0x2a964; + continue; + case 0x2b000: + pc=0x2b000; 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)); + 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_2b000() throws ExecutionException { /* 0x2b000 - 0x2b800 */ int addr, tmp; - for (;;) { - switch (pc) { + for(;;) { + switch(pc) { + case 0x2b000: + case 0x2b004: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2a99c; + run_2a800(); return; + case 0x2b014: + r6 = r17 + r0; + pc=0x2aaf0; + run_2a800(); return; + case 0x2b020: + if(r5 == r0) { + pc=0x2b014; + continue; + } + case 0x2b028: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2b038; + pc=0x21400; + run_21000(); return; + case 0x2b038: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2aab8; + run_2a800(); return; + case 0x2b048: + r31=0x2b050; + pc=0x23000; + run_23000(); return; + case 0x2b050: + pc=0x2a774; + run_2a000(); return; + case 0x2b058: + r31=0x2b060; + pc=0x23000; + run_23000(); return; + case 0x2b060: + pc=0x2a674; + run_2a000(); return; + case 0x2b068: + r6 = r17 << 8; + pc=0x2aaf0; + run_2a800(); return; + case 0x2b074: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2aab8; + run_2a800(); return; + case 0x2b088: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2b09c; + pc=0x1fc00; + run_1f800(); return; + case 0x2b09c: + r2 = r0 + 1; + pc=0x2a350; + run_2a000(); return; + case 0x2b0a8: + if(r20 == r0) { + pc=0x2ac0c; + run_2a800(); return; + } + r2 = r0 + 2; + if(r20 != r2) { + pc=0x2ab74; + run_2a800(); return; + } + pc=0x2aa68; + run_2a800(); return; + case 0x2b200: + r2 = r0 + 3; + if(r4 == r2) { + pc=0x2b218; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2b218: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2b24c; + pc=0x1cc00; + run_1c800(); return; + case 0x2b24c: + r4 = 6 << 16; + r4 = r4 + 21396; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2b264; + pc=0x42400; + run_42000(); return; + case 0x2b264: + if(r2 == r0) { + pc=0x2b2b8; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2b7bc; + continue; + } + r2 = r16 + r0; + case 0x2b288: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2b7e8; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8116; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2b2b8: + r2 = r0 + r0; + case 0x2b2bc: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2b2e0: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2b2f0; + pc=0x1a800; + run_1a800(); return; + case 0x2b2f0: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2b310; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2b310; + pc=0x21200; + run_21000(); return; + case 0x2b310: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2b324; + pc=0x56fe0; + run_56800(); return; + case 0x2b324: + r4 = r29 + 120; + r31=0x2b330; + pc=0x42e00; + run_42800(); return; + case 0x2b330: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b340; + return; + case 0x2b340: + r4= page[(r29+128)>>>2]; + r31=0x2b34c; + pc=0x21c00; + run_21800(); return; + case 0x2b34c: + r31=0x2b354; + pc=0x24000; + run_24000(); return; + case 0x2b354: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b360: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2bc5c; + run_2b800(); return; + } + case 0x2b370: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2bc44; + run_2b800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2b384: + r4 = r29 + 120; + r31=0x2b390; + pc=0x29400; + run_29000(); return; + case 0x2b390: + r4 = r29 + 120; + r31=0x2b39c; + pc=0x42c00; + run_42800(); return; + case 0x2b39c: + r31=0x2b3a4; + pc=0x27c00; + run_27800(); return; + case 0x2b3a4: + if(r2 == r0) { + pc=0x2bbe8; + run_2b800(); return; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x2bce8; + run_2b800(); return; + } + case 0x2b3bc: + r4 = r29 + 16; + r31=0x2b3c8; + pc=0x29400; + run_29000(); return; + case 0x2b3c8: + r4 = r29 + 16; + r31=0x2b3d4; + pc=0x42c00; + run_42800(); return; + case 0x2b3d4: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b3e4; + return; + case 0x2b3e4: + r4= page[(r29+24)>>>2]; + r31=0x2b3f0; + pc=0x21c00; + run_21800(); return; + case 0x2b3f0: + r4= page[(r29+128)>>>2]; + r31=0x2b3fc; + pc=0x21c00; + run_21800(); return; + case 0x2b3fc: + if(r16 == r0) { + pc=0x2b34c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2b418; + pc=0x1fc00; + run_1f800(); return; + case 0x2b418: + r31=0x2b420; + pc=0x24000; + run_24000(); return; + case 0x2b420: + pc=0x2b354; + continue; + case 0x2b428: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b438; + return; + case 0x2b438: + r4 = r0 + 3; + r31=0x2b444; + pc=0x29600; + run_29000(); return; + case 0x2b444: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b450: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b460; + return; + case 0x2b460: + r4 = r0 + 2; + r31=0x2b46c; + pc=0x29600; + run_29000(); return; + case 0x2b46c: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b478: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2b488; + pc=0x1a800; + run_1a800(); return; + case 0x2b488: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2b4a8; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2b4a8; + pc=0x21200; + run_21000(); return; + case 0x2b4a8: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2b4bc; + pc=0x56fe0; + run_56800(); return; + case 0x2b4bc: + r4 = r29 + 120; + r31=0x2b4c8; + pc=0x42e00; + run_42800(); return; + case 0x2b4c8: + r31=0x2b4d0; + pc=0x27c00; + run_27800(); return; + case 0x2b4d0: + if(r2 != r0) { + pc=0x2b808; + run_2b800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2b4ec; + pc=0x1fc00; + run_1f800(); return; + case 0x2b4ec: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b4f8: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b508; + return; + case 0x2b508: + r4 = r0 + 2; + r31=0x2b514; + pc=0x29800; + run_29800(); return; + case 0x2b514: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b520: + r31=0x2b528; + pc=0x27e00; + run_27800(); return; + case 0x2b528: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2bc1c; + run_2b800(); return; + } + case 0x2b53c: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2b8ac; + run_2b800(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x2b940; + run_2b800(); return; + } + if(r2 == r0) { + pc=0x2b930; + run_2b800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2b570; + pc=0x1a800; + run_1a800(); return; + case 0x2b570: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2b584; + pc=0x56fe0; + run_56800(); return; + case 0x2b584: + r4 = r18 + r0; + r31=0x2b590; + pc=0x42e00; + run_42800(); return; + case 0x2b590: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2be44; + run_2b800(); return; + } + case 0x2b5a8: + r31=0x2b5b0; + pc=0x29200; + run_29000(); return; + case 0x2b5b0: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2b5b8: + r31=0x2b5c0; + pc=0x24000; + run_24000(); return; + case 0x2b5c0: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x2be30; + run_2b800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2bc70; + run_2b800(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x2bdd4; + run_2b800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2be80; + run_2b800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x2bde4; + run_2b800(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x2bdf4; + run_2b800(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2b88c; + run_2b800(); return; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2b61c: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2b634; + pc=0x29a00; + run_29800(); return; + case 0x2b634: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b640: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2b658; + pc=0x50c00; + run_50800(); return; + case 0x2b658: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2b668; + pc=0x1fc00; + run_1f800(); return; + case 0x2b668: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b674: + r4 = r17 + r0; + r31=0x2b680; + pc=0x29e00; + run_29800(); return; + case 0x2b680: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b68c: + r31=0x2b694; + pc=0x27e00; + run_27800(); return; + case 0x2b694: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2bc30; + run_2b800(); return; + } + case 0x2b6a8: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2ba18; + run_2b800(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2bb6c; + run_2b800(); return; + } + if(r3 == r0) { + pc=0x2b9d8; + run_2b800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2b6dc; + pc=0x1a800; + run_1a800(); return; + case 0x2b6dc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2b6f0; + pc=0x56fe0; + run_56800(); return; + case 0x2b6f0: + r4 = r18 + r0; + r31=0x2b6fc; + pc=0x42e00; + run_42800(); return; + case 0x2b6fc: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2bd98; + run_2b800(); return; + } + case 0x2b714: + r31=0x2b71c; + pc=0x29200; + run_29000(); return; + case 0x2b71c: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2b724: + r31=0x2b72c; + pc=0x24000; + run_24000(); return; + case 0x2b72c: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2ba5c; + run_2b800(); return; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2b878; + run_2b800(); return; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2bc08; + run_2b800(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2b88c; + run_2b800(); return; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2b768: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2b780; + pc=0x29a00; + run_29800(); return; + case 0x2b780: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b78c: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2b840; + run_2b800(); return; + } + case 0x2b798: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b7a8; + return; + case 0x2b7a8: + r31=0x2b7b0; + pc=0x24000; + run_24000(); return; + case 0x2b7b0: + r2 = r0 + 1; + pc=0x2b2bc; + continue; + case 0x2b7bc: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2b7cc; + return; + case 0x2b7cc: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2b7dc; + return; + case 0x2b7dc: + r2= page[(r29+148)>>>2]; + pc=0x2b288; + continue; + case 0x2b7e8: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2b7fc; + pc=0x21400; + run_21000(); return; + case 0x2b7fc: + r2 = r0 + 1; case 0x2b800: - r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2b824; + pc=0x2b800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2b800() throws ExecutionException { /* 0x2b800 - 0x2c000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2b800: + pc=0x2b2bc; + run_2b000(); return; + case 0x2b808: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2b818; + return; + case 0x2b818: + r2= page[(r28+-31264)>>>2]; + r4= page[(r29+128)>>>2]; + pc=r2; + r31=0x2b828; + return; + case 0x2b828: + r4 = r0 + 3; + r31=0x2b834; + pc=0x29800; + run_29800(); return; + case 0x2b834: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2b840: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2b798; + run_2b000(); return; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2b870; + pc=0x21200; + run_21000(); return; + case 0x2b870: + pc=0x2b798; + run_2b000(); return; + case 0x2b878: + if(r20 == r0) { + pc=0x2bbd4; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2b9e0; + continue; + } + case 0x2b88c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2b8a0; + pc=0x1fc00; + run_1f800(); return; + case 0x2b8a0: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2b8ac: + r31=0x2b8b4; + pc=0x23000; + run_23000(); return; + case 0x2b8b4: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2b8c8; + pc=0x1a800; + run_1a800(); return; + case 0x2b8c8: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2b8dc; + pc=0x56fe0; + run_56800(); return; + case 0x2b8dc: + r4 = r18 + r0; + r31=0x2b8e8; + pc=0x42c00; + run_42800(); return; + case 0x2b8e8: + r31=0x2b8f0; + pc=0x24000; + run_24000(); return; + case 0x2b8f0: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x2b910; + pc=0x28e00; + run_28800(); return; + case 0x2b910: + r4= page[(r29+144)>>>2]; + r6 = r2 + r0; + r5 = r18 + r0; + r31=0x2b924; + pc=0x29a00; + run_29800(); return; + case 0x2b924: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2b930: + r31=0x2b938; + pc=0x24000; + run_24000(); return; + case 0x2b938: + pc=0x2b88c; + continue; + case 0x2b940: + r31=0x2b948; + pc=0x23000; + run_23000(); return; + case 0x2b948: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2b95c; + pc=0x1a800; + run_1a800(); return; + case 0x2b95c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2b970; + pc=0x56fe0; + run_56800(); return; + case 0x2b970: + r4 = r18 + r0; + r31=0x2b97c; + pc=0x42e00; + run_42800(); return; + case 0x2b97c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2bd1c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2b9a0; + pc=0x1fc00; + run_1f800(); return; + case 0x2b9a0: + r31=0x2b9a8; + pc=0x24000; + run_24000(); return; + case 0x2b9a8: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x2b9b4: + r2 = r17 + r2; + r6= page[(r2+0)>>>2]; + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r31=0x2b9cc; + pc=0x29a00; + run_29800(); return; + case 0x2b9cc: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2b9d8: + r31=0x2b9e0; + pc=0x24000; + run_24000(); return; + case 0x2b9e0: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2b88c; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2ba0c; + return; + case 0x2ba0c: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2ba18: + r31=0x2ba20; + pc=0x23000; + run_23000(); return; + case 0x2ba20: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2ba34; + pc=0x1a800; + run_1a800(); return; + case 0x2ba34: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2ba48; + pc=0x56fe0; + run_56800(); return; + case 0x2ba48: + r4 = r18 + r0; + r31=0x2ba54; + pc=0x42c00; + run_42800(); return; + case 0x2ba54: + r31=0x2ba5c; + pc=0x24000; + run_24000(); return; + case 0x2ba5c: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2bf0c; + continue; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2bed8; + continue; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2bf1c; + continue; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2beec; + continue; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2baac: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2bae4; + continue; + } + if(r19 != r0) { + pc=0x2badc; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2badc: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2bae4: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2baf8; + pc=0x29a00; + run_29800(); return; + case 0x2baf8: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2b354; + run_2b000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2b354; + run_2b000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2b354; + run_2b000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x2bf50; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2b354; + run_2b000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x2bb60; + pc=0x1fc00; + run_1f800(); return; + case 0x2bb60: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2bb6c: + r31=0x2bb74; + pc=0x23000; + run_23000(); return; + case 0x2bb74: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2bb88; + pc=0x1a800; + run_1a800(); return; + case 0x2bb88: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2bb9c; + pc=0x56fe0; + run_56800(); return; + case 0x2bb9c: + r4 = r18 + r0; + r31=0x2bba8; + pc=0x42e00; + run_42800(); return; + case 0x2bba8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2bcfc; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2bbcc; + pc=0x1fc00; + run_1f800(); return; + case 0x2bbcc: + r31=0x2bbd4; + pc=0x24000; + run_24000(); return; + case 0x2bbd4: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2b768; + run_2b000(); return; + case 0x2bbe8: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2bbfc; + pc=0x1fc00; + run_1f800(); return; + case 0x2bbfc: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2bc08: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2b768; + run_2b000(); return; + case 0x2bc1c: + r31=0x2bc24; + pc=0x23000; + run_23000(); return; + case 0x2bc24: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2b53c; + run_2b000(); return; + case 0x2bc30: + r31=0x2bc38; + pc=0x23000; + run_23000(); return; + case 0x2bc38: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2b6a8; + run_2b000(); return; + case 0x2bc44: + r31=0x2bc4c; + pc=0x23000; + run_23000(); return; + case 0x2bc4c: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2b384; + run_2b000(); return; + case 0x2bc5c: + r31=0x2bc64; + pc=0x23000; + run_23000(); return; + case 0x2bc64: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2b370; + run_2b000(); return; + case 0x2bc70: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2bd5c; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2bf70; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x2bd4c; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x2bd3c; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2b88c; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2bcc8; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2b61c; + run_2b000(); return; + case 0x2bcc8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2bcd8; + return; + case 0x2bcd8: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2b61c; + run_2b000(); return; + case 0x2bce8: + r31=0x2bcf0; + pc=0x23000; + run_23000(); return; + case 0x2bcf0: + r16 = r18 + r0; + pc=0x2b3bc; + run_2b000(); return; + case 0x2bcfc: + r31=0x2bd04; + pc=0x23000; + run_23000(); return; + case 0x2bd04: + r31=0x2bd0c; + pc=0x29200; + run_29000(); return; + case 0x2bd0c: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2b724; + run_2b000(); return; + case 0x2bd1c: + r31=0x2bd24; + pc=0x23000; + run_23000(); return; + case 0x2bd24: + r31=0x2bd2c; + pc=0x29200; + run_29000(); return; + case 0x2bd2c: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2b5b8; + run_2b000(); return; + case 0x2bd3c: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2b61c; + run_2b000(); return; + case 0x2bd4c: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2b61c; + run_2b000(); return; + case 0x2bd5c: + r2 = 6 << 16; + r2 = r2 + 9480; + case 0x2bd64: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2bd7c; + pc=0x29a00; + run_29800(); return; + case 0x2bd7c: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x2bd8c; + pc=0x29000; + run_29000(); return; + case 0x2bd8c: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2bd98: + r31=0x2bda0; + pc=0x29200; + run_29000(); return; + case 0x2bda0: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2bf40; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2bdcc; + pc=0x1fc00; + run_1f800(); return; + case 0x2bdcc: + pc=0x2b714; + run_2b000(); return; + case 0x2bdd4: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2b61c; + run_2b000(); return; + case 0x2bde4: + r2 = 6 << 16; + r2 = r2 + 9180; + pc=0x2bd64; + continue; + case 0x2bdf4: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2be10; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2b61c; + run_2b000(); return; + case 0x2be10: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2be20; + return; + case 0x2be20: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2b61c; + run_2b000(); return; + case 0x2be30: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2b9b4; + continue; + case 0x2be44: + r31=0x2be4c; + pc=0x29200; + run_29000(); return; + case 0x2be4c: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2bf30; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2be78; + pc=0x1fc00; + run_1f800(); return; + case 0x2be78: + pc=0x2b5a8; + run_2b000(); return; + case 0x2be80: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x2bea8; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2b88c; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x2bd64; + continue; + case 0x2bea8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r31=0x2becc; + pc=0x29a00; + run_29800(); return; + case 0x2becc: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2bed8: + if(r5 != r0) { + pc=0x2beec; + continue; + } + r16 = 6 << 16; + pc=0x2bae4; + continue; + case 0x2beec: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2befc; + pc=0x21400; + run_21000(); return; + case 0x2befc: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2baac; + continue; + case 0x2bf0c: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2bae4; + continue; + case 0x2bf1c: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2baac; + continue; + case 0x2bf30: + r31=0x2bf38; + pc=0x23000; + run_23000(); return; + case 0x2bf38: + pc=0x2b5a8; + run_2b000(); return; + case 0x2bf40: + r31=0x2bf48; + pc=0x23000; + run_23000(); return; + case 0x2bf48: + pc=0x2b714; + run_2b000(); return; + case 0x2bf50: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2bf64; + pc=0x1fc00; + run_1f800(); return; + case 0x2bf64: + r2 = r0 + 1; + pc=0x2b2bc; + run_2b000(); return; + case 0x2bf70: + if(r19 == r0) { + pc=0x2b9a8; continue; } r2 = r0 + 2; - writePages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff] = r2; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc = r31; + if(r19 != r2) { + pc=0x2b88c; + continue; + } + pc=0x2b8f0; + continue; + case 0x2c000: + pc=0x2c000; 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)); + 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_2c000() throws ExecutionException { /* 0x2c000 - 0x2c800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2ba00: - r2 = readPages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x2c000: + r2 = r0 + 3; + if(r4 == r2) { + pc=0x2c018; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2c018: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2c04c; + pc=0x1cc00; + run_1c800(); return; + case 0x2c04c: + r4 = 6 << 16; + r4 = r4 + 20916; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2c064; + pc=0x42400; + run_42000(); return; + case 0x2c064: + if(r2 == r0) { + pc=0x2c0b8; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2c5c4; + continue; + } + r2 = r16 + r0; + case 0x2c088: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2c5f0; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8160; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2c0b8: + r4 = 6 << 16; + r4 = r4 + 20876; + r31=0x2c0c8; + pc=0x2a200; + run_2a000(); return; + case 0x2c0c8: + if(r2 == r0) { + pc=0x2c0f8; + continue; + } + case 0x2c0d0: + r2 = r0 + 1; + case 0x2c0d4: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2c0f8: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x2c108; + pc=0x2a200; + run_2a000(); return; + case 0x2c108: + pc=0x2c0d4; + continue; + case 0x2c110: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c120; + pc=0x1a800; + run_1a800(); return; + case 0x2c120: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2c140; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2c140; + pc=0x21200; + run_21000(); return; + case 0x2c140: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2c154; + pc=0x56fe0; + run_56800(); return; + case 0x2c154: + r4 = r29 + 120; + r31=0x2c160; + pc=0x42e00; + run_42800(); return; + case 0x2c160: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c170; + return; + case 0x2c170: + r4= page[(r29+128)>>>2]; + r31=0x2c17c; + pc=0x21c00; + run_21800(); return; + case 0x2c17c: + r31=0x2c184; + pc=0x24000; + run_24000(); return; + case 0x2c184: + pc=0x2c0d0; + continue; + case 0x2c18c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2ca18; + run_2c800(); return; + } + case 0x2c19c: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2ca00; + run_2c800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2c1b0: + r4 = r29 + 120; + r31=0x2c1bc; + pc=0x29400; + run_29000(); return; + case 0x2c1bc: + r4 = r29 + 120; + r31=0x2c1c8; + pc=0x42c00; + run_42800(); return; + case 0x2c1c8: + r31=0x2c1d0; + pc=0x27c00; + run_27800(); return; + case 0x2c1d0: + if(r2 == r0) { + pc=0x2c2fc; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x2cab8; + run_2c800(); return; + } + case 0x2c1e8: + r4 = r29 + 16; + r31=0x2c1f4; + pc=0x29400; + run_29000(); return; + case 0x2c1f4: + r4 = r29 + 16; + r31=0x2c200; + pc=0x42c00; + run_42800(); return; + case 0x2c200: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c210; + return; + case 0x2c210: + r4= page[(r29+24)>>>2]; + r31=0x2c21c; + pc=0x21c00; + run_21800(); return; + case 0x2c21c: + r4= page[(r29+128)>>>2]; + r31=0x2c228; + pc=0x21c00; + run_21800(); return; + case 0x2c228: + if(r16 == r0) { + pc=0x2c17c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2c244; + pc=0x1fc00; + run_1f800(); return; + case 0x2c244: + r31=0x2c24c; + pc=0x24000; + run_24000(); return; + case 0x2c24c: + pc=0x2c0d0; + continue; + case 0x2c254: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c264; + return; + case 0x2c264: + r4 = r0 + 3; + r31=0x2c270; + pc=0x29600; + run_29000(); return; + case 0x2c270: + pc=0x2c0d0; + continue; + case 0x2c278: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c288; + return; + case 0x2c288: + r4 = r0 + 2; + r31=0x2c294; + pc=0x29600; + run_29000(); return; + case 0x2c294: + pc=0x2c0d0; + continue; + case 0x2c29c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c2ac; + pc=0x1a800; + run_1a800(); return; + case 0x2c2ac: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2c2cc; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2c2cc; + pc=0x21200; + run_21000(); return; + case 0x2c2cc: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c2e0; + pc=0x56fe0; + run_56800(); return; + case 0x2c2e0: + r4 = r29 + 120; + r31=0x2c2ec; + pc=0x42e00; + run_42800(); return; + case 0x2c2ec: + r31=0x2c2f4; + pc=0x27c00; + run_27800(); return; + case 0x2c2f4: + if(r2 != r0) { + pc=0x2c60c; + continue; + } + case 0x2c2fc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2c310; + pc=0x1fc00; + run_1f800(); return; + case 0x2c310: + pc=0x2c0d0; + continue; + case 0x2c318: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c328; + return; + case 0x2c328: + r4 = r0 + 2; + r31=0x2c334; + pc=0x29800; + run_29800(); return; + case 0x2c334: + pc=0x2c0d0; + continue; + case 0x2c33c: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2c644; + continue; + } + case 0x2c348: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c358; + return; + case 0x2c358: + r31=0x2c360; + pc=0x24000; + run_24000(); return; + case 0x2c360: + pc=0x2c0d0; + continue; + case 0x2c368: + r4 = r17 + r0; + r31=0x2c374; + pc=0x29e00; + run_29800(); return; + case 0x2c374: + pc=0x2c0d0; + continue; + case 0x2c37c: + r31=0x2c384; + pc=0x27e00; + run_27800(); return; + case 0x2c384: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2ca2c; + run_2c800(); return; + } + case 0x2c398: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2c764; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2c6e8; + continue; + } + if(r3 == r0) { + pc=0x2c6ac; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2c3cc; + pc=0x1a800; + run_1a800(); return; + case 0x2c3cc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c3e0; + pc=0x56fe0; + run_56800(); return; + case 0x2c3e0: + r4 = r18 + r0; + r31=0x2c3ec; + pc=0x42e00; + run_42800(); return; + case 0x2c3ec: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2cb70; + run_2c800(); return; + } + case 0x2c404: + r31=0x2c40c; + pc=0x29200; + run_29000(); return; + case 0x2c40c: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2c414: + r31=0x2c41c; + pc=0x24000; + run_24000(); return; + case 0x2c41c: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2c7a8; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2c67c; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2c9d8; + run_2c800(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2c690; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2c458: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2c470; + pc=0x29a00; + run_29800(); return; + case 0x2c470: + pc=0x2c0d0; + continue; + case 0x2c478: + r31=0x2c480; + pc=0x27e00; + run_27800(); return; + case 0x2c480: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2c9ec; + run_2c800(); return; + } + case 0x2c494: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2c8c4; + run_2c800(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x2c944; + run_2c800(); return; + } + if(r2 == r0) { + pc=0x2c8b4; + run_2c800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2c4c8; + pc=0x1a800; + run_1a800(); return; + case 0x2c4c8: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c4dc; + pc=0x56fe0; + run_56800(); return; + case 0x2c4dc: + r4 = r18 + r0; + r31=0x2c4e8; + pc=0x42e00; + run_42800(); return; + case 0x2c4e8: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2cc00; + run_2c800(); return; + } + case 0x2c500: + r31=0x2c508; + pc=0x29200; + run_29000(); return; + case 0x2c508: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2c510: + r31=0x2c518; + pc=0x24000; + run_24000(); return; + case 0x2c518: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x2cbec; + run_2c800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2ca40; + run_2c800(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x2cc3c; + run_2c800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2cc4c; + run_2c800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x2cb08; + run_2c800(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x2cacc; + run_2c800(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2c690; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2c574: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2c58c; + pc=0x29a00; + run_29800(); return; + case 0x2c58c: + pc=0x2c0d0; + continue; + case 0x2c594: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2c5ac; + pc=0x50c00; + run_50800(); return; + case 0x2c5ac: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2c5bc; + pc=0x1fc00; + run_1f800(); return; + case 0x2c5bc: + pc=0x2c0d0; + continue; + case 0x2c5c4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2c5d4; + return; + case 0x2c5d4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2c5e4; + return; + case 0x2c5e4: + r2= page[(r29+148)>>>2]; + pc=0x2c088; + continue; + case 0x2c5f0: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2c604; + pc=0x21400; + run_21000(); return; + case 0x2c604: + pc=0x2c0d0; + continue; + case 0x2c60c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2c61c; + return; + case 0x2c61c: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2c630; + return; + case 0x2c630: + r4 = r0 + 3; + r31=0x2c63c; + pc=0x29800; + run_29800(); return; + case 0x2c63c: + pc=0x2c0d0; + continue; + case 0x2c644: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2c348; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2c674; + pc=0x21200; + run_21000(); return; + case 0x2c674: + pc=0x2c348; + continue; + case 0x2c67c: + if(r20 == r0) { + pc=0x2c750; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2c6b4; + continue; + } + case 0x2c690: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2c6a4; + pc=0x1fc00; + run_1f800(); return; + case 0x2c6a4: + pc=0x2c0d0; + continue; + case 0x2c6ac: + r31=0x2c6b4; + pc=0x24000; + run_24000(); return; + case 0x2c6b4: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2c690; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2c6e0; + return; + case 0x2c6e0: + pc=0x2c0d0; + continue; + case 0x2c6e8: + r31=0x2c6f0; + pc=0x23000; + run_23000(); return; + case 0x2c6f0: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c704; + pc=0x1a800; + run_1a800(); return; + case 0x2c704: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c718; + pc=0x56fe0; + run_56800(); return; + case 0x2c718: + r4 = r18 + r0; + r31=0x2c724; + pc=0x42e00; + run_42800(); return; + case 0x2c724: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2cbac; + run_2c800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2c748; + pc=0x1fc00; + run_1f800(); return; + case 0x2c748: + r31=0x2c750; + pc=0x24000; + run_24000(); return; + case 0x2c750: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2c458; + continue; + case 0x2c764: + r31=0x2c76c; + pc=0x23000; + run_23000(); return; + case 0x2c76c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c780; + pc=0x1a800; + run_1a800(); return; + case 0x2c780: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c794; + pc=0x56fe0; + run_56800(); return; + case 0x2c794: + r4 = r18 + r0; + r31=0x2c7a0; + pc=0x42c00; + run_42800(); return; + case 0x2c7a0: + r31=0x2c7a8; + pc=0x24000; + run_24000(); return; + case 0x2c7a8: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2ccd4; + run_2c800(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2cca0; + run_2c800(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2cce4; + run_2c800(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2ccb4; + run_2c800(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2c7f8: + r3= page[(r16+31424)>>>2]; + case 0x2c800: + pc=0x2c800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2c800() throws ExecutionException { /* 0x2c800 - 0x2d000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2c800: + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2c830; + continue; + } + if(r19 != r0) { + pc=0x2c828; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2c828: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2c830: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2c844; + pc=0x29a00; + run_29800(); return; + case 0x2c844: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2c0d0; + run_2c000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2c0d0; + run_2c000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2c0d0; + run_2c000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x2cd34; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2c0d0; + run_2c000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x2c8ac; + pc=0x1fc00; + run_1f800(); return; + case 0x2c8ac: + pc=0x2c0d0; + run_2c000(); return; + case 0x2c8b4: + r31=0x2c8bc; + pc=0x24000; + run_24000(); return; + case 0x2c8bc: + pc=0x2c690; + run_2c000(); return; + case 0x2c8c4: + r31=0x2c8cc; + pc=0x23000; + run_23000(); return; + case 0x2c8cc: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c8e0; + pc=0x1a800; + run_1a800(); return; + case 0x2c8e0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c8f4; + pc=0x56fe0; + run_56800(); return; + case 0x2c8f4: + r4 = r18 + r0; + r31=0x2c900; + pc=0x42c00; + run_42800(); return; + case 0x2c900: + r31=0x2c908; + pc=0x24000; + run_24000(); return; + case 0x2c908: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x2c928; + pc=0x28e00; + run_28800(); return; + case 0x2c928: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x2c93c; + pc=0x29a00; + run_29800(); return; + case 0x2c93c: + pc=0x2c0d0; + run_2c000(); return; + case 0x2c944: + r31=0x2c94c; + pc=0x23000; + run_23000(); return; + case 0x2c94c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2c960; + pc=0x1a800; + run_1a800(); return; + case 0x2c960: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2c974; + pc=0x56fe0; + run_56800(); return; + case 0x2c974: + r4 = r18 + r0; + r31=0x2c980; + pc=0x42e00; + run_42800(); return; + case 0x2c980: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2cbcc; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2c9a4; + pc=0x1fc00; + run_1f800(); return; + case 0x2c9a4: + r31=0x2c9ac; + pc=0x24000; + run_24000(); return; + case 0x2c9ac: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x2c9b8: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x2c9d0; + pc=0x29a00; + run_29800(); return; + case 0x2c9d0: + pc=0x2c0d0; + run_2c000(); return; + case 0x2c9d8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2c458; + run_2c000(); return; + case 0x2c9ec: + r31=0x2c9f4; + pc=0x23000; + run_23000(); return; + case 0x2c9f4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2c494; + run_2c000(); return; + case 0x2ca00: + r31=0x2ca08; + pc=0x23000; + run_23000(); return; + case 0x2ca08: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2c1b0; + run_2c000(); return; + case 0x2ca18: + r31=0x2ca20; + pc=0x23000; + run_23000(); return; + case 0x2ca20: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2c19c; + run_2c000(); return; + case 0x2ca2c: + r31=0x2ca34; + pc=0x23000; + run_23000(); return; + case 0x2ca34: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2c398; + run_2c000(); return; + case 0x2ca40: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2cb60; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2cd18; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x2cb50; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x2cb40; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2c690; + run_2c000(); return; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2ca98; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2c574; + run_2c000(); return; + case 0x2ca98: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2caa8; + return; + case 0x2caa8: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2c574; + run_2c000(); return; + case 0x2cab8: + r31=0x2cac0; + pc=0x23000; + run_23000(); return; + case 0x2cac0: + r16 = r18 + r0; + pc=0x2c1e8; + run_2c000(); return; + case 0x2cacc: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2cae8; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2c574; + run_2c000(); return; + case 0x2cae8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2caf8; + return; + case 0x2caf8: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2c574; + run_2c000(); return; + case 0x2cb08: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x2cb10: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2cb28; + pc=0x29a00; + run_29800(); return; + case 0x2cb28: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x2cb38; + pc=0x29000; + run_29000(); return; + case 0x2cb38: + pc=0x2c0d0; + run_2c000(); return; + case 0x2cb40: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2c574; + run_2c000(); return; + case 0x2cb50: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2c574; + run_2c000(); return; + case 0x2cb60: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x2cb10; + continue; + case 0x2cb70: + r31=0x2cb78; + pc=0x29200; + run_29000(); return; + case 0x2cb78: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2ccf8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2cba4; + pc=0x1fc00; + run_1f800(); return; + case 0x2cba4: + pc=0x2c404; + run_2c000(); return; + case 0x2cbac: + r31=0x2cbb4; + pc=0x23000; + run_23000(); return; + case 0x2cbb4: + r31=0x2cbbc; + pc=0x29200; + run_29000(); return; + case 0x2cbbc: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2c414; + run_2c000(); return; + case 0x2cbcc: + r31=0x2cbd4; + pc=0x23000; + run_23000(); return; + case 0x2cbd4: + r31=0x2cbdc; + pc=0x29200; + run_29000(); return; + case 0x2cbdc: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2c510; + run_2c000(); return; + case 0x2cbec: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2c9b8; + continue; + case 0x2cc00: + r31=0x2cc08; + pc=0x29200; + run_29000(); return; + case 0x2cc08: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2cd08; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2cc34; + pc=0x1fc00; + run_1f800(); return; + case 0x2cc34: + pc=0x2c500; + run_2c000(); return; + case 0x2cc3c: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2c574; + run_2c000(); return; + case 0x2cc4c: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x2cc74; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2c690; + run_2c000(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x2cb10; + continue; + case 0x2cc74: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2cc98; + pc=0x29a00; + run_29800(); return; + case 0x2cc98: + pc=0x2c0d0; + run_2c000(); return; + case 0x2cca0: + if(r5 != r0) { + pc=0x2ccb4; + continue; + } + r16 = 6 << 16; + pc=0x2c830; + continue; + case 0x2ccb4: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2ccc4; + pc=0x21400; + run_21000(); return; + case 0x2ccc4: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2c7f8; + run_2c000(); return; + case 0x2ccd4: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2c830; + continue; + case 0x2cce4: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2c7f8; + run_2c000(); return; + case 0x2ccf8: + r31=0x2cd00; + pc=0x23000; + run_23000(); return; + case 0x2cd00: + pc=0x2c404; + run_2c000(); return; + case 0x2cd08: + r31=0x2cd10; + pc=0x23000; + run_23000(); return; + case 0x2cd10: + pc=0x2c500; + run_2c000(); return; + case 0x2cd18: + if(r19 == r0) { + pc=0x2c9ac; + continue; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x2c690; + run_2c000(); return; + } + pc=0x2c908; + continue; + case 0x2cd34: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2cd48; + pc=0x1fc00; + run_1f800(); return; + case 0x2cd48: + pc=0x2c0d0; + run_2c000(); return; + case 0x2ce00: + r2 = r0 + 3; + if(r4 == r2) { + pc=0x2ce18; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2ce18: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2ce4c; + pc=0x1cc00; + run_1c800(); return; + case 0x2ce4c: + r4 = 6 << 16; + r4 = r4 + 20796; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2ce64; + pc=0x42400; + run_42000(); return; + case 0x2ce64: + if(r2 == r0) { + pc=0x2ceb8; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2d3c4; + run_2d000(); return; + } + r2 = r16 + r0; + case 0x2ce88: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2d3f0; + run_2d000(); return; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8204; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2ceb8: + r4 = 6 << 16; + r4 = r4 + 20916; + r31=0x2cec8; + pc=0x2a200; + run_2a000(); return; + case 0x2cec8: + if(r2 == r0) { + pc=0x2cef8; + continue; + } + case 0x2ced0: + r2 = r0 + 1; + case 0x2ced4: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2cef8: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x2cf08; + pc=0x2a200; + run_2a000(); return; + case 0x2cf08: + pc=0x2ced4; + continue; + case 0x2cf10: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2cf20; + pc=0x1a800; + run_1a800(); return; + case 0x2cf20: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2cf40; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2cf40; + pc=0x21200; + run_21000(); return; + case 0x2cf40: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2cf54; + pc=0x56fe0; + run_56800(); return; + case 0x2cf54: + r4 = r29 + 120; + r31=0x2cf60; + pc=0x42e00; + run_42800(); return; + case 0x2cf60: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2cf70; + return; + case 0x2cf70: + r4= page[(r29+128)>>>2]; + r31=0x2cf7c; + pc=0x21c00; + run_21800(); return; + case 0x2cf7c: + r31=0x2cf84; + pc=0x24000; + run_24000(); return; + case 0x2cf84: + pc=0x2ced0; + continue; + case 0x2cf8c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2d818; + run_2d800(); return; + } + case 0x2cf9c: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2d800; + run_2d800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2cfb0: + r4 = r29 + 120; + r31=0x2cfbc; + pc=0x29400; + run_29000(); return; + case 0x2cfbc: + r4 = r29 + 120; + r31=0x2cfc8; + pc=0x42c00; + run_42800(); return; + case 0x2cfc8: + r31=0x2cfd0; + pc=0x27c00; + run_27800(); return; + case 0x2cfd0: + if(r2 == r0) { + pc=0x2d0fc; + run_2d000(); return; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x2d8b8; + run_2d800(); return; + } + case 0x2cfe8: + r4 = r29 + 16; + r31=0x2cff4; + pc=0x29400; + run_29000(); return; + case 0x2cff4: + r4 = r29 + 16; + r31=0x2d000; + pc=0x42c00; + run_42800(); return; + case 0x2d000: + pc=0x2d000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2d000() throws ExecutionException { /* 0x2d000 - 0x2d800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2d000: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d010; + return; + case 0x2d010: + r4= page[(r29+24)>>>2]; + r31=0x2d01c; + pc=0x21c00; + run_21800(); return; + case 0x2d01c: + r4= page[(r29+128)>>>2]; + r31=0x2d028; + pc=0x21c00; + run_21800(); return; + case 0x2d028: + if(r16 == r0) { + pc=0x2cf7c; + run_2c800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2d044; + pc=0x1fc00; + run_1f800(); return; + case 0x2d044: + r31=0x2d04c; + pc=0x24000; + run_24000(); return; + case 0x2d04c: + pc=0x2ced0; + run_2c800(); return; + case 0x2d054: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d064; + return; + case 0x2d064: + r4 = r0 + 3; + r31=0x2d070; + pc=0x29600; + run_29000(); return; + case 0x2d070: + pc=0x2ced0; + run_2c800(); return; + case 0x2d078: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d088; + return; + case 0x2d088: + r4 = r0 + 2; + r31=0x2d094; + pc=0x29600; + run_29000(); return; + case 0x2d094: + pc=0x2ced0; + run_2c800(); return; + case 0x2d09c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2d0ac; + pc=0x1a800; + run_1a800(); return; + case 0x2d0ac: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2d0cc; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2d0cc; + pc=0x21200; + run_21000(); return; + case 0x2d0cc: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d0e0; + pc=0x56fe0; + run_56800(); return; + case 0x2d0e0: + r4 = r29 + 120; + r31=0x2d0ec; + pc=0x42e00; + run_42800(); return; + case 0x2d0ec: + r31=0x2d0f4; + pc=0x27c00; + run_27800(); return; + case 0x2d0f4: + if(r2 != r0) { + pc=0x2d40c; + continue; + } + case 0x2d0fc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2d110; + pc=0x1fc00; + run_1f800(); return; + case 0x2d110: + pc=0x2ced0; + run_2c800(); return; + case 0x2d118: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d128; + return; + case 0x2d128: + r4 = r0 + 2; + r31=0x2d134; + pc=0x29800; + run_29800(); return; + case 0x2d134: + pc=0x2ced0; + run_2c800(); return; + case 0x2d13c: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2d444; + continue; + } + case 0x2d148: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d158; + return; + case 0x2d158: + r31=0x2d160; + pc=0x24000; + run_24000(); return; + case 0x2d160: + pc=0x2ced0; + run_2c800(); return; + case 0x2d168: + r4 = r17 + r0; + r31=0x2d174; + pc=0x29e00; + run_29800(); return; + case 0x2d174: + pc=0x2ced0; + run_2c800(); return; + case 0x2d17c: + r31=0x2d184; + pc=0x27e00; + run_27800(); return; + case 0x2d184: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2d82c; + run_2d800(); return; + } + case 0x2d198: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2d564; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2d4e8; + continue; + } + if(r3 == r0) { + pc=0x2d4ac; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2d1cc; + pc=0x1a800; + run_1a800(); return; + case 0x2d1cc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d1e0; + pc=0x56fe0; + run_56800(); return; + case 0x2d1e0: + r4 = r18 + r0; + r31=0x2d1ec; + pc=0x42e00; + run_42800(); return; + case 0x2d1ec: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2d970; + run_2d800(); return; + } + case 0x2d204: + r31=0x2d20c; + pc=0x29200; + run_29000(); return; + case 0x2d20c: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2d214: + r31=0x2d21c; + pc=0x24000; + run_24000(); return; + case 0x2d21c: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2d5a8; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2d47c; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2d7d8; + continue; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2d490; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2d258: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2d270; + pc=0x29a00; + run_29800(); return; + case 0x2d270: + pc=0x2ced0; + run_2c800(); return; + case 0x2d278: + r31=0x2d280; + pc=0x27e00; + run_27800(); return; + case 0x2d280: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2d7ec; + continue; + } + case 0x2d294: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2d6c4; + continue; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x2d744; + continue; + } + if(r2 == r0) { + pc=0x2d6b4; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2d2c8; + pc=0x1a800; + run_1a800(); return; + case 0x2d2c8: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d2dc; + pc=0x56fe0; + run_56800(); return; + case 0x2d2dc: + r4 = r18 + r0; + r31=0x2d2e8; + pc=0x42e00; + run_42800(); return; + case 0x2d2e8: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2da00; + run_2d800(); return; + } + case 0x2d300: + r31=0x2d308; + pc=0x29200; + run_29000(); return; + case 0x2d308: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2d310: + r31=0x2d318; + pc=0x24000; + run_24000(); return; + case 0x2d318: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x2d9ec; + run_2d800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2d840; + run_2d800(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x2da3c; + run_2d800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2da4c; + run_2d800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x2d908; + run_2d800(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x2d8cc; + run_2d800(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2d490; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2d374: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2d38c; + pc=0x29a00; + run_29800(); return; + case 0x2d38c: + pc=0x2ced0; + run_2c800(); return; + case 0x2d394: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2d3ac; + pc=0x50c00; + run_50800(); return; + case 0x2d3ac: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2d3bc; + pc=0x1fc00; + run_1f800(); return; + case 0x2d3bc: + pc=0x2ced0; + run_2c800(); return; + case 0x2d3c4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2d3d4; + return; + case 0x2d3d4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2d3e4; + return; + case 0x2d3e4: + r2= page[(r29+148)>>>2]; + pc=0x2ce88; + run_2c800(); return; + case 0x2d3f0: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2d404; + pc=0x21400; + run_21000(); return; + case 0x2d404: + pc=0x2ced0; + run_2c800(); return; + case 0x2d40c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2d41c; + return; + case 0x2d41c: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2d430; + return; + case 0x2d430: + r4 = r0 + 3; + r31=0x2d43c; + pc=0x29800; + run_29800(); return; + case 0x2d43c: + pc=0x2ced0; + run_2c800(); return; + case 0x2d444: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2d148; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2d474; + pc=0x21200; + run_21000(); return; + case 0x2d474: + pc=0x2d148; + continue; + case 0x2d47c: + if(r20 == r0) { + pc=0x2d550; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2d4b4; + continue; + } + case 0x2d490: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2d4a4; + pc=0x1fc00; + run_1f800(); return; + case 0x2d4a4: + pc=0x2ced0; + run_2c800(); return; + case 0x2d4ac: + r31=0x2d4b4; + pc=0x24000; + run_24000(); return; + case 0x2d4b4: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2d490; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2d4e0; + return; + case 0x2d4e0: + pc=0x2ced0; + run_2c800(); return; + case 0x2d4e8: + r31=0x2d4f0; + pc=0x23000; + run_23000(); return; + case 0x2d4f0: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2d504; + pc=0x1a800; + run_1a800(); return; + case 0x2d504: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d518; + pc=0x56fe0; + run_56800(); return; + case 0x2d518: + r4 = r18 + r0; + r31=0x2d524; + pc=0x42e00; + run_42800(); return; + case 0x2d524: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2d9ac; + run_2d800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2d548; + pc=0x1fc00; + run_1f800(); return; + case 0x2d548: + r31=0x2d550; + pc=0x24000; + run_24000(); return; + case 0x2d550: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2d258; + continue; + case 0x2d564: + r31=0x2d56c; + pc=0x23000; + run_23000(); return; + case 0x2d56c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2d580; + pc=0x1a800; + run_1a800(); return; + case 0x2d580: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d594; + pc=0x56fe0; + run_56800(); return; + case 0x2d594: + r4 = r18 + r0; + r31=0x2d5a0; + pc=0x42c00; + run_42800(); return; + case 0x2d5a0: + r31=0x2d5a8; + pc=0x24000; + run_24000(); return; + case 0x2d5a8: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2dad4; + run_2d800(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2daa0; + run_2d800(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2dae4; + run_2d800(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2dab4; + run_2d800(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2d5f8: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2d630; + continue; + } + if(r19 != r0) { + pc=0x2d628; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2d628: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2d630: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2d644; + pc=0x29a00; + run_29800(); return; + case 0x2d644: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2ced0; + run_2c800(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2ced0; + run_2c800(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2ced0; + run_2c800(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x2db34; + run_2d800(); return; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2ced0; + run_2c800(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x2d6ac; + pc=0x1fc00; + run_1f800(); return; + case 0x2d6ac: + pc=0x2ced0; + run_2c800(); return; + case 0x2d6b4: + r31=0x2d6bc; + pc=0x24000; + run_24000(); return; + case 0x2d6bc: + pc=0x2d490; + continue; + case 0x2d6c4: + r31=0x2d6cc; + pc=0x23000; + run_23000(); return; + case 0x2d6cc: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2d6e0; + pc=0x1a800; + run_1a800(); return; + case 0x2d6e0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d6f4; + pc=0x56fe0; + run_56800(); return; + case 0x2d6f4: + r4 = r18 + r0; + r31=0x2d700; + pc=0x42c00; + run_42800(); return; + case 0x2d700: + r31=0x2d708; + pc=0x24000; + run_24000(); return; + case 0x2d708: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x2d728; + pc=0x28e00; + run_28800(); return; + case 0x2d728: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x2d73c; + pc=0x29a00; + run_29800(); return; + case 0x2d73c: + pc=0x2ced0; + run_2c800(); return; + case 0x2d744: + r31=0x2d74c; + pc=0x23000; + run_23000(); return; + case 0x2d74c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2d760; + pc=0x1a800; + run_1a800(); return; + case 0x2d760: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2d774; + pc=0x56fe0; + run_56800(); return; + case 0x2d774: + r4 = r18 + r0; + r31=0x2d780; + pc=0x42e00; + run_42800(); return; + case 0x2d780: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2d9cc; + run_2d800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2d7a4; + pc=0x1fc00; + run_1f800(); return; + case 0x2d7a4: + r31=0x2d7ac; + pc=0x24000; + run_24000(); return; + case 0x2d7ac: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x2d7b8: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x2d7d0; + pc=0x29a00; + run_29800(); return; + case 0x2d7d0: + pc=0x2ced0; + run_2c800(); return; + case 0x2d7d8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2d258; + continue; + case 0x2d7ec: + r31=0x2d7f4; + pc=0x23000; + run_23000(); return; + case 0x2d7f4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2d294; + continue; + case 0x2d800: + pc=0x2d800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2d800() throws ExecutionException { /* 0x2d800 - 0x2e000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2d800: + r31=0x2d808; + pc=0x23000; + run_23000(); return; + case 0x2d808: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2cfb0; + run_2c800(); return; + case 0x2d818: + r31=0x2d820; + pc=0x23000; + run_23000(); return; + case 0x2d820: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2cf9c; + run_2c800(); return; + case 0x2d82c: + r31=0x2d834; + pc=0x23000; + run_23000(); return; + case 0x2d834: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2d198; + run_2d000(); return; + case 0x2d840: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2d960; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2db18; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x2d950; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x2d940; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2d490; + run_2d000(); return; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2d898; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2d374; + run_2d000(); return; + case 0x2d898: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2d8a8; + return; + case 0x2d8a8: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2d374; + run_2d000(); return; + case 0x2d8b8: + r31=0x2d8c0; + pc=0x23000; + run_23000(); return; + case 0x2d8c0: + r16 = r18 + r0; + pc=0x2cfe8; + run_2c800(); return; + case 0x2d8cc: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2d8e8; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2d374; + run_2d000(); return; + case 0x2d8e8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2d8f8; + return; + case 0x2d8f8: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2d374; + run_2d000(); return; + case 0x2d908: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x2d910: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2d928; + pc=0x29a00; + run_29800(); return; + case 0x2d928: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x2d938; + pc=0x29000; + run_29000(); return; + case 0x2d938: + pc=0x2ced0; + run_2c800(); return; + case 0x2d940: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2d374; + run_2d000(); return; + case 0x2d950: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2d374; + run_2d000(); return; + case 0x2d960: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x2d910; + continue; + case 0x2d970: + r31=0x2d978; + pc=0x29200; + run_29000(); return; + case 0x2d978: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2daf8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2d9a4; + pc=0x1fc00; + run_1f800(); return; + case 0x2d9a4: + pc=0x2d204; + run_2d000(); return; + case 0x2d9ac: + r31=0x2d9b4; + pc=0x23000; + run_23000(); return; + case 0x2d9b4: + r31=0x2d9bc; + pc=0x29200; + run_29000(); return; + case 0x2d9bc: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2d214; + run_2d000(); return; + case 0x2d9cc: + r31=0x2d9d4; + pc=0x23000; + run_23000(); return; + case 0x2d9d4: + r31=0x2d9dc; + pc=0x29200; + run_29000(); return; + case 0x2d9dc: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2d310; + run_2d000(); return; + case 0x2d9ec: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2d7b8; + run_2d000(); return; + case 0x2da00: + r31=0x2da08; + pc=0x29200; + run_29000(); return; + case 0x2da08: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2db08; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2da34; + pc=0x1fc00; + run_1f800(); return; + case 0x2da34: + pc=0x2d300; + run_2d000(); return; + case 0x2da3c: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2d374; + run_2d000(); return; + case 0x2da4c: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x2da74; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2d490; + run_2d000(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x2d910; + continue; + case 0x2da74: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2da98; + pc=0x29a00; + run_29800(); return; + case 0x2da98: + pc=0x2ced0; + run_2c800(); return; + case 0x2daa0: + if(r5 != r0) { + pc=0x2dab4; + continue; + } + r16 = 6 << 16; + pc=0x2d630; + run_2d000(); return; + case 0x2dab4: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2dac4; + pc=0x21400; + run_21000(); return; + case 0x2dac4: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2d5f8; + run_2d000(); return; + case 0x2dad4: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2d630; + run_2d000(); return; + case 0x2dae4: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2d5f8; + run_2d000(); return; + case 0x2daf8: + r31=0x2db00; + pc=0x23000; + run_23000(); return; + case 0x2db00: + pc=0x2d204; + run_2d000(); return; + case 0x2db08: + r31=0x2db10; + pc=0x23000; + run_23000(); return; + case 0x2db10: + pc=0x2d300; + run_2d000(); return; + case 0x2db18: + if(r19 == r0) { + pc=0x2d7ac; + run_2d000(); return; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x2d490; + run_2d000(); return; + } + pc=0x2d708; + run_2d000(); return; + case 0x2db34: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2db48; + pc=0x1fc00; + run_1f800(); return; + case 0x2db48: + pc=0x2ced0; + run_2c800(); return; + case 0x2dc00: + r2 = r0 + 3; + if(r4 == r2) { + pc=0x2dc18; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2dc18: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2dc4c; + pc=0x1cc00; + run_1c800(); return; + case 0x2dc4c: + r4 = 6 << 16; + r4 = r4 + 20376; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2dc64; + pc=0x42400; + run_42000(); return; + case 0x2dc64: + if(r2 == r0) { + pc=0x2dcb8; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2e1e4; + run_2e000(); return; + } + r2 = r16 + r0; + case 0x2dc88: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2e210; + run_2e000(); return; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8248; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2dcb8: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x2dcc8; + pc=0x2a200; + run_2a000(); return; + case 0x2dcc8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2dcec: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2dcfc; + pc=0x1a800; + run_1a800(); return; + case 0x2dcfc: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2dd1c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2dd1c; + pc=0x21200; + run_21000(); return; + case 0x2dd1c: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2dd30; + pc=0x56fe0; + run_56800(); return; + case 0x2dd30: + r4 = r29 + 120; + r31=0x2dd3c; + pc=0x42e00; + run_42800(); return; + case 0x2dd3c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2dd4c; + return; + case 0x2dd4c: + r4= page[(r29+128)>>>2]; + r31=0x2dd58; + pc=0x21c00; + run_21800(); return; + case 0x2dd58: + r31=0x2dd60; + pc=0x24000; + run_24000(); return; + case 0x2dd60: + r2 = r0 + 1; + case 0x2dd64: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2dd88: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2e650; + run_2e000(); return; + } + case 0x2dd98: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2e638; + run_2e000(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2ddac: + r4 = r29 + 120; + r31=0x2ddb8; + pc=0x29400; + run_29000(); return; + case 0x2ddb8: + r4 = r29 + 120; + r31=0x2ddc4; + pc=0x42c00; + run_42800(); return; + case 0x2ddc4: + r31=0x2ddcc; + pc=0x27c00; + run_27800(); return; + case 0x2ddcc: + if(r2 == r0) { + pc=0x2df00; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x2e6f0; + run_2e000(); return; + } + case 0x2dde4: + r4 = r29 + 16; + r31=0x2ddf0; + pc=0x29400; + run_29000(); return; + case 0x2ddf0: + r4 = r29 + 16; + r31=0x2ddfc; + pc=0x42c00; + run_42800(); return; + case 0x2ddfc: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2de0c; + return; + case 0x2de0c: + r4= page[(r29+24)>>>2]; + r31=0x2de18; + pc=0x21c00; + run_21800(); return; + case 0x2de18: + r4= page[(r29+128)>>>2]; + r31=0x2de24; + pc=0x21c00; + run_21800(); return; + case 0x2de24: + if(r16 == r0) { + pc=0x2dd58; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2de40; + pc=0x1fc00; + run_1f800(); return; + case 0x2de40: + r31=0x2de48; + pc=0x24000; + run_24000(); return; + case 0x2de48: + pc=0x2dd60; + continue; + case 0x2de50: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2de60; + return; + case 0x2de60: + r4 = r0 + 3; + r31=0x2de6c; + pc=0x29600; + run_29000(); return; + case 0x2de6c: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2de78: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2de88; + return; + case 0x2de88: + r4 = r0 + 2; + r31=0x2de94; + pc=0x29600; + run_29000(); return; + case 0x2de94: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2dea0: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2deb0; + pc=0x1a800; + run_1a800(); return; + case 0x2deb0: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2ded0; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2ded0; + pc=0x21200; + run_21000(); return; + case 0x2ded0: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2dee4; + pc=0x56fe0; + run_56800(); return; + case 0x2dee4: + r4 = r29 + 120; + r31=0x2def0; + pc=0x42e00; + run_42800(); return; + case 0x2def0: + r31=0x2def8; + pc=0x27c00; + run_27800(); return; + case 0x2def8: + if(r2 != r0) { + pc=0x2e230; + run_2e000(); return; + } + case 0x2df00: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2df14; + pc=0x1fc00; + run_1f800(); return; + case 0x2df14: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2df20: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2df30; + return; + case 0x2df30: + r4 = r0 + 2; + r31=0x2df3c; + pc=0x29800; + run_29800(); return; + case 0x2df3c: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2df48: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2e268; + run_2e000(); return; + } + case 0x2df54: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2df64; + return; + case 0x2df64: + r31=0x2df6c; + pc=0x24000; + run_24000(); return; + case 0x2df6c: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2df78: + r4 = r17 + r0; + r31=0x2df84; + pc=0x29e00; + run_29800(); return; + case 0x2df84: + r2 = r0 + 1; + pc=0x2dd64; + continue; + case 0x2df90: + r31=0x2df98; + pc=0x27e00; + run_27800(); return; + case 0x2df98: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2e664; + run_2e000(); return; + } + case 0x2dfac: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2e390; + run_2e000(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2e314; + run_2e000(); return; + } + if(r3 == r0) { + pc=0x2e2d4; + run_2e000(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2dfe0; + pc=0x1a800; + run_1a800(); return; + case 0x2dfe0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2dff4; + pc=0x56fe0; + run_56800(); return; + case 0x2dff4: + r4 = r18 + r0; + r31=0x2e000; + pc=0x42e00; + run_42800(); return; + case 0x2e000: + pc=0x2e000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2e000() throws ExecutionException { /* 0x2e000 - 0x2e800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2e000: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2e7ac; + continue; + } + case 0x2e018: + r31=0x2e020; + pc=0x29200; + run_29000(); return; + case 0x2e020: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2e028: + r31=0x2e030; + pc=0x24000; + run_24000(); return; + case 0x2e030: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2e3d4; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2e2a0; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2e610; + continue; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2e2b4; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2e06c: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2e084; + pc=0x29a00; + run_29800(); return; + case 0x2e084: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e090: + r31=0x2e098; + pc=0x27e00; + run_27800(); return; + case 0x2e098: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2e624; + continue; + } + case 0x2e0ac: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2e4f4; + continue; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x2e578; + continue; + } + if(r2 == r0) { + pc=0x2e4e4; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2e0e0; + pc=0x1a800; + run_1a800(); return; + case 0x2e0e0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2e0f4; + pc=0x56fe0; + run_56800(); return; + case 0x2e0f4: + r4 = r18 + r0; + r31=0x2e100; + pc=0x42e00; + run_42800(); return; + case 0x2e100: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2e83c; + run_2e800(); return; + } + case 0x2e118: + r31=0x2e120; + pc=0x29200; + run_29000(); return; + case 0x2e120: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2e128: + r31=0x2e130; + pc=0x24000; + run_24000(); return; + case 0x2e130: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x2e828; + run_2e800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2e678; + continue; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x2e878; + run_2e800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2e888; + run_2e800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x2e740; + continue; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x2e704; + continue; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2e2b4; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2e18c: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2e1a4; + pc=0x29a00; + run_29800(); return; + case 0x2e1a4: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e1b0: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2e1c8; + pc=0x50c00; + run_50800(); return; + case 0x2e1c8: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2e1d8; + pc=0x1fc00; + run_1f800(); return; + case 0x2e1d8: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e1e4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2e1f4; + return; + case 0x2e1f4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2e204; + return; + case 0x2e204: + r2= page[(r29+148)>>>2]; + pc=0x2dc88; + run_2d800(); return; + case 0x2e210: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2e224; + pc=0x21400; + run_21000(); return; + case 0x2e224: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e230: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2e240; + return; + case 0x2e240: + r2= page[(r28+-31264)>>>2]; + r4= page[(r29+128)>>>2]; + pc=r2; + r31=0x2e250; + return; + case 0x2e250: + r4 = r0 + 3; + r31=0x2e25c; + pc=0x29800; + run_29800(); return; + case 0x2e25c: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e268: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2df54; + run_2d800(); return; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2e298; + pc=0x21200; + run_21000(); return; + case 0x2e298: + pc=0x2df54; + run_2d800(); return; + case 0x2e2a0: + if(r20 == r0) { + pc=0x2e37c; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2e2dc; + continue; + } + case 0x2e2b4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2e2c8; + pc=0x1fc00; + run_1f800(); return; + case 0x2e2c8: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e2d4: + r31=0x2e2dc; + pc=0x24000; + run_24000(); return; + case 0x2e2dc: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2e2b4; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2e308; + return; + case 0x2e308: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e314: + r31=0x2e31c; + pc=0x23000; + run_23000(); return; + case 0x2e31c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2e330; + pc=0x1a800; + run_1a800(); return; + case 0x2e330: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2e344; + pc=0x56fe0; + run_56800(); return; + case 0x2e344: + r4 = r18 + r0; + r31=0x2e350; + pc=0x42e00; + run_42800(); return; + case 0x2e350: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2e7e8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2e374; + pc=0x1fc00; + run_1f800(); return; + case 0x2e374: + r31=0x2e37c; + pc=0x24000; + run_24000(); return; + case 0x2e37c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2e06c; + continue; + case 0x2e390: + r31=0x2e398; + pc=0x23000; + run_23000(); return; + case 0x2e398: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2e3ac; + pc=0x1a800; + run_1a800(); return; + case 0x2e3ac: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2e3c0; + pc=0x56fe0; + run_56800(); return; + case 0x2e3c0: + r4 = r18 + r0; + r31=0x2e3cc; + pc=0x42c00; + run_42800(); return; + case 0x2e3cc: + r31=0x2e3d4; + pc=0x24000; + run_24000(); return; + case 0x2e3d4: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2e914; + run_2e800(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2e8e0; + run_2e800(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2e924; + run_2e800(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2e8f4; + run_2e800(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2e424: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2e45c; + continue; + } + if(r19 != r0) { + pc=0x2e454; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2e454: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2e45c: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2e470; + pc=0x29a00; + run_29800(); return; + case 0x2e470: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2dd60; + run_2d800(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2dd60; + run_2d800(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2dd60; + run_2d800(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x2e974; + run_2e800(); return; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2dd60; + run_2d800(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x2e4d8; + pc=0x1fc00; + run_1f800(); return; + case 0x2e4d8: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e4e4: + r31=0x2e4ec; + pc=0x24000; + run_24000(); return; + case 0x2e4ec: + pc=0x2e2b4; + continue; + case 0x2e4f4: + r31=0x2e4fc; + pc=0x23000; + run_23000(); return; + case 0x2e4fc: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2e510; + pc=0x1a800; + run_1a800(); return; + case 0x2e510: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2e524; + pc=0x56fe0; + run_56800(); return; + case 0x2e524: + r4 = r18 + r0; + r31=0x2e530; + pc=0x42c00; + run_42800(); return; + case 0x2e530: + r31=0x2e538; + pc=0x24000; + run_24000(); return; + case 0x2e538: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x2e558; + pc=0x28e00; + run_28800(); return; + case 0x2e558: + r4= page[(r29+144)>>>2]; + r6 = r2 + r0; + r5 = r18 + r0; + r31=0x2e56c; + pc=0x29a00; + run_29800(); return; + case 0x2e56c: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e578: + r31=0x2e580; + pc=0x23000; + run_23000(); return; + case 0x2e580: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2e594; + pc=0x1a800; + run_1a800(); return; + case 0x2e594: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2e5a8; + pc=0x56fe0; + run_56800(); return; + case 0x2e5a8: + r4 = r18 + r0; + r31=0x2e5b4; + pc=0x42e00; + run_42800(); return; + case 0x2e5b4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2e808; + run_2e800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2e5d8; + pc=0x1fc00; + run_1f800(); return; + case 0x2e5d8: + r31=0x2e5e0; + pc=0x24000; + run_24000(); return; + case 0x2e5e0: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x2e5ec: + r2 = r17 + r2; + r6= page[(r2+0)>>>2]; + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r31=0x2e604; + pc=0x29a00; + run_29800(); return; + case 0x2e604: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e610: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2e06c; + continue; + case 0x2e624: + r31=0x2e62c; + pc=0x23000; + run_23000(); return; + case 0x2e62c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2e0ac; + continue; + case 0x2e638: + r31=0x2e640; + pc=0x23000; + run_23000(); return; + case 0x2e640: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2ddac; + run_2d800(); return; + case 0x2e650: + r31=0x2e658; + pc=0x23000; + run_23000(); return; + case 0x2e658: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2dd98; + run_2d800(); return; + case 0x2e664: + r31=0x2e66c; + pc=0x23000; + run_23000(); return; + case 0x2e66c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2dfac; + run_2d800(); return; + case 0x2e678: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2e79c; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2e958; + run_2e800(); return; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x2e78c; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x2e77c; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2e2b4; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2e6d0; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2e18c; + continue; + case 0x2e6d0: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2e6e0; + return; + case 0x2e6e0: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2e18c; + continue; + case 0x2e6f0: + r31=0x2e6f8; + pc=0x23000; + run_23000(); return; + case 0x2e6f8: + r16 = r18 + r0; + pc=0x2dde4; + run_2d800(); return; + case 0x2e704: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2e720; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2e18c; + continue; + case 0x2e720: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2e730; + return; + case 0x2e730: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2e18c; + continue; + case 0x2e740: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x2e748: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2e760; + pc=0x29a00; + run_29800(); return; + case 0x2e760: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x2e770; + pc=0x29000; + run_29000(); return; + case 0x2e770: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e77c: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2e18c; + continue; + case 0x2e78c: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2e18c; + continue; + case 0x2e79c: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x2e748; + continue; + case 0x2e7ac: + r31=0x2e7b4; + pc=0x29200; + run_29000(); return; + case 0x2e7b4: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2e938; + run_2e800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2e7e0; + pc=0x1fc00; + run_1f800(); return; + case 0x2e7e0: + pc=0x2e018; + continue; + case 0x2e7e8: + r31=0x2e7f0; + pc=0x23000; + run_23000(); return; + case 0x2e7f0: + r31=0x2e7f8; + pc=0x29200; + run_29000(); return; + case 0x2e7f8: + r2 = r2 << 7; + r20 = r2 | 8; + case 0x2e800: + pc=0x2e800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2e800() throws ExecutionException { /* 0x2e800 - 0x2f000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2e800: + pc=0x2e028; + run_2e000(); return; + case 0x2e808: + r31=0x2e810; + pc=0x23000; + run_23000(); return; + case 0x2e810: + r31=0x2e818; + pc=0x29200; + run_29000(); return; + case 0x2e818: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2e128; + run_2e000(); return; + case 0x2e828: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2e5ec; + run_2e000(); return; + case 0x2e83c: + r31=0x2e844; + pc=0x29200; + run_29000(); return; + case 0x2e844: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2e948; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2e870; + pc=0x1fc00; + run_1f800(); return; + case 0x2e870: + pc=0x2e118; + run_2e000(); return; + case 0x2e878: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2e18c; + run_2e000(); return; + case 0x2e888: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x2e8b0; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2e2b4; + run_2e000(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x2e748; + run_2e000(); return; + case 0x2e8b0: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r31=0x2e8d4; + pc=0x29a00; + run_29800(); return; + case 0x2e8d4: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2e8e0: + if(r5 != r0) { + pc=0x2e8f4; + continue; + } + r16 = 6 << 16; + pc=0x2e45c; + run_2e000(); return; + case 0x2e8f4: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2e904; + pc=0x21400; + run_21000(); return; + case 0x2e904: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2e424; + run_2e000(); return; + case 0x2e914: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2e45c; + run_2e000(); return; + case 0x2e924: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2e424; + run_2e000(); return; + case 0x2e938: + r31=0x2e940; + pc=0x23000; + run_23000(); return; + case 0x2e940: + pc=0x2e018; + run_2e000(); return; + case 0x2e948: + r31=0x2e950; + pc=0x23000; + run_23000(); return; + case 0x2e950: + pc=0x2e118; + run_2e000(); return; + case 0x2e958: + if(r19 == r0) { + pc=0x2e5e0; + run_2e000(); return; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x2e2b4; + run_2e000(); return; + } + pc=0x2e538; + run_2e000(); return; + case 0x2e974: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2e988; + pc=0x1fc00; + run_1f800(); return; + case 0x2e988: + r2 = r0 + 1; + pc=0x2dd64; + run_2d800(); return; + case 0x2ea00: + r4 = r4 + -3; + r4 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x2ea1c; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2ea1c: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2ea50; + pc=0x1cc00; + run_1c800(); return; + case 0x2ea50: + r4 = 6 << 16; + r4 = r4 + 20376; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2ea68; + pc=0x42400; + run_42000(); return; + case 0x2ea68: + if(r2 == r0) { + pc=0x2eabc; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2efc8; + continue; + } + r2 = r16 + r0; + case 0x2ea8c: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2eff4; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8292; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2eabc: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x2eacc; + pc=0x2a200; + run_2a000(); return; + case 0x2eacc: + if(r2 == r0) { + pc=0x2eafc; + continue; + } + case 0x2ead4: + r2 = r0 + 1; + case 0x2ead8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2eafc: + r4 = 6 << 16; + r4 = r4 + 19716; + r31=0x2eb0c; + pc=0x2a200; + run_2a000(); return; + case 0x2eb0c: + pc=0x2ead8; + continue; + case 0x2eb14: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2eb24; + pc=0x1a800; + run_1a800(); return; + case 0x2eb24: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2eb44; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2eb44; + pc=0x21200; + run_21000(); return; + case 0x2eb44: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2eb58; + pc=0x56fe0; + run_56800(); return; + case 0x2eb58: + r4 = r29 + 120; + r31=0x2eb64; + pc=0x42e00; + run_42800(); return; + case 0x2eb64: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2eb74; + return; + case 0x2eb74: + r4= page[(r29+128)>>>2]; + r31=0x2eb80; + pc=0x21c00; + run_21800(); return; + case 0x2eb80: + r31=0x2eb88; + pc=0x24000; + run_24000(); return; + case 0x2eb88: + pc=0x2ead4; + continue; + case 0x2eb90: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2f41c; + run_2f000(); return; + } + case 0x2eba0: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2f404; + run_2f000(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2ebb4: + r4 = r29 + 120; + r31=0x2ebc0; + pc=0x29400; + run_29000(); return; + case 0x2ebc0: + r4 = r29 + 120; + r31=0x2ebcc; + pc=0x42c00; + run_42800(); return; + case 0x2ebcc: + r31=0x2ebd4; + pc=0x27c00; + run_27800(); return; + case 0x2ebd4: + if(r2 == r0) { + pc=0x2ed00; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x2f4bc; + run_2f000(); return; + } + case 0x2ebec: + r4 = r29 + 16; + r31=0x2ebf8; + pc=0x29400; + run_29000(); return; + case 0x2ebf8: + r4 = r29 + 16; + r31=0x2ec04; + pc=0x42c00; + run_42800(); return; + case 0x2ec04: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2ec14; + return; + case 0x2ec14: + r4= page[(r29+24)>>>2]; + r31=0x2ec20; + pc=0x21c00; + run_21800(); return; + case 0x2ec20: + r4= page[(r29+128)>>>2]; + r31=0x2ec2c; + pc=0x21c00; + run_21800(); return; + case 0x2ec2c: + if(r16 == r0) { + pc=0x2eb80; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ec48; + pc=0x1fc00; + run_1f800(); return; + case 0x2ec48: + r31=0x2ec50; + pc=0x24000; + run_24000(); return; + case 0x2ec50: + pc=0x2ead4; + continue; + case 0x2ec58: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2ec68; + return; + case 0x2ec68: + r4 = r0 + 3; + r31=0x2ec74; + pc=0x29600; + run_29000(); return; + case 0x2ec74: + pc=0x2ead4; + continue; + case 0x2ec7c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2ec8c; + return; + case 0x2ec8c: + r4 = r0 + 2; + r31=0x2ec98; + pc=0x29600; + run_29000(); return; + case 0x2ec98: + pc=0x2ead4; + continue; + case 0x2eca0: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2ecb0; + pc=0x1a800; + run_1a800(); return; + case 0x2ecb0: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2ecd0; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2ecd0; + pc=0x21200; + run_21000(); return; + case 0x2ecd0: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2ece4; + pc=0x56fe0; + run_56800(); return; + case 0x2ece4: + r4 = r29 + 120; + r31=0x2ecf0; + pc=0x42e00; + run_42800(); return; + case 0x2ecf0: + r31=0x2ecf8; + pc=0x27c00; + run_27800(); return; + case 0x2ecf8: + if(r2 != r0) { + pc=0x2f010; + run_2f000(); return; + } + case 0x2ed00: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ed14; + pc=0x1fc00; + run_1f800(); return; + case 0x2ed14: + pc=0x2ead4; + continue; + case 0x2ed1c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2ed2c; + return; + case 0x2ed2c: + r4 = r0 + 2; + r31=0x2ed38; + pc=0x29800; + run_29800(); return; + case 0x2ed38: + pc=0x2ead4; + continue; + case 0x2ed40: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2f048; + run_2f000(); return; + } + case 0x2ed4c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2ed5c; + return; + case 0x2ed5c: + r31=0x2ed64; + pc=0x24000; + run_24000(); return; + case 0x2ed64: + pc=0x2ead4; + continue; + case 0x2ed6c: + r4 = r17 + r0; + r31=0x2ed78; + pc=0x29e00; + run_29800(); return; + case 0x2ed78: + pc=0x2ead4; + continue; + case 0x2ed80: + r31=0x2ed88; + pc=0x27e00; + run_27800(); return; + case 0x2ed88: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x2f430; + run_2f000(); return; + } + case 0x2ed9c: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2f168; + run_2f000(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2f0ec; + run_2f000(); return; + } + if(r3 == r0) { + pc=0x2f0b0; + run_2f000(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2edd0; + pc=0x1a800; + run_1a800(); return; + case 0x2edd0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2ede4; + pc=0x56fe0; + run_56800(); return; + case 0x2ede4: + r4 = r18 + r0; + r31=0x2edf0; + pc=0x42e00; + run_42800(); return; + case 0x2edf0: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x2f574; + run_2f000(); return; + } + case 0x2ee08: + r31=0x2ee10; + pc=0x29200; + run_29000(); return; + case 0x2ee10: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2ee18: + r31=0x2ee20; + pc=0x24000; + run_24000(); return; + case 0x2ee20: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2f1ac; + run_2f000(); return; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2f080; + run_2f000(); return; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x2f3dc; + run_2f000(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2f094; + run_2f000(); return; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2ee5c: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2ee74; + pc=0x29a00; + run_29800(); return; + case 0x2ee74: + pc=0x2ead4; + continue; + case 0x2ee7c: + r31=0x2ee84; + pc=0x27e00; + run_27800(); return; + case 0x2ee84: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x2f3f0; + run_2f000(); return; + } + case 0x2ee98: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x2f2c8; + run_2f000(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x2f348; + run_2f000(); return; + } + if(r2 == r0) { + pc=0x2f2b8; + run_2f000(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2eecc; + pc=0x1a800; + run_1a800(); return; + case 0x2eecc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2eee0; + pc=0x56fe0; + run_56800(); return; + case 0x2eee0: + r4 = r18 + r0; + r31=0x2eeec; + pc=0x42e00; + run_42800(); return; + case 0x2eeec: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x2f604; + run_2f000(); return; + } + case 0x2ef04: + r31=0x2ef0c; + pc=0x29200; + run_29000(); return; + case 0x2ef0c: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2ef14: + r31=0x2ef1c; + pc=0x24000; + run_24000(); return; + case 0x2ef1c: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x2f5f0; + run_2f000(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2f444; + run_2f000(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x2f640; + run_2f000(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2f650; + run_2f000(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x2f50c; + run_2f000(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x2f4d0; + run_2f000(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2f094; + run_2f000(); return; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2ef78: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2ef90; + pc=0x29a00; + run_29800(); return; + case 0x2ef90: + pc=0x2ead4; + continue; + case 0x2ef98: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2efb0; + pc=0x50c00; + run_50800(); return; + case 0x2efb0: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2efc0; + pc=0x1fc00; + run_1f800(); return; + case 0x2efc0: + pc=0x2ead4; + continue; + case 0x2efc8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2efd8; + return; + case 0x2efd8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2efe8; + return; + case 0x2efe8: + r2= page[(r29+148)>>>2]; + pc=0x2ea8c; + continue; + case 0x2eff4: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + case 0x2f000: + pc=0x2f000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2f000() throws ExecutionException { /* 0x2f000 - 0x2f800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2f000: + r31=0x2f008; + pc=0x21400; + run_21000(); return; + case 0x2f008: + pc=0x2ead4; + run_2e800(); return; + case 0x2f010: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2f020; + return; + case 0x2f020: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2f034; + return; + case 0x2f034: + r4 = r0 + 3; + r31=0x2f040; + pc=0x29800; + run_29800(); return; + case 0x2f040: + pc=0x2ead4; + run_2e800(); return; + case 0x2f048: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2ed4c; + run_2e800(); return; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2f078; + pc=0x21200; + run_21000(); return; + case 0x2f078: + pc=0x2ed4c; + run_2e800(); return; + case 0x2f080: + if(r20 == r0) { + pc=0x2f154; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2f0b8; + continue; + } + case 0x2f094: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2f0a8; + pc=0x1fc00; + run_1f800(); return; + case 0x2f0a8: + pc=0x2ead4; + run_2e800(); return; + case 0x2f0b0: + r31=0x2f0b8; + pc=0x24000; + run_24000(); return; + case 0x2f0b8: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2f094; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2f0e4; + return; + case 0x2f0e4: + pc=0x2ead4; + run_2e800(); return; + case 0x2f0ec: + r31=0x2f0f4; + pc=0x23000; + run_23000(); return; + case 0x2f0f4: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2f108; + pc=0x1a800; + run_1a800(); return; + case 0x2f108: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2f11c; + pc=0x56fe0; + run_56800(); return; + case 0x2f11c: + r4 = r18 + r0; + r31=0x2f128; + pc=0x42e00; + run_42800(); return; + case 0x2f128: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2f5b0; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2f14c; + pc=0x1fc00; + run_1f800(); return; + case 0x2f14c: + r31=0x2f154; + pc=0x24000; + run_24000(); return; + case 0x2f154: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2ee5c; + run_2e800(); return; + case 0x2f168: + r31=0x2f170; + pc=0x23000; + run_23000(); return; + case 0x2f170: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2f184; + pc=0x1a800; + run_1a800(); return; + case 0x2f184: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2f198; + pc=0x56fe0; + run_56800(); return; + case 0x2f198: + r4 = r18 + r0; + r31=0x2f1a4; + pc=0x42c00; + run_42800(); return; + case 0x2f1a4: + r31=0x2f1ac; + pc=0x24000; + run_24000(); return; + case 0x2f1ac: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x2f6d8; + continue; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2f6a4; + continue; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x2f6e8; + continue; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x2f6b8; + continue; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x2f1fc: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x2f234; + continue; + } + if(r19 != r0) { + pc=0x2f22c; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x2f22c: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x2f234: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x2f248; + pc=0x29a00; + run_29800(); return; + case 0x2f248: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2ead4; + run_2e800(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2ead4; + run_2e800(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2ead4; + run_2e800(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x2f71c; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2ead4; + run_2e800(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x2f2b0; + pc=0x1fc00; + run_1f800(); return; + case 0x2f2b0: + pc=0x2ead4; + run_2e800(); return; + case 0x2f2b8: + r31=0x2f2c0; + pc=0x24000; + run_24000(); return; + case 0x2f2c0: + pc=0x2f094; + continue; + case 0x2f2c8: + r31=0x2f2d0; + pc=0x23000; + run_23000(); return; + case 0x2f2d0: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2f2e4; + pc=0x1a800; + run_1a800(); return; + case 0x2f2e4: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2f2f8; + pc=0x56fe0; + run_56800(); return; + case 0x2f2f8: + r4 = r18 + r0; + r31=0x2f304; + pc=0x42c00; + run_42800(); return; + case 0x2f304: + r31=0x2f30c; + pc=0x24000; + run_24000(); return; + case 0x2f30c: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x2f32c; + pc=0x28e00; + run_28800(); return; + case 0x2f32c: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x2f340; + pc=0x29a00; + run_29800(); return; + case 0x2f340: + pc=0x2ead4; + run_2e800(); return; + case 0x2f348: + r31=0x2f350; + pc=0x23000; + run_23000(); return; + case 0x2f350: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2f364; + pc=0x1a800; + run_1a800(); return; + case 0x2f364: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2f378; + pc=0x56fe0; + run_56800(); return; + case 0x2f378: + r4 = r18 + r0; + r31=0x2f384; + pc=0x42e00; + run_42800(); return; + case 0x2f384: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x2f5d0; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2f3a8; + pc=0x1fc00; + run_1f800(); return; + case 0x2f3a8: + r31=0x2f3b0; + pc=0x24000; + run_24000(); return; + case 0x2f3b0: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x2f3bc: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x2f3d4; + pc=0x29a00; + run_29800(); return; + case 0x2f3d4: + pc=0x2ead4; + run_2e800(); return; + case 0x2f3dc: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2ee5c; + run_2e800(); return; + case 0x2f3f0: + r31=0x2f3f8; + pc=0x23000; + run_23000(); return; + case 0x2f3f8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2ee98; + run_2e800(); return; + case 0x2f404: + r31=0x2f40c; + pc=0x23000; + run_23000(); return; + case 0x2f40c: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2ebb4; + run_2e800(); return; + case 0x2f41c: + r31=0x2f424; + pc=0x23000; + run_23000(); return; + case 0x2f424: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2eba0; + run_2e800(); return; + case 0x2f430: + r31=0x2f438; + pc=0x23000; + run_23000(); return; + case 0x2f438: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2ed9c; + run_2e800(); return; + case 0x2f444: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x2f564; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2f738; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x2f554; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x2f544; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2f094; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2f49c; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2ef78; + run_2e800(); return; + case 0x2f49c: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2f4ac; + return; + case 0x2f4ac: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2ef78; + run_2e800(); return; + case 0x2f4bc: + r31=0x2f4c4; + pc=0x23000; + run_23000(); return; + case 0x2f4c4: + r16 = r18 + r0; + pc=0x2ebec; + run_2e800(); return; + case 0x2f4d0: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x2f4ec; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2ef78; + run_2e800(); return; + case 0x2f4ec: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x2f4fc; + return; + case 0x2f4fc: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2ef78; + run_2e800(); return; + case 0x2f50c: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x2f514: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2f52c; + pc=0x29a00; + run_29800(); return; + case 0x2f52c: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x2f53c; + pc=0x29000; + run_29000(); return; + case 0x2f53c: + pc=0x2ead4; + run_2e800(); return; + case 0x2f544: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2ef78; + run_2e800(); return; + case 0x2f554: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2ef78; + run_2e800(); return; + case 0x2f564: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x2f514; + continue; + case 0x2f574: + r31=0x2f57c; + pc=0x29200; + run_29000(); return; + case 0x2f57c: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2f6fc; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2f5a8; + pc=0x1fc00; + run_1f800(); return; + case 0x2f5a8: + pc=0x2ee08; + run_2e800(); return; + case 0x2f5b0: + r31=0x2f5b8; + pc=0x23000; + run_23000(); return; + case 0x2f5b8: + r31=0x2f5c0; + pc=0x29200; + run_29000(); return; + case 0x2f5c0: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2ee18; + run_2e800(); return; + case 0x2f5d0: + r31=0x2f5d8; + pc=0x23000; + run_23000(); return; + case 0x2f5d8: + r31=0x2f5e0; + pc=0x29200; + run_29000(); return; + case 0x2f5e0: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2ef14; + run_2e800(); return; + case 0x2f5f0: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x2f3bc; + continue; + case 0x2f604: + r31=0x2f60c; + pc=0x29200; + run_29000(); return; + case 0x2f60c: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x2f70c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2f638; + pc=0x1fc00; + run_1f800(); return; + case 0x2f638: + pc=0x2ef04; + run_2e800(); return; + case 0x2f640: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2ef78; + run_2e800(); return; + case 0x2f650: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x2f678; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2f094; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x2f514; + continue; + case 0x2f678: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2f69c; + pc=0x29a00; + run_29800(); return; + case 0x2f69c: + pc=0x2ead4; + run_2e800(); return; + case 0x2f6a4: + if(r5 != r0) { + pc=0x2f6b8; + continue; + } + r16 = 6 << 16; + pc=0x2f234; + continue; + case 0x2f6b8: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x2f6c8; + pc=0x21400; + run_21000(); return; + case 0x2f6c8: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x2f1fc; + continue; + case 0x2f6d8: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x2f234; + continue; + case 0x2f6e8: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x2f1fc; + continue; + case 0x2f6fc: + r31=0x2f704; + pc=0x23000; + run_23000(); return; + case 0x2f704: + pc=0x2ee08; + run_2e800(); return; + case 0x2f70c: + r31=0x2f714; + pc=0x23000; + run_23000(); return; + case 0x2f714: + pc=0x2ef04; + run_2e800(); return; + case 0x2f71c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x2f730; + pc=0x1fc00; + run_1f800(); return; + case 0x2f730: + pc=0x2ead4; + run_2e800(); return; + case 0x2f738: + if(r19 == r0) { + pc=0x2f3b0; + continue; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x2f094; + continue; + } + pc=0x2f30c; + continue; + case 0x2f800: + pc=0x2f800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_2f800() throws ExecutionException { /* 0x2f800 - 0x30000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x2f800: + r4 = r4 + -3; + r4 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x2f81c; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x2f81c: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x2f850; + pc=0x1cc00; + run_1c800(); return; + case 0x2f850: + r4 = 6 << 16; + r4 = r4 + 20376; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x2f868; + pc=0x42400; + run_42000(); return; + case 0x2f868: + if(r2 == r0) { + pc=0x2f8bc; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x2fde0; + continue; + } + r2 = r16 + r0; + case 0x2f88c: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x2fe0c; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8336; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x2f8bc: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x2f8cc; + pc=0x2a200; + run_2a000(); return; + case 0x2f8cc: + if(r2 == r0) { + pc=0x2f8fc; + continue; + } + case 0x2f8d4: + r2 = r0 + 1; + case 0x2f8d8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x2f8fc: + r4 = 6 << 16; + r4 = r4 + 19716; + r31=0x2f90c; + pc=0x2a200; + run_2a000(); return; + case 0x2f90c: + if(r2 != r0) { + pc=0x2f8d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 19656; + r31=0x2f924; + pc=0x2a200; + run_2a000(); return; + case 0x2f924: + pc=0x2f8d8; + continue; + case 0x2f92c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2f93c; + pc=0x1a800; + run_1a800(); return; + case 0x2f93c: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2f95c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2f95c; + pc=0x21200; + run_21000(); return; + case 0x2f95c: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x2f970; + pc=0x56fe0; + run_56800(); return; + case 0x2f970: + r4 = r29 + 120; + r31=0x2f97c; + pc=0x42e00; + run_42800(); return; + case 0x2f97c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2f98c; + return; + case 0x2f98c: + r4= page[(r29+128)>>>2]; + r31=0x2f998; + pc=0x21c00; + run_21800(); return; + case 0x2f998: + r31=0x2f9a0; + pc=0x24000; + run_24000(); return; + case 0x2f9a0: + pc=0x2f8d4; + continue; + case 0x2f9a8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x30234; + run_30000(); return; + } + case 0x2f9b8: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x3021c; + run_30000(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x2f9cc: + r4 = r29 + 120; + r31=0x2f9d8; + pc=0x29400; + run_29000(); return; + case 0x2f9d8: + r4 = r29 + 120; + r31=0x2f9e4; + pc=0x42c00; + run_42800(); return; + case 0x2f9e4: + r31=0x2f9ec; + pc=0x27c00; + run_27800(); return; + case 0x2f9ec: + if(r2 == r0) { + pc=0x2fb18; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x302d4; + run_30000(); return; + } + case 0x2fa04: + r4 = r29 + 16; + r31=0x2fa10; + pc=0x29400; + run_29000(); return; + case 0x2fa10: + r4 = r29 + 16; + r31=0x2fa1c; + pc=0x42c00; + run_42800(); return; + case 0x2fa1c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2fa2c; + return; + case 0x2fa2c: + r4= page[(r29+24)>>>2]; + r31=0x2fa38; + pc=0x21c00; + run_21800(); return; + case 0x2fa38: + r4= page[(r29+128)>>>2]; + r31=0x2fa44; + pc=0x21c00; + run_21800(); return; + case 0x2fa44: + if(r16 == r0) { + pc=0x2f998; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2fa60; + pc=0x1fc00; + run_1f800(); return; + case 0x2fa60: + r31=0x2fa68; + pc=0x24000; + run_24000(); return; + case 0x2fa68: + pc=0x2f8d4; + continue; + case 0x2fa70: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2fa80; + return; + case 0x2fa80: + r4 = r0 + 3; + r31=0x2fa8c; + pc=0x29600; + run_29000(); return; + case 0x2fa8c: + pc=0x2f8d4; + continue; + case 0x2fa94: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2faa4; + return; + case 0x2faa4: + r4 = r0 + 2; + r31=0x2fab0; + pc=0x29600; + run_29000(); return; + case 0x2fab0: + pc=0x2f8d4; + continue; + case 0x2fab8: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2fac8; + pc=0x1a800; + run_1a800(); return; + case 0x2fac8: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x2fae8; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x2fae8; + pc=0x21200; + run_21000(); return; + case 0x2fae8: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2fafc; + pc=0x56fe0; + run_56800(); return; + case 0x2fafc: + r4 = r29 + 120; + r31=0x2fb08; + pc=0x42e00; + run_42800(); return; + case 0x2fb08: + r31=0x2fb10; + pc=0x27c00; + run_27800(); return; + case 0x2fb10: + if(r2 != r0) { + pc=0x2fe28; + continue; + } + case 0x2fb18: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2fb2c; + pc=0x1fc00; + run_1f800(); return; + case 0x2fb2c: + pc=0x2f8d4; + continue; + case 0x2fb34: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2fb44; + return; + case 0x2fb44: + r4 = r0 + 2; + r31=0x2fb50; + pc=0x29800; + run_29800(); return; + case 0x2fb50: + pc=0x2f8d4; + continue; + case 0x2fb58: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x2fe60; + continue; + } + case 0x2fb64: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2fb74; + return; + case 0x2fb74: + r31=0x2fb7c; + pc=0x24000; + run_24000(); return; + case 0x2fb7c: + pc=0x2f8d4; + continue; + case 0x2fb84: + r4 = r17 + r0; + r31=0x2fb90; + pc=0x29e00; + run_29800(); return; + case 0x2fb90: + pc=0x2f8d4; + continue; + case 0x2fb98: + r31=0x2fba0; + pc=0x27e00; + run_27800(); return; + case 0x2fba0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x30248; + run_30000(); return; + } + case 0x2fbb4: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x2ff80; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x2ff04; + continue; + } + if(r3 == r0) { + pc=0x2fec8; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2fbe8; + pc=0x1a800; + run_1a800(); return; + case 0x2fbe8: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2fbfc; + pc=0x56fe0; + run_56800(); return; + case 0x2fbfc: + r4 = r18 + r0; + r31=0x2fc08; + pc=0x42e00; + run_42800(); return; + case 0x2fc08: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x3038c; + run_30000(); return; + } + case 0x2fc20: + r31=0x2fc28; + pc=0x29200; + run_29000(); return; + case 0x2fc28: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x2fc30: + r31=0x2fc38; + pc=0x24000; + run_24000(); return; + case 0x2fc38: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x2ffc4; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x2fe98; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x301f4; + run_30000(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x2feac; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x2fc74: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x2fc8c; + pc=0x29a00; + run_29800(); return; + case 0x2fc8c: + pc=0x2f8d4; + continue; + case 0x2fc94: + r31=0x2fc9c; + pc=0x27e00; + run_27800(); return; + case 0x2fc9c: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x30208; + run_30000(); return; + } + case 0x2fcb0: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x300e0; + run_30000(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x30160; + run_30000(); return; + } + if(r2 == r0) { + pc=0x300d0; + run_30000(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x2fce4; + pc=0x1a800; + run_1a800(); return; + case 0x2fce4: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2fcf8; + pc=0x56fe0; + run_56800(); return; + case 0x2fcf8: + r4 = r18 + r0; + r31=0x2fd04; + pc=0x42e00; + run_42800(); return; + case 0x2fd04: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x3041c; + run_30000(); return; + } + case 0x2fd1c: + r31=0x2fd24; + pc=0x29200; + run_29000(); return; + case 0x2fd24: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x2fd2c: + r31=0x2fd34; + pc=0x24000; + run_24000(); return; + case 0x2fd34: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x30408; + run_30000(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x3025c; + run_30000(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x30458; + run_30000(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x30468; + run_30000(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x30324; + run_30000(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x302e8; + run_30000(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x2feac; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x2fd90: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x2fda8; + pc=0x29a00; + run_29800(); return; + case 0x2fda8: + pc=0x2f8d4; + continue; + case 0x2fdb0: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x2fdc8; + pc=0x50c00; + run_50800(); return; + case 0x2fdc8: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x2fdd8; + pc=0x1fc00; + run_1f800(); return; + case 0x2fdd8: + pc=0x2f8d4; + continue; + case 0x2fde0: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2fdf0; + return; + case 0x2fdf0: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x2fe00; + return; + case 0x2fe00: + r2= page[(r29+148)>>>2]; + pc=0x2f88c; + continue; + case 0x2fe0c: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x2fe20; + pc=0x21400; + run_21000(); return; + case 0x2fe20: + pc=0x2f8d4; + continue; + case 0x2fe28: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x2fe38; + return; + case 0x2fe38: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2fe4c; + return; + case 0x2fe4c: + r4 = r0 + 3; + r31=0x2fe58; + pc=0x29800; + run_29800(); return; + case 0x2fe58: + pc=0x2f8d4; + continue; + case 0x2fe60: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x2fb64; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x2fe90; + pc=0x21200; + run_21000(); return; + case 0x2fe90: + pc=0x2fb64; + continue; + case 0x2fe98: + if(r20 == r0) { + pc=0x2ff6c; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x2fed0; + continue; + } + case 0x2feac: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x2fec0; + pc=0x1fc00; + run_1f800(); return; + case 0x2fec0: + pc=0x2f8d4; + continue; + case 0x2fec8: + r31=0x2fed0; + pc=0x24000; + run_24000(); return; + case 0x2fed0: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x2feac; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x2fefc; + return; + case 0x2fefc: + pc=0x2f8d4; + continue; + case 0x2ff04: + r31=0x2ff0c; + pc=0x23000; + run_23000(); return; + case 0x2ff0c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2ff20; + pc=0x1a800; + run_1a800(); return; + case 0x2ff20: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2ff34; + pc=0x56fe0; + run_56800(); return; + case 0x2ff34: + r4 = r18 + r0; + r31=0x2ff40; + pc=0x42e00; + run_42800(); return; + case 0x2ff40: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x303c8; + run_30000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x2ff64; + pc=0x1fc00; + run_1f800(); return; + case 0x2ff64: + r31=0x2ff6c; + pc=0x24000; + run_24000(); return; + case 0x2ff6c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x2fc74; + continue; + case 0x2ff80: + r31=0x2ff88; + pc=0x23000; + run_23000(); return; + case 0x2ff88: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x2ff9c; + pc=0x1a800; + run_1a800(); return; + case 0x2ff9c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x2ffb0; + pc=0x56fe0; + run_56800(); return; + case 0x2ffb0: + r4 = r18 + r0; + r31=0x2ffbc; + pc=0x42c00; + run_42800(); return; + case 0x2ffbc: + r31=0x2ffc4; + pc=0x24000; + run_24000(); return; + case 0x2ffc4: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x304f0; + run_30000(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x304bc; + run_30000(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x30500; + run_30000(); return; + } + r2 = r0 + 768; + case 0x30000: + pc=0x30000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_30000() throws ExecutionException { /* 0x30000 - 0x30800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x30000: + if(r5 != r2) { + pc=0x304d0; + continue; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x30014: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x3004c; + continue; + } + if(r19 != r0) { + pc=0x30044; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x30044: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x3004c: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x30060; + pc=0x29a00; + run_29800(); return; + case 0x30060: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x2f8d4; + run_2f800(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x2f8d4; + run_2f800(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x2f8d4; + run_2f800(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x30534; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x2f8d4; + run_2f800(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x300c8; + pc=0x1fc00; + run_1f800(); return; + case 0x300c8: + pc=0x2f8d4; + run_2f800(); return; + case 0x300d0: + r31=0x300d8; + pc=0x24000; + run_24000(); return; + case 0x300d8: + pc=0x2feac; + run_2f800(); return; + case 0x300e0: + r31=0x300e8; + pc=0x23000; + run_23000(); return; + case 0x300e8: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x300fc; + pc=0x1a800; + run_1a800(); return; + case 0x300fc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30110; + pc=0x56fe0; + run_56800(); return; + case 0x30110: + r4 = r18 + r0; + r31=0x3011c; + pc=0x42c00; + run_42800(); return; + case 0x3011c: + r31=0x30124; + pc=0x24000; + run_24000(); return; + case 0x30124: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x30144; + pc=0x28e00; + run_28800(); return; + case 0x30144: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x30158; + pc=0x29a00; + run_29800(); return; + case 0x30158: + pc=0x2f8d4; + run_2f800(); return; + case 0x30160: + r31=0x30168; + pc=0x23000; + run_23000(); return; + case 0x30168: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x3017c; + pc=0x1a800; + run_1a800(); return; + case 0x3017c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30190; + pc=0x56fe0; + run_56800(); return; + case 0x30190: + r4 = r18 + r0; + r31=0x3019c; + pc=0x42e00; + run_42800(); return; + case 0x3019c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x303e8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x301c0; + pc=0x1fc00; + run_1f800(); return; + case 0x301c0: + r31=0x301c8; + pc=0x24000; + run_24000(); return; + case 0x301c8: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x301d4: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x301ec; + pc=0x29a00; + run_29800(); return; + case 0x301ec: + pc=0x2f8d4; + run_2f800(); return; + case 0x301f4: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x2fc74; + run_2f800(); return; + case 0x30208: + r31=0x30210; + pc=0x23000; + run_23000(); return; + case 0x30210: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2fcb0; + run_2f800(); return; + case 0x3021c: + r31=0x30224; + pc=0x23000; + run_23000(); return; + case 0x30224: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x2f9cc; + run_2f800(); return; + case 0x30234: + r31=0x3023c; + pc=0x23000; + run_23000(); return; + case 0x3023c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x2f9b8; + run_2f800(); return; + case 0x30248: + r31=0x30250; + pc=0x23000; + run_23000(); return; + case 0x30250: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x2fbb4; + run_2f800(); return; + case 0x3025c: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x3037c; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x30550; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x3036c; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x3035c; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x2feac; + run_2f800(); return; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x302b4; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2fd90; + run_2f800(); return; + case 0x302b4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x302c4; + return; + case 0x302c4: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x2fd90; + run_2f800(); return; + case 0x302d4: + r31=0x302dc; + pc=0x23000; + run_23000(); return; + case 0x302dc: + r16 = r18 + r0; + pc=0x2fa04; + run_2f800(); return; + case 0x302e8: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x30304; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2fd90; + run_2f800(); return; + case 0x30304: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x30314; + return; + case 0x30314: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x2fd90; + run_2f800(); return; + case 0x30324: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x3032c: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x30344; + pc=0x29a00; + run_29800(); return; + case 0x30344: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x30354; + pc=0x29000; + run_29000(); return; + case 0x30354: + pc=0x2f8d4; + run_2f800(); return; + case 0x3035c: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x2fd90; + run_2f800(); return; + case 0x3036c: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x2fd90; + run_2f800(); return; + case 0x3037c: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x3032c; + continue; + case 0x3038c: + r31=0x30394; + pc=0x29200; + run_29000(); return; + case 0x30394: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x30514; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x303c0; + pc=0x1fc00; + run_1f800(); return; + case 0x303c0: + pc=0x2fc20; + run_2f800(); return; + case 0x303c8: + r31=0x303d0; + pc=0x23000; + run_23000(); return; + case 0x303d0: + r31=0x303d8; + pc=0x29200; + run_29000(); return; + case 0x303d8: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x2fc30; + run_2f800(); return; + case 0x303e8: + r31=0x303f0; + pc=0x23000; + run_23000(); return; + case 0x303f0: + r31=0x303f8; + pc=0x29200; + run_29000(); return; + case 0x303f8: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x2fd2c; + run_2f800(); return; + case 0x30408: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x301d4; + continue; + case 0x3041c: + r31=0x30424; + pc=0x29200; + run_29000(); return; + case 0x30424: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x30524; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x30450; + pc=0x1fc00; + run_1f800(); return; + case 0x30450: + pc=0x2fd1c; + run_2f800(); return; + case 0x30458: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x2fd90; + run_2f800(); return; + case 0x30468: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x30490; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x2feac; + run_2f800(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x3032c; + continue; + case 0x30490: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x304b4; + pc=0x29a00; + run_29800(); return; + case 0x304b4: + pc=0x2f8d4; + run_2f800(); return; + case 0x304bc: + if(r5 != r0) { + pc=0x304d0; + continue; + } + r16 = 6 << 16; + pc=0x3004c; + continue; + case 0x304d0: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x304e0; + pc=0x21400; + run_21000(); return; + case 0x304e0: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x30014; + continue; + case 0x304f0: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x3004c; + continue; + case 0x30500: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x30014; + continue; + case 0x30514: + r31=0x3051c; + pc=0x23000; + run_23000(); return; + case 0x3051c: + pc=0x2fc20; + run_2f800(); return; + case 0x30524: + r31=0x3052c; + pc=0x23000; + run_23000(); return; + case 0x3052c: + pc=0x2fd1c; + run_2f800(); return; + case 0x30534: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x30548; + pc=0x1fc00; + run_1f800(); return; + case 0x30548: + pc=0x2f8d4; + run_2f800(); return; + case 0x30550: + if(r19 == r0) { + pc=0x301c8; + continue; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x2feac; + run_2f800(); return; + } + pc=0x30124; + continue; + case 0x30600: + r4 = r4 + -3; + r4 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x3061c; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x3061c: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x30650; + pc=0x1cc00; + run_1c800(); return; + case 0x30650: + r4 = 6 << 16; + r4 = r4 + 17896; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x30668; + pc=0x42400; + run_42000(); return; + case 0x30668: + if(r2 == r0) { + pc=0x306bc; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x30bf8; + run_30800(); return; + } + r2 = r16 + r0; + case 0x3068c: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x30c24; + run_30800(); return; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8380; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x306bc: + r4 = 6 << 16; + r4 = r4 + 20376; + r31=0x306cc; + pc=0x2a200; + run_2a000(); return; + case 0x306cc: + if(r2 == r0) { + pc=0x306fc; + continue; + } + case 0x306d4: + r2 = r0 + 1; + case 0x306d8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x306fc: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x3070c; + pc=0x2a200; + run_2a000(); return; + case 0x3070c: + if(r2 != r0) { + pc=0x306d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 19716; + r31=0x30724; + pc=0x2a200; + run_2a000(); return; + case 0x30724: + if(r2 != r0) { + pc=0x306d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 17856; + r31=0x3073c; + pc=0x2a200; + run_2a000(); return; + case 0x3073c: + pc=0x306d8; + continue; + case 0x30744: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x30754; + pc=0x1a800; + run_1a800(); return; + case 0x30754: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x30774; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x30774; + pc=0x21200; + run_21000(); return; + case 0x30774: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x30788; + pc=0x56fe0; + run_56800(); return; + case 0x30788: + r4 = r29 + 120; + r31=0x30794; + pc=0x42e00; + run_42800(); return; + case 0x30794: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x307a4; + return; + case 0x307a4: + r4= page[(r29+128)>>>2]; + r31=0x307b0; + pc=0x21c00; + run_21800(); return; + case 0x307b0: + r31=0x307b8; + pc=0x24000; + run_24000(); return; + case 0x307b8: + pc=0x306d4; + continue; + case 0x307c0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x3104c; + run_31000(); return; + } + case 0x307d0: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x31034; + run_31000(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x307e4: + r4 = r29 + 120; + r31=0x307f0; + pc=0x29400; + run_29000(); return; + case 0x307f0: + r4 = r29 + 120; + r31=0x307fc; + pc=0x42c00; + run_42800(); return; + case 0x307fc: + r31=0x30804; + pc=0x27c00; + run_27800(); return; + case 0x30800: + pc=0x30800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_30800() throws ExecutionException { /* 0x30800 - 0x31000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x30800: + case 0x30804: + if(r2 == r0) { + pc=0x30930; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x310ec; + run_31000(); return; + } + case 0x3081c: + r4 = r29 + 16; + r31=0x30828; + pc=0x29400; + run_29000(); return; + case 0x30828: + r4 = r29 + 16; + r31=0x30834; + pc=0x42c00; + run_42800(); return; + case 0x30834: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x30844; + return; + case 0x30844: + r4= page[(r29+24)>>>2]; + r31=0x30850; + pc=0x21c00; + run_21800(); return; + case 0x30850: + r4= page[(r29+128)>>>2]; + r31=0x3085c; + pc=0x21c00; + run_21800(); return; + case 0x3085c: + if(r16 == r0) { + pc=0x307b0; + run_30000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x30878; + pc=0x1fc00; + run_1f800(); return; + case 0x30878: + r31=0x30880; + pc=0x24000; + run_24000(); return; + case 0x30880: + pc=0x306d4; + run_30000(); return; + case 0x30888: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x30898; + return; + case 0x30898: + r4 = r0 + 3; + r31=0x308a4; + pc=0x29600; + run_29000(); return; + case 0x308a4: + pc=0x306d4; + run_30000(); return; + case 0x308ac: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x308bc; + return; + case 0x308bc: + r4 = r0 + 2; + r31=0x308c8; + pc=0x29600; + run_29000(); return; + case 0x308c8: + pc=0x306d4; + run_30000(); return; + case 0x308d0: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x308e0; + pc=0x1a800; + run_1a800(); return; + case 0x308e0: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x30900; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x30900; + pc=0x21200; + run_21000(); return; + case 0x30900: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30914; + pc=0x56fe0; + run_56800(); return; + case 0x30914: + r4 = r29 + 120; + r31=0x30920; + pc=0x42e00; + run_42800(); return; + case 0x30920: + r31=0x30928; + pc=0x27c00; + run_27800(); return; + case 0x30928: + if(r2 != r0) { + pc=0x30c40; + continue; + } + case 0x30930: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x30944; + pc=0x1fc00; + run_1f800(); return; + case 0x30944: + pc=0x306d4; + run_30000(); return; + case 0x3094c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3095c; + return; + case 0x3095c: + r4 = r0 + 2; + r31=0x30968; + pc=0x29800; + run_29800(); return; + case 0x30968: + pc=0x306d4; + run_30000(); return; + case 0x30970: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x30c78; + continue; + } + case 0x3097c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3098c; + return; + case 0x3098c: + r31=0x30994; + pc=0x24000; + run_24000(); return; + case 0x30994: + pc=0x306d4; + run_30000(); return; + case 0x3099c: + r4 = r17 + r0; + r31=0x309a8; + pc=0x29e00; + run_29800(); return; + case 0x309a8: + pc=0x306d4; + run_30000(); return; + case 0x309b0: + r31=0x309b8; + pc=0x27e00; + run_27800(); return; + case 0x309b8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x31060; + run_31000(); return; + } + case 0x309cc: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x30d98; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x30d1c; + continue; + } + if(r3 == r0) { + pc=0x30ce0; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x30a00; + pc=0x1a800; + run_1a800(); return; + case 0x30a00: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30a14; + pc=0x56fe0; + run_56800(); return; + case 0x30a14: + r4 = r18 + r0; + r31=0x30a20; + pc=0x42e00; + run_42800(); return; + case 0x30a20: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x311a4; + run_31000(); return; + } + case 0x30a38: + r31=0x30a40; + pc=0x29200; + run_29000(); return; + case 0x30a40: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x30a48: + r31=0x30a50; + pc=0x24000; + run_24000(); return; + case 0x30a50: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x30ddc; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x30cb0; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x3100c; + run_31000(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x30cc4; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x30a8c: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x30aa4; + pc=0x29a00; + run_29800(); return; + case 0x30aa4: + pc=0x306d4; + run_30000(); return; + case 0x30aac: + r31=0x30ab4; + pc=0x27e00; + run_27800(); return; + case 0x30ab4: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x31020; + run_31000(); return; + } + case 0x30ac8: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x30ef8; + continue; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x30f78; + continue; + } + if(r2 == r0) { + pc=0x30ee8; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x30afc; + pc=0x1a800; + run_1a800(); return; + case 0x30afc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30b10; + pc=0x56fe0; + run_56800(); return; + case 0x30b10: + r4 = r18 + r0; + r31=0x30b1c; + pc=0x42e00; + run_42800(); return; + case 0x30b1c: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x31234; + run_31000(); return; + } + case 0x30b34: + r31=0x30b3c; + pc=0x29200; + run_29000(); return; + case 0x30b3c: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x30b44: + r31=0x30b4c; + pc=0x24000; + run_24000(); return; + case 0x30b4c: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x31220; + run_31000(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x31074; + run_31000(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x31270; + run_31000(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x31280; + run_31000(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x3113c; + run_31000(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x31100; + run_31000(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x30cc4; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x30ba8: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x30bc0; + pc=0x29a00; + run_29800(); return; + case 0x30bc0: + pc=0x306d4; + run_30000(); return; + case 0x30bc8: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x30be0; + pc=0x50c00; + run_50800(); return; + case 0x30be0: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x30bf0; + pc=0x1fc00; + run_1f800(); return; + case 0x30bf0: + pc=0x306d4; + run_30000(); return; + case 0x30bf8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x30c08; + return; + case 0x30c08: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x30c18; + return; + case 0x30c18: + r2= page[(r29+148)>>>2]; + pc=0x3068c; + run_30000(); return; + case 0x30c24: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x30c38; + pc=0x21400; + run_21000(); return; + case 0x30c38: + pc=0x306d4; + run_30000(); return; + case 0x30c40: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x30c50; + return; + case 0x30c50: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x30c64; + return; + case 0x30c64: + r4 = r0 + 3; + r31=0x30c70; + pc=0x29800; + run_29800(); return; + case 0x30c70: + pc=0x306d4; + run_30000(); return; + case 0x30c78: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x3097c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x30ca8; + pc=0x21200; + run_21000(); return; + case 0x30ca8: + pc=0x3097c; + continue; + case 0x30cb0: + if(r20 == r0) { + pc=0x30d84; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x30ce8; + continue; + } + case 0x30cc4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x30cd8; + pc=0x1fc00; + run_1f800(); return; + case 0x30cd8: + pc=0x306d4; + run_30000(); return; + case 0x30ce0: + r31=0x30ce8; + pc=0x24000; + run_24000(); return; + case 0x30ce8: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x30cc4; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x30d14; + return; + case 0x30d14: + pc=0x306d4; + run_30000(); return; + case 0x30d1c: + r31=0x30d24; + pc=0x23000; + run_23000(); return; + case 0x30d24: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x30d38; + pc=0x1a800; + run_1a800(); return; + case 0x30d38: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30d4c; + pc=0x56fe0; + run_56800(); return; + case 0x30d4c: + r4 = r18 + r0; + r31=0x30d58; + pc=0x42e00; + run_42800(); return; + case 0x30d58: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x311e0; + run_31000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x30d7c; + pc=0x1fc00; + run_1f800(); return; + case 0x30d7c: + r31=0x30d84; + pc=0x24000; + run_24000(); return; + case 0x30d84: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x30a8c; + continue; + case 0x30d98: + r31=0x30da0; + pc=0x23000; + run_23000(); return; + case 0x30da0: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x30db4; + pc=0x1a800; + run_1a800(); return; + case 0x30db4: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30dc8; + pc=0x56fe0; + run_56800(); return; + case 0x30dc8: + r4 = r18 + r0; + r31=0x30dd4; + pc=0x42c00; + run_42800(); return; + case 0x30dd4: + r31=0x30ddc; + pc=0x24000; + run_24000(); return; + case 0x30ddc: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x31308; + run_31000(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x312d4; + run_31000(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x31318; + run_31000(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x312e8; + run_31000(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x30e2c: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x30e64; + continue; + } + if(r19 != r0) { + pc=0x30e5c; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x30e5c: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x30e64: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x30e78; + pc=0x29a00; + run_29800(); return; + case 0x30e78: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x306d4; + run_30000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x306d4; + run_30000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x306d4; + run_30000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x3134c; + run_31000(); return; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x306d4; + run_30000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x30ee0; + pc=0x1fc00; + run_1f800(); return; + case 0x30ee0: + pc=0x306d4; + run_30000(); return; + case 0x30ee8: + r31=0x30ef0; + pc=0x24000; + run_24000(); return; + case 0x30ef0: + pc=0x30cc4; + continue; + case 0x30ef8: + r31=0x30f00; + pc=0x23000; + run_23000(); return; + case 0x30f00: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x30f14; + pc=0x1a800; + run_1a800(); return; + case 0x30f14: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30f28; + pc=0x56fe0; + run_56800(); return; + case 0x30f28: + r4 = r18 + r0; + r31=0x30f34; + pc=0x42c00; + run_42800(); return; + case 0x30f34: + r31=0x30f3c; + pc=0x24000; + run_24000(); return; + case 0x30f3c: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x30f5c; + pc=0x28e00; + run_28800(); return; + case 0x30f5c: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x30f70; + pc=0x29a00; + run_29800(); return; + case 0x30f70: + pc=0x306d4; + run_30000(); return; + case 0x30f78: + r31=0x30f80; + pc=0x23000; + run_23000(); return; + case 0x30f80: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x30f94; + pc=0x1a800; + run_1a800(); return; + case 0x30f94: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x30fa8; + pc=0x56fe0; + run_56800(); return; + case 0x30fa8: + r4 = r18 + r0; + r31=0x30fb4; + pc=0x42e00; + run_42800(); return; + case 0x30fb4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x31200; + run_31000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x30fd8; + pc=0x1fc00; + run_1f800(); return; + case 0x30fd8: + r31=0x30fe0; + pc=0x24000; + run_24000(); return; + case 0x30fe0: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x30fec: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x31004; + pc=0x29a00; + run_29800(); return; + case 0x31000: + pc=0x31000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_31000() throws ExecutionException { /* 0x31000 - 0x31800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x31000: + case 0x31004: + pc=0x306d4; + run_30000(); return; + case 0x3100c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x30a8c; + run_30800(); return; + case 0x31020: + r31=0x31028; + pc=0x23000; + run_23000(); return; + case 0x31028: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x30ac8; + run_30800(); return; + case 0x31034: + r31=0x3103c; + pc=0x23000; + run_23000(); return; + case 0x3103c: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x307e4; + run_30000(); return; + case 0x3104c: + r31=0x31054; + pc=0x23000; + run_23000(); return; + case 0x31054: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x307d0; + run_30000(); return; + case 0x31060: + r31=0x31068; + pc=0x23000; + run_23000(); return; + case 0x31068: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x309cc; + run_30800(); return; + case 0x31074: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x31194; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x31368; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x31184; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x31174; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x30cc4; + run_30800(); return; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x310cc; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x30ba8; + run_30800(); return; + case 0x310cc: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x310dc; + return; + case 0x310dc: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x30ba8; + run_30800(); return; + case 0x310ec: + r31=0x310f4; + pc=0x23000; + run_23000(); return; + case 0x310f4: + r16 = r18 + r0; + pc=0x3081c; + run_30800(); return; + case 0x31100: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x3111c; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x30ba8; + run_30800(); return; + case 0x3111c: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x3112c; + return; + case 0x3112c: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x30ba8; + run_30800(); return; + case 0x3113c: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x31144: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x3115c; + pc=0x29a00; + run_29800(); return; + case 0x3115c: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x3116c; + pc=0x29000; + run_29000(); return; + case 0x3116c: + pc=0x306d4; + run_30000(); return; + case 0x31174: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x30ba8; + run_30800(); return; + case 0x31184: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x30ba8; + run_30800(); return; + case 0x31194: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x31144; + continue; + case 0x311a4: + r31=0x311ac; + pc=0x29200; + run_29000(); return; + case 0x311ac: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x3132c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x311d8; + pc=0x1fc00; + run_1f800(); return; + case 0x311d8: + pc=0x30a38; + run_30800(); return; + case 0x311e0: + r31=0x311e8; + pc=0x23000; + run_23000(); return; + case 0x311e8: + r31=0x311f0; + pc=0x29200; + run_29000(); return; + case 0x311f0: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x30a48; + run_30800(); return; + case 0x31200: + r31=0x31208; + pc=0x23000; + run_23000(); return; + case 0x31208: + r31=0x31210; + pc=0x29200; + run_29000(); return; + case 0x31210: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x30b44; + run_30800(); return; + case 0x31220: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x30fec; + run_30800(); return; + case 0x31234: + r31=0x3123c; + pc=0x29200; + run_29000(); return; + case 0x3123c: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x3133c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31268; + pc=0x1fc00; + run_1f800(); return; + case 0x31268: + pc=0x30b34; + run_30800(); return; + case 0x31270: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x30ba8; + run_30800(); return; + case 0x31280: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x312a8; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x30cc4; + run_30800(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x31144; + continue; + case 0x312a8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x312cc; + pc=0x29a00; + run_29800(); return; + case 0x312cc: + pc=0x306d4; + run_30000(); return; + case 0x312d4: + if(r5 != r0) { + pc=0x312e8; + continue; + } + r16 = 6 << 16; + pc=0x30e64; + run_30800(); return; + case 0x312e8: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x312f8; + pc=0x21400; + run_21000(); return; + case 0x312f8: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x30e2c; + run_30800(); return; + case 0x31308: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x30e64; + run_30800(); return; + case 0x31318: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x30e2c; + run_30800(); return; + case 0x3132c: + r31=0x31334; + pc=0x23000; + run_23000(); return; + case 0x31334: + pc=0x30a38; + run_30800(); return; + case 0x3133c: + r31=0x31344; + pc=0x23000; + run_23000(); return; + case 0x31344: + pc=0x30b34; + run_30800(); return; + case 0x3134c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x31360; + pc=0x1fc00; + run_1f800(); return; + case 0x31360: + pc=0x306d4; + run_30000(); return; + case 0x31368: + if(r19 == r0) { + pc=0x30fe0; + run_30800(); return; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x30cc4; + run_30800(); return; + } + pc=0x30f3c; + run_30800(); return; + case 0x31400: + r4 = r4 + -3; + r4 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x3141c; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x3141c: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x31450; + pc=0x1cc00; + run_1c800(); return; + case 0x31450: + r4 = 6 << 16; + r4 = r4 + 17896; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x31468; + pc=0x42400; + run_42000(); return; + case 0x31468: + if(r2 == r0) { + pc=0x314bc; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x319f8; + run_31800(); return; + } + r2 = r16 + r0; + case 0x3148c: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x31a24; + run_31800(); return; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8424; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x314bc: + r4 = 6 << 16; + r4 = r4 + 20376; + r31=0x314cc; + pc=0x2a200; + run_2a000(); return; + case 0x314cc: + if(r2 == r0) { + pc=0x314fc; + continue; + } + case 0x314d4: + r2 = r0 + 1; + case 0x314d8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x314fc: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x3150c; + pc=0x2a200; + run_2a000(); return; + case 0x3150c: + if(r2 != r0) { + pc=0x314d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 19716; + r31=0x31524; + pc=0x2a200; + run_2a000(); return; + case 0x31524: + if(r2 != r0) { + pc=0x314d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 17796; + r31=0x3153c; + pc=0x2a200; + run_2a000(); return; + case 0x3153c: + pc=0x314d8; + continue; + case 0x31544: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x31554; + pc=0x1a800; + run_1a800(); return; + case 0x31554: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x31574; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x31574; + pc=0x21200; + run_21000(); return; + case 0x31574: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x31588; + pc=0x56fe0; + run_56800(); return; + case 0x31588: + r4 = r29 + 120; + r31=0x31594; + pc=0x42e00; + run_42800(); return; + case 0x31594: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x315a4; + return; + case 0x315a4: + r4= page[(r29+128)>>>2]; + r31=0x315b0; + pc=0x21c00; + run_21800(); return; + case 0x315b0: + r31=0x315b8; + pc=0x24000; + run_24000(); return; + case 0x315b8: + pc=0x314d4; + continue; + case 0x315c0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x31e4c; + run_31800(); return; + } + case 0x315d0: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x31e34; + run_31800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x315e4: + r4 = r29 + 120; + r31=0x315f0; + pc=0x29400; + run_29000(); return; + case 0x315f0: + r4 = r29 + 120; + r31=0x315fc; + pc=0x42c00; + run_42800(); return; + case 0x315fc: + r31=0x31604; + pc=0x27c00; + run_27800(); return; + case 0x31604: + if(r2 == r0) { + pc=0x31730; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x31eec; + run_31800(); return; + } + case 0x3161c: + r4 = r29 + 16; + r31=0x31628; + pc=0x29400; + run_29000(); return; + case 0x31628: + r4 = r29 + 16; + r31=0x31634; + pc=0x42c00; + run_42800(); return; + case 0x31634: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x31644; + return; + case 0x31644: + r4= page[(r29+24)>>>2]; + r31=0x31650; + pc=0x21c00; + run_21800(); return; + case 0x31650: + r4= page[(r29+128)>>>2]; + r31=0x3165c; + pc=0x21c00; + run_21800(); return; + case 0x3165c: + if(r16 == r0) { + pc=0x315b0; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31678; + pc=0x1fc00; + run_1f800(); return; + case 0x31678: + r31=0x31680; + pc=0x24000; + run_24000(); return; + case 0x31680: + pc=0x314d4; + continue; + case 0x31688: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x31698; + return; + case 0x31698: + r4 = r0 + 3; + r31=0x316a4; + pc=0x29600; + run_29000(); return; + case 0x316a4: + pc=0x314d4; + continue; + case 0x316ac: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x316bc; + return; + case 0x316bc: + r4 = r0 + 2; + r31=0x316c8; + pc=0x29600; + run_29000(); return; + case 0x316c8: + pc=0x314d4; + continue; + case 0x316d0: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x316e0; + pc=0x1a800; + run_1a800(); return; + case 0x316e0: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x31700; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x31700; + pc=0x21200; + run_21000(); return; + case 0x31700: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31714; + pc=0x56fe0; + run_56800(); return; + case 0x31714: + r4 = r29 + 120; + r31=0x31720; + pc=0x42e00; + run_42800(); return; + case 0x31720: + r31=0x31728; + pc=0x27c00; + run_27800(); return; + case 0x31728: + if(r2 != r0) { + pc=0x31a40; + run_31800(); return; + } + case 0x31730: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31744; + pc=0x1fc00; + run_1f800(); return; + case 0x31744: + pc=0x314d4; + continue; + case 0x3174c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3175c; + return; + case 0x3175c: + r4 = r0 + 2; + r31=0x31768; + pc=0x29800; + run_29800(); return; + case 0x31768: + pc=0x314d4; + continue; + case 0x31770: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x31a78; + run_31800(); return; + } + case 0x3177c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3178c; + return; + case 0x3178c: + r31=0x31794; + pc=0x24000; + run_24000(); return; + case 0x31794: + pc=0x314d4; + continue; + case 0x3179c: + r4 = r17 + r0; + r31=0x317a8; + pc=0x29e00; + run_29800(); return; + case 0x317a8: + pc=0x314d4; + continue; + case 0x317b0: + r31=0x317b8; + pc=0x27e00; + run_27800(); return; + case 0x317b8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x31e60; + run_31800(); return; + } + case 0x317cc: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x31b98; + run_31800(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x31b1c; + run_31800(); return; + } + if(r3 == r0) { + pc=0x31ae0; + run_31800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x31800; + pc=0x1a800; + run_1a800(); return; + case 0x31800: + pc=0x31800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_31800() throws ExecutionException { /* 0x31800 - 0x32000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x31800: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31814; + pc=0x56fe0; + run_56800(); return; + case 0x31814: + r4 = r18 + r0; + r31=0x31820; + pc=0x42e00; + run_42800(); return; + case 0x31820: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x31fa4; + continue; + } + case 0x31838: + r31=0x31840; + pc=0x29200; + run_29000(); return; + case 0x31840: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x31848: + r31=0x31850; + pc=0x24000; + run_24000(); return; + case 0x31850: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x31bdc; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x31ab0; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x31e0c; + continue; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x31ac4; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x3188c: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x318a4; + pc=0x29a00; + run_29800(); return; + case 0x318a4: + pc=0x314d4; + run_31000(); return; + case 0x318ac: + r31=0x318b4; + pc=0x27e00; + run_27800(); return; + case 0x318b4: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x31e20; + continue; + } + case 0x318c8: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x31cf8; + continue; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x31d78; + continue; + } + if(r2 == r0) { + pc=0x31ce8; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x318fc; + pc=0x1a800; + run_1a800(); return; + case 0x318fc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31910; + pc=0x56fe0; + run_56800(); return; + case 0x31910: + r4 = r18 + r0; + r31=0x3191c; + pc=0x42e00; + run_42800(); return; + case 0x3191c: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x32034; + run_32000(); return; + } + case 0x31934: + r31=0x3193c; + pc=0x29200; + run_29000(); return; + case 0x3193c: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x31944: + r31=0x3194c; + pc=0x24000; + run_24000(); return; + case 0x3194c: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x32020; + run_32000(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x31e74; + continue; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x32070; + run_32000(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32080; + run_32000(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x31f3c; + continue; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x31f00; + continue; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x31ac4; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x319a8: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x319c0; + pc=0x29a00; + run_29800(); return; + case 0x319c0: + pc=0x314d4; + run_31000(); return; + case 0x319c8: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x319e0; + pc=0x50c00; + run_50800(); return; + case 0x319e0: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x319f0; + pc=0x1fc00; + run_1f800(); return; + case 0x319f0: + pc=0x314d4; + run_31000(); return; + case 0x319f8: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x31a08; + return; + case 0x31a08: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x31a18; + return; + case 0x31a18: + r2= page[(r29+148)>>>2]; + pc=0x3148c; + run_31000(); return; + case 0x31a24: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x31a38; + pc=0x21400; + run_21000(); return; + case 0x31a38: + pc=0x314d4; + run_31000(); return; + case 0x31a40: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x31a50; + return; + case 0x31a50: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x31a64; + return; + case 0x31a64: + r4 = r0 + 3; + r31=0x31a70; + pc=0x29800; + run_29800(); return; + case 0x31a70: + pc=0x314d4; + run_31000(); return; + case 0x31a78: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x3177c; + run_31000(); return; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x31aa8; + pc=0x21200; + run_21000(); return; + case 0x31aa8: + pc=0x3177c; + run_31000(); return; + case 0x31ab0: + if(r20 == r0) { + pc=0x31b84; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x31ae8; + continue; + } + case 0x31ac4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x31ad8; + pc=0x1fc00; + run_1f800(); return; + case 0x31ad8: + pc=0x314d4; + run_31000(); return; + case 0x31ae0: + r31=0x31ae8; + pc=0x24000; + run_24000(); return; + case 0x31ae8: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x31ac4; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x31b14; + return; + case 0x31b14: + pc=0x314d4; + run_31000(); return; + case 0x31b1c: + r31=0x31b24; + pc=0x23000; + run_23000(); return; + case 0x31b24: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x31b38; + pc=0x1a800; + run_1a800(); return; + case 0x31b38: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31b4c; + pc=0x56fe0; + run_56800(); return; + case 0x31b4c: + r4 = r18 + r0; + r31=0x31b58; + pc=0x42e00; + run_42800(); return; + case 0x31b58: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x31fe0; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31b7c; + pc=0x1fc00; + run_1f800(); return; + case 0x31b7c: + r31=0x31b84; + pc=0x24000; + run_24000(); return; + case 0x31b84: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x3188c; + continue; + case 0x31b98: + r31=0x31ba0; + pc=0x23000; + run_23000(); return; + case 0x31ba0: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x31bb4; + pc=0x1a800; + run_1a800(); return; + case 0x31bb4: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31bc8; + pc=0x56fe0; + run_56800(); return; + case 0x31bc8: + r4 = r18 + r0; + r31=0x31bd4; + pc=0x42c00; + run_42800(); return; + case 0x31bd4: + r31=0x31bdc; + pc=0x24000; + run_24000(); return; + case 0x31bdc: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x32108; + run_32000(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x320d4; + run_32000(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x32118; + run_32000(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x320e8; + run_32000(); return; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x31c2c: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x31c64; + continue; + } + if(r19 != r0) { + pc=0x31c5c; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x31c5c: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x31c64: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x31c78; + pc=0x29a00; + run_29800(); return; + case 0x31c78: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x314d4; + run_31000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x314d4; + run_31000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x314d4; + run_31000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x3214c; + run_32000(); return; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x314d4; + run_31000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x31ce0; + pc=0x1fc00; + run_1f800(); return; + case 0x31ce0: + pc=0x314d4; + run_31000(); return; + case 0x31ce8: + r31=0x31cf0; + pc=0x24000; + run_24000(); return; + case 0x31cf0: + pc=0x31ac4; + continue; + case 0x31cf8: + r31=0x31d00; + pc=0x23000; + run_23000(); return; + case 0x31d00: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x31d14; + pc=0x1a800; + run_1a800(); return; + case 0x31d14: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31d28; + pc=0x56fe0; + run_56800(); return; + case 0x31d28: + r4 = r18 + r0; + r31=0x31d34; + pc=0x42c00; + run_42800(); return; + case 0x31d34: + r31=0x31d3c; + pc=0x24000; + run_24000(); return; + case 0x31d3c: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x31d5c; + pc=0x28e00; + run_28800(); return; + case 0x31d5c: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x31d70; + pc=0x29a00; + run_29800(); return; + case 0x31d70: + pc=0x314d4; + run_31000(); return; + case 0x31d78: + r31=0x31d80; + pc=0x23000; + run_23000(); return; + case 0x31d80: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x31d94; + pc=0x1a800; + run_1a800(); return; + case 0x31d94: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x31da8; + pc=0x56fe0; + run_56800(); return; + case 0x31da8: + r4 = r18 + r0; + r31=0x31db4; + pc=0x42e00; + run_42800(); return; + case 0x31db4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x32000; + run_32000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31dd8; + pc=0x1fc00; + run_1f800(); return; + case 0x31dd8: + r31=0x31de0; + pc=0x24000; + run_24000(); return; + case 0x31de0: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x31dec: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x31e04; + pc=0x29a00; + run_29800(); return; + case 0x31e04: + pc=0x314d4; + run_31000(); return; + case 0x31e0c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x3188c; + continue; + case 0x31e20: + r31=0x31e28; + pc=0x23000; + run_23000(); return; + case 0x31e28: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x318c8; + continue; + case 0x31e34: + r31=0x31e3c; + pc=0x23000; + run_23000(); return; + case 0x31e3c: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x315e4; + run_31000(); return; + case 0x31e4c: + r31=0x31e54; + pc=0x23000; + run_23000(); return; + case 0x31e54: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x315d0; + run_31000(); return; + case 0x31e60: + r31=0x31e68; + pc=0x23000; + run_23000(); return; + case 0x31e68: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x317cc; + run_31000(); return; + case 0x31e74: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x31f94; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32168; + run_32000(); return; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x31f84; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x31f74; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x31ac4; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x31ecc; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x319a8; + continue; + case 0x31ecc: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x31edc; + return; + case 0x31edc: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x319a8; + continue; + case 0x31eec: + r31=0x31ef4; + pc=0x23000; + run_23000(); return; + case 0x31ef4: + r16 = r18 + r0; + pc=0x3161c; + run_31000(); return; + case 0x31f00: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x31f1c; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x319a8; + continue; + case 0x31f1c: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x31f2c; + return; + case 0x31f2c: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x319a8; + continue; + case 0x31f3c: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x31f44: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x31f5c; + pc=0x29a00; + run_29800(); return; + case 0x31f5c: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x31f6c; + pc=0x29000; + run_29000(); return; + case 0x31f6c: + pc=0x314d4; + run_31000(); return; + case 0x31f74: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x319a8; + continue; + case 0x31f84: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x319a8; + continue; + case 0x31f94: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x31f44; + continue; + case 0x31fa4: + r31=0x31fac; + pc=0x29200; + run_29000(); return; + case 0x31fac: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x3212c; + run_32000(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x31fd8; + pc=0x1fc00; + run_1f800(); return; + case 0x31fd8: + pc=0x31838; + continue; + case 0x31fe0: + r31=0x31fe8; + pc=0x23000; + run_23000(); return; + case 0x31fe8: + r31=0x31ff0; + pc=0x29200; + run_29000(); return; + case 0x31ff0: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x31848; + continue; + case 0x32000: + pc=0x32000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_32000() throws ExecutionException { /* 0x32000 - 0x32800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x32000: + r31=0x32008; + pc=0x23000; + run_23000(); return; + case 0x32008: + r31=0x32010; + pc=0x29200; + run_29000(); return; + case 0x32010: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x31944; + run_31800(); return; + case 0x32020: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x31dec; + run_31800(); return; + case 0x32034: + r31=0x3203c; + pc=0x29200; + run_29000(); return; + case 0x3203c: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x3213c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32068; + pc=0x1fc00; + run_1f800(); return; + case 0x32068: + pc=0x31934; + run_31800(); return; + case 0x32070: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x319a8; + run_31800(); return; + case 0x32080: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x320a8; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x31ac4; + run_31800(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x31f44; + run_31800(); return; + case 0x320a8: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x320cc; + pc=0x29a00; + run_29800(); return; + case 0x320cc: + pc=0x314d4; + run_31000(); return; + case 0x320d4: + if(r5 != r0) { + pc=0x320e8; + continue; + } + r16 = 6 << 16; + pc=0x31c64; + run_31800(); return; + case 0x320e8: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x320f8; + pc=0x21400; + run_21000(); return; + case 0x320f8: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x31c2c; + run_31800(); return; + case 0x32108: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x31c64; + run_31800(); return; + case 0x32118: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x31c2c; + run_31800(); return; + case 0x3212c: + r31=0x32134; + pc=0x23000; + run_23000(); return; + case 0x32134: + pc=0x31838; + run_31800(); return; + case 0x3213c: + r31=0x32144; + pc=0x23000; + run_23000(); return; + case 0x32144: + pc=0x31934; + run_31800(); return; + case 0x3214c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x32160; + pc=0x1fc00; + run_1f800(); return; + case 0x32160: + pc=0x314d4; + run_31000(); return; + case 0x32168: + if(r19 == r0) { + pc=0x31de0; + run_31800(); return; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x31ac4; + run_31800(); return; + } + pc=0x31d3c; + run_31800(); return; + case 0x32200: + r4 = r4 + -3; + r4 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x3221c; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x3221c: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x32250; + pc=0x1cc00; + run_1c800(); return; + case 0x32250: + r4 = 6 << 16; + r4 = r4 + 17276; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x32268; + pc=0x42400; + run_42000(); return; + case 0x32268: + if(r2 == r0) { + pc=0x322bc; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x32810; + run_32800(); return; + } + r2 = r16 + r0; + case 0x3228c: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x3283c; + run_32800(); return; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8468; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x322bc: + r4 = 6 << 16; + r4 = r4 + 17896; + r31=0x322cc; + pc=0x2a200; + run_2a000(); return; + case 0x322cc: + if(r2 == r0) { + pc=0x322fc; + continue; + } + case 0x322d4: + r2 = r0 + 1; + case 0x322d8: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x322fc: + r4 = 6 << 16; + r4 = r4 + 20376; + r31=0x3230c; + pc=0x2a200; + run_2a000(); return; + case 0x3230c: + if(r2 != r0) { + pc=0x322d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x32324; + pc=0x2a200; + run_2a000(); return; + case 0x32324: + if(r2 != r0) { + pc=0x322d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 19716; + r31=0x3233c; + pc=0x2a200; + run_2a000(); return; + case 0x3233c: + if(r2 != r0) { + pc=0x322d4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 17796; + r31=0x32354; + pc=0x2a200; + run_2a000(); return; + case 0x32354: + pc=0x322d8; + continue; + case 0x3235c: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x3236c; + pc=0x1a800; + run_1a800(); return; + case 0x3236c: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x3238c; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x3238c; + pc=0x21200; + run_21000(); return; + case 0x3238c: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x323a0; + pc=0x56fe0; + run_56800(); return; + case 0x323a0: + r4 = r29 + 120; + r31=0x323ac; + pc=0x42e00; + run_42800(); return; + case 0x323ac: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x323bc; + return; + case 0x323bc: + r4= page[(r29+128)>>>2]; + r31=0x323c8; + pc=0x21c00; + run_21800(); return; + case 0x323c8: + r31=0x323d0; + pc=0x24000; + run_24000(); return; + case 0x323d0: + pc=0x322d4; + continue; + case 0x323d8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x32c64; + run_32800(); return; + } + case 0x323e8: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x32c4c; + run_32800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x323fc: + r4 = r29 + 120; + r31=0x32408; + pc=0x29400; + run_29000(); return; + case 0x32408: + r4 = r29 + 120; + r31=0x32414; + pc=0x42c00; + run_42800(); return; + case 0x32414: + r31=0x3241c; + pc=0x27c00; + run_27800(); return; + case 0x3241c: + if(r2 == r0) { + pc=0x32548; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x32d04; + run_32800(); return; + } + case 0x32434: + r4 = r29 + 16; + r31=0x32440; + pc=0x29400; + run_29000(); return; + case 0x32440: + r4 = r29 + 16; + r31=0x3244c; + pc=0x42c00; + run_42800(); return; + case 0x3244c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3245c; + return; + case 0x3245c: + r4= page[(r29+24)>>>2]; + r31=0x32468; + pc=0x21c00; + run_21800(); return; + case 0x32468: + r4= page[(r29+128)>>>2]; + r31=0x32474; + pc=0x21c00; + run_21800(); return; + case 0x32474: + if(r16 == r0) { + pc=0x323c8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32490; + pc=0x1fc00; + run_1f800(); return; + case 0x32490: + r31=0x32498; + pc=0x24000; + run_24000(); return; + case 0x32498: + pc=0x322d4; + continue; + case 0x324a0: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x324b0; + return; + case 0x324b0: + r4 = r0 + 3; + r31=0x324bc; + pc=0x29600; + run_29000(); return; + case 0x324bc: + pc=0x322d4; + continue; + case 0x324c4: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x324d4; + return; + case 0x324d4: + r4 = r0 + 2; + r31=0x324e0; + pc=0x29600; + run_29000(); return; + case 0x324e0: + pc=0x322d4; + continue; + case 0x324e8: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x324f8; + pc=0x1a800; + run_1a800(); return; + case 0x324f8: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x32518; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x32518; + pc=0x21200; + run_21000(); return; + case 0x32518: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x3252c; + pc=0x56fe0; + run_56800(); return; + case 0x3252c: + r4 = r29 + 120; + r31=0x32538; + pc=0x42e00; + run_42800(); return; + case 0x32538: + r31=0x32540; + pc=0x27c00; + run_27800(); return; + case 0x32540: + if(r2 != r0) { + pc=0x32858; + run_32800(); return; + } + case 0x32548: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x3255c; + pc=0x1fc00; + run_1f800(); return; + case 0x3255c: + pc=0x322d4; + continue; + case 0x32564: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x32574; + return; + case 0x32574: + r4 = r0 + 2; + r31=0x32580; + pc=0x29800; + run_29800(); return; + case 0x32580: + pc=0x322d4; + continue; + case 0x32588: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x32890; + run_32800(); return; + } + case 0x32594: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x325a4; + return; + case 0x325a4: + r31=0x325ac; + pc=0x24000; + run_24000(); return; + case 0x325ac: + pc=0x322d4; + continue; + case 0x325b4: + r4 = r17 + r0; + r31=0x325c0; + pc=0x29e00; + run_29800(); return; + case 0x325c0: + pc=0x322d4; + continue; + case 0x325c8: + r31=0x325d0; + pc=0x27e00; + run_27800(); return; + case 0x325d0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x32c78; + run_32800(); return; + } + case 0x325e4: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x329b0; + run_32800(); return; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x32934; + run_32800(); return; + } + if(r3 == r0) { + pc=0x328f8; + run_32800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x32618; + pc=0x1a800; + run_1a800(); return; + case 0x32618: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x3262c; + pc=0x56fe0; + run_56800(); return; + case 0x3262c: + r4 = r18 + r0; + r31=0x32638; + pc=0x42e00; + run_42800(); return; + case 0x32638: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x32dbc; + run_32800(); return; + } + case 0x32650: + r31=0x32658; + pc=0x29200; + run_29000(); return; + case 0x32658: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x32660: + r31=0x32668; + pc=0x24000; + run_24000(); return; + case 0x32668: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x329f4; + run_32800(); return; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x328c8; + run_32800(); return; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x32c24; + run_32800(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x328dc; + run_32800(); return; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x326a4: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x326bc; + pc=0x29a00; + run_29800(); return; + case 0x326bc: + pc=0x322d4; + continue; + case 0x326c4: + r31=0x326cc; + pc=0x27e00; + run_27800(); return; + case 0x326cc: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x32c38; + run_32800(); return; + } + case 0x326e0: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x32b10; + run_32800(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x32b90; + run_32800(); return; + } + if(r2 == r0) { + pc=0x32b00; + run_32800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x32714; + pc=0x1a800; + run_1a800(); return; + case 0x32714: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x32728; + pc=0x56fe0; + run_56800(); return; + case 0x32728: + r4 = r18 + r0; + r31=0x32734; + pc=0x42e00; + run_42800(); return; + case 0x32734: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x32e4c; + run_32800(); return; + } + case 0x3274c: + r31=0x32754; + pc=0x29200; + run_29000(); return; + case 0x32754: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x3275c: + r31=0x32764; + pc=0x24000; + run_24000(); return; + case 0x32764: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x32e38; + run_32800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32c8c; + run_32800(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x32e88; + run_32800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32e98; + run_32800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x32d54; + run_32800(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x32d18; + run_32800(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x328dc; + run_32800(); return; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x327c0: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x327d8; + pc=0x29a00; + run_29800(); return; + case 0x327d8: + pc=0x322d4; + continue; + case 0x327e0: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x327f8; + pc=0x50c00; + run_50800(); return; + case 0x327f8: + r4 = r0 + -2; + r5 = r29 + 16; + case 0x32800: + pc=0x32800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_32800() throws ExecutionException { /* 0x32800 - 0x33000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x32800: + r31=0x32808; + pc=0x1fc00; + run_1f800(); return; + case 0x32808: + pc=0x322d4; + run_32000(); return; + case 0x32810: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x32820; + return; + case 0x32820: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x32830; + return; + case 0x32830: + r2= page[(r29+148)>>>2]; + pc=0x3228c; + run_32000(); return; + case 0x3283c: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x32850; + pc=0x21400; + run_21000(); return; + case 0x32850: + pc=0x322d4; + run_32000(); return; + case 0x32858: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x32868; + return; + case 0x32868: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x3287c; + return; + case 0x3287c: + r4 = r0 + 3; + r31=0x32888; + pc=0x29800; + run_29800(); return; + case 0x32888: + pc=0x322d4; + run_32000(); return; + case 0x32890: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x32594; + run_32000(); return; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x328c0; + pc=0x21200; + run_21000(); return; + case 0x328c0: + pc=0x32594; + run_32000(); return; + case 0x328c8: + if(r20 == r0) { + pc=0x3299c; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x32900; + continue; + } + case 0x328dc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x328f0; + pc=0x1fc00; + run_1f800(); return; + case 0x328f0: + pc=0x322d4; + run_32000(); return; + case 0x328f8: + r31=0x32900; + pc=0x24000; + run_24000(); return; + case 0x32900: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x328dc; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x3292c; + return; + case 0x3292c: + pc=0x322d4; + run_32000(); return; + case 0x32934: + r31=0x3293c; + pc=0x23000; + run_23000(); return; + case 0x3293c: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x32950; + pc=0x1a800; + run_1a800(); return; + case 0x32950: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x32964; + pc=0x56fe0; + run_56800(); return; + case 0x32964: + r4 = r18 + r0; + r31=0x32970; + pc=0x42e00; + run_42800(); return; + case 0x32970: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x32df8; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32994; + pc=0x1fc00; + run_1f800(); return; + case 0x32994: + r31=0x3299c; + pc=0x24000; + run_24000(); return; + case 0x3299c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x326a4; + run_32000(); return; + case 0x329b0: + r31=0x329b8; + pc=0x23000; + run_23000(); return; + case 0x329b8: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x329cc; + pc=0x1a800; + run_1a800(); return; + case 0x329cc: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x329e0; + pc=0x56fe0; + run_56800(); return; + case 0x329e0: + r4 = r18 + r0; + r31=0x329ec; + pc=0x42c00; + run_42800(); return; + case 0x329ec: + r31=0x329f4; + pc=0x24000; + run_24000(); return; + case 0x329f4: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x32f20; + continue; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32eec; + continue; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x32f30; + continue; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x32f00; + continue; + } + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x32a44: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x32a7c; + continue; + } + if(r19 != r0) { + pc=0x32a74; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x32a74: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x32a7c: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x32a90; + pc=0x29a00; + run_29800(); return; + case 0x32a90: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x322d4; + run_32000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x322d4; + run_32000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x322d4; + run_32000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x32f64; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x322d4; + run_32000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x32af8; + pc=0x1fc00; + run_1f800(); return; + case 0x32af8: + pc=0x322d4; + run_32000(); return; + case 0x32b00: + r31=0x32b08; + pc=0x24000; + run_24000(); return; + case 0x32b08: + pc=0x328dc; + continue; + case 0x32b10: + r31=0x32b18; + pc=0x23000; + run_23000(); return; + case 0x32b18: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x32b2c; + pc=0x1a800; + run_1a800(); return; + case 0x32b2c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x32b40; + pc=0x56fe0; + run_56800(); return; + case 0x32b40: + r4 = r18 + r0; + r31=0x32b4c; + pc=0x42c00; + run_42800(); return; + case 0x32b4c: + r31=0x32b54; + pc=0x24000; + run_24000(); return; + case 0x32b54: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x32b74; + pc=0x28e00; + run_28800(); return; + case 0x32b74: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x32b88; + pc=0x29a00; + run_29800(); return; + case 0x32b88: + pc=0x322d4; + run_32000(); return; + case 0x32b90: + r31=0x32b98; + pc=0x23000; + run_23000(); return; + case 0x32b98: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x32bac; + pc=0x1a800; + run_1a800(); return; + case 0x32bac: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x32bc0; + pc=0x56fe0; + run_56800(); return; + case 0x32bc0: + r4 = r18 + r0; + r31=0x32bcc; + pc=0x42e00; + run_42800(); return; + case 0x32bcc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x32e18; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32bf0; + pc=0x1fc00; + run_1f800(); return; + case 0x32bf0: + r31=0x32bf8; + pc=0x24000; + run_24000(); return; + case 0x32bf8: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x32c04: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x32c1c; + pc=0x29a00; + run_29800(); return; + case 0x32c1c: + pc=0x322d4; + run_32000(); return; + case 0x32c24: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x326a4; + run_32000(); return; + case 0x32c38: + r31=0x32c40; + pc=0x23000; + run_23000(); return; + case 0x32c40: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x326e0; + run_32000(); return; + case 0x32c4c: + r31=0x32c54; + pc=0x23000; + run_23000(); return; + case 0x32c54: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x323fc; + run_32000(); return; + case 0x32c64: + r31=0x32c6c; + pc=0x23000; + run_23000(); return; + case 0x32c6c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x323e8; + run_32000(); return; + case 0x32c78: + r31=0x32c80; + pc=0x23000; + run_23000(); return; + case 0x32c80: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x325e4; + run_32000(); return; + case 0x32c8c: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x32dac; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x32f80; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x32d9c; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x32d8c; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x328dc; + continue; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x32ce4; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x327c0; + run_32000(); return; + case 0x32ce4: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x32cf4; + return; + case 0x32cf4: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x327c0; + run_32000(); return; + case 0x32d04: + r31=0x32d0c; + pc=0x23000; + run_23000(); return; + case 0x32d0c: + r16 = r18 + r0; + pc=0x32434; + run_32000(); return; + case 0x32d18: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x32d34; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x327c0; + run_32000(); return; + case 0x32d34: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x32d44; + return; + case 0x32d44: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x327c0; + run_32000(); return; + case 0x32d54: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x32d5c: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x32d74; + pc=0x29a00; + run_29800(); return; + case 0x32d74: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x32d84; + pc=0x29000; + run_29000(); return; + case 0x32d84: + pc=0x322d4; + run_32000(); return; + case 0x32d8c: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x327c0; + run_32000(); return; + case 0x32d9c: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x327c0; + run_32000(); return; + case 0x32dac: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x32d5c; + continue; + case 0x32dbc: + r31=0x32dc4; + pc=0x29200; + run_29000(); return; + case 0x32dc4: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x32f44; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32df0; + pc=0x1fc00; + run_1f800(); return; + case 0x32df0: + pc=0x32650; + run_32000(); return; + case 0x32df8: + r31=0x32e00; + pc=0x23000; + run_23000(); return; + case 0x32e00: + r31=0x32e08; + pc=0x29200; + run_29000(); return; + case 0x32e08: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x32660; + run_32000(); return; + case 0x32e18: + r31=0x32e20; + pc=0x23000; + run_23000(); return; + case 0x32e20: + r31=0x32e28; + pc=0x29200; + run_29000(); return; + case 0x32e28: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x3275c; + run_32000(); return; + case 0x32e38: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x32c04; + continue; + case 0x32e4c: + r31=0x32e54; + pc=0x29200; + run_29000(); return; + case 0x32e54: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x32f54; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x32e80; + pc=0x1fc00; + run_1f800(); return; + case 0x32e80: + pc=0x3274c; + run_32000(); return; + case 0x32e88: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x327c0; + run_32000(); return; + case 0x32e98: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x32ec0; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x328dc; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x32d5c; + continue; + case 0x32ec0: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x32ee4; + pc=0x29a00; + run_29800(); return; + case 0x32ee4: + pc=0x322d4; + run_32000(); return; + case 0x32eec: + if(r5 != r0) { + pc=0x32f00; + continue; + } + r16 = 6 << 16; + pc=0x32a7c; + continue; + case 0x32f00: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x32f10; + pc=0x21400; + run_21000(); return; + case 0x32f10: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x32a44; + continue; + case 0x32f20: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x32a7c; + continue; + case 0x32f30: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x32a44; + continue; + case 0x32f44: + r31=0x32f4c; + pc=0x23000; + run_23000(); return; + case 0x32f4c: + pc=0x32650; + run_32000(); return; + case 0x32f54: + r31=0x32f5c; + pc=0x23000; + run_23000(); return; + case 0x32f5c: + pc=0x3274c; + run_32000(); return; + case 0x32f64: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x32f78; + pc=0x1fc00; + run_1f800(); return; + case 0x32f78: + pc=0x322d4; + run_32000(); return; + case 0x32f80: + if(r19 == r0) { + pc=0x32bf8; + continue; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x328dc; + continue; + } + pc=0x32b54; + continue; + case 0x33000: + pc=0x33000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_33000() throws ExecutionException { /* 0x33000 - 0x33800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x33000: + r2 = r0 + 3; + if(r4 == r2) { + pc=0x33018; + continue; + } + r2 = r0 + r0; + pc=r31; + return; + case 0x33018: + r29 = r29 + -176; + r5 = 6 << 16; + page[(r29+152)>>>2] = r16; + r16 = 6 << 16; + r4 = r16 + 22536; + r5 = r5 + 17104; + page[(r29+172)>>>2] = r31; + page[(r29+168)>>>2] = r20; + page[(r29+164)>>>2] = r19; + page[(r29+160)>>>2] = r18; + page[(r29+156)>>>2] = r17; + r31=0x3304c; + pc=0x1cc00; + run_1c800(); return; + case 0x3304c: + r4 = 6 << 16; + r4 = r4 + 18816; + r5 = r29 + 148; + r6 = r16 + 22536; + r31=0x33064; + pc=0x42400; + run_42000(); return; + case 0x33064: + if(r2 == r0) { + pc=0x330b8; + continue; + } + r16= page[(r29+148)>>>2]; + r2 = r16 & 1024; + r17 = r16 & 255; + if(r2 != r0) { + pc=0x335dc; + continue; + } + r2 = r16 + r0; + case 0x33088: + r2 = r2 >> 12; + r3 = (r2&0xffffffffL) < (11&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x33608; + continue; + } + r3 = 6 << 16; + r2 = r2 << 2; + r3 = r3 + 8512; + r2 = r3 + r2; + r2= page[(r2+0)>>>2]; + pc=r2; + return; + case 0x330b8: + r4 = 6 << 16; + r4 = r4 + 20376; + r31=0x330c8; + pc=0x2a200; + run_2a000(); return; + case 0x330c8: + if(r2 == r0) { + pc=0x330f8; + continue; + } + case 0x330d0: + r2 = r0 + 1; + case 0x330d4: + r31= page[(r29+172)>>>2]; + r20= page[(r29+168)>>>2]; + r19= page[(r29+164)>>>2]; + r18= page[(r29+160)>>>2]; + r17= page[(r29+156)>>>2]; + r16= page[(r29+152)>>>2]; + r29 = r29 + 176; + pc=r31; + return; + case 0x330f8: + r4 = 6 << 16; + r4 = r4 + 21396; + r31=0x33108; + pc=0x2a200; + run_2a000(); return; + case 0x33108: + if(r2 != r0) { + pc=0x330d0; + continue; + } + r4 = 6 << 16; + r4 = r4 + 19656; + r31=0x33120; + pc=0x2a200; + run_2a000(); return; + case 0x33120: + pc=0x330d4; + continue; + case 0x33128: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x33138; + pc=0x1a800; + run_1a800(); return; + case 0x33138: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x33158; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x33158; + pc=0x21200; + run_21000(); return; + case 0x33158: + r5 = r29 + 24; + r6 = r0 + 24; + r4 = r29 + 120; + r31=0x3316c; + pc=0x56fe0; + run_56800(); return; + case 0x3316c: + r4 = r29 + 120; + r31=0x33178; + pc=0x42e00; + run_42800(); return; + case 0x33178: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x33188; + return; + case 0x33188: + r4= page[(r29+128)>>>2]; + r31=0x33194; + pc=0x21c00; + run_21800(); return; + case 0x33194: + r31=0x3319c; + pc=0x24000; + run_24000(); return; + case 0x3319c: + pc=0x330d0; + continue; + case 0x331a4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x33a30; + run_33800(); return; + } + case 0x331b4: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x33a18; + run_33800(); return; + } + r18 = r0 + 1; + r16 = r0 + r0; + case 0x331c8: + r4 = r29 + 120; + r31=0x331d4; + pc=0x29400; + run_29000(); return; + case 0x331d4: + r4 = r29 + 120; + r31=0x331e0; + pc=0x42c00; + run_42800(); return; + case 0x331e0: + r31=0x331e8; + pc=0x27c00; + run_27800(); return; + case 0x331e8: + if(r2 == r0) { + pc=0x33314; + continue; + } + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 35; + if(r3 == r2) { + pc=0x33ad0; + run_33800(); return; + } + case 0x33200: + r4 = r29 + 16; + r31=0x3320c; + pc=0x29400; + run_29000(); return; + case 0x3320c: + r4 = r29 + 16; + r31=0x33218; + pc=0x42c00; + run_42800(); return; + case 0x33218: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x33228; + return; + case 0x33228: + r4= page[(r29+24)>>>2]; + r31=0x33234; + pc=0x21c00; + run_21800(); return; + case 0x33234: + r4= page[(r29+128)>>>2]; + r31=0x33240; + pc=0x21c00; + run_21800(); return; + case 0x33240: + if(r16 == r0) { + pc=0x33194; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x3325c; + pc=0x1fc00; + run_1f800(); return; + case 0x3325c: + r31=0x33264; + pc=0x24000; + run_24000(); return; + case 0x33264: + pc=0x330d0; + continue; + case 0x3326c: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x3327c; + return; + case 0x3327c: + r4 = r0 + 3; + r31=0x33288; + pc=0x29600; + run_29000(); return; + case 0x33288: + pc=0x330d0; + continue; + case 0x33290: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x332a0; + return; + case 0x332a0: + r4 = r0 + 2; + r31=0x332ac; + pc=0x29600; + run_29000(); return; + case 0x332ac: + pc=0x330d0; + continue; + case 0x332b4: + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x332c4; + pc=0x1a800; + run_1a800(); return; + case 0x332c4: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x332e4; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6372; + r31=0x332e4; + pc=0x21200; + run_21000(); return; + case 0x332e4: + r4 = r29 + 120; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x332f8; + pc=0x56fe0; + run_56800(); return; + case 0x332f8: + r4 = r29 + 120; + r31=0x33304; + pc=0x42e00; + run_42800(); return; + case 0x33304: + r31=0x3330c; + pc=0x27c00; + run_27800(); return; + case 0x3330c: + if(r2 != r0) { + pc=0x33624; + continue; + } + case 0x33314: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x33328; + pc=0x1fc00; + run_1f800(); return; + case 0x33328: + pc=0x330d0; + continue; + case 0x33330: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x33340; + return; + case 0x33340: + r4 = r0 + 2; + r31=0x3334c; + pc=0x29800; + run_29800(); return; + case 0x3334c: + pc=0x330d0; + continue; + case 0x33354: + r2 = r0 + 248; + if(r17 == r2) { + pc=0x3365c; + continue; + } + case 0x33360: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x33370; + return; + case 0x33370: + r31=0x33378; + pc=0x24000; + run_24000(); return; + case 0x33378: + pc=0x330d0; + continue; + case 0x33380: + r4 = r17 + r0; + r31=0x3338c; + pc=0x29e00; + run_29800(); return; + case 0x3338c: + pc=0x330d0; + continue; + case 0x33394: + r31=0x3339c; + pc=0x27e00; + run_27800(); return; + case 0x3339c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r5 = r0 + 32; + r19 = r2 + r0; + if(r3 == r5) { + pc=0x33a44; + run_33800(); return; + } + case 0x333b0: + r5 = r0 + 35; + if(r3 == r5) { + pc=0x3377c; + continue; + } + r2 = r0 + 91; + if(r3 == r2) { + pc=0x33700; + continue; + } + if(r3 == r0) { + pc=0x336c4; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x333e4; + pc=0x1a800; + run_1a800(); return; + case 0x333e4: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x333f8; + pc=0x56fe0; + run_56800(); return; + case 0x333f8: + r4 = r18 + r0; + r31=0x33404; + pc=0x42e00; + run_42800(); return; + case 0x33404: + r20= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; + r20 = r20 << 2; + if(r2 != r0) { + pc=0x33b88; + run_33800(); return; + } + case 0x3341c: + r31=0x33424; + pc=0x29200; + run_29000(); return; + case 0x33424: + r2 = r2 << 7; + r20 = r2 | r20; + case 0x3342c: + r31=0x33434; + pc=0x24000; + run_24000(); return; + case 0x33434: + r2 = r0 + 2; + if(r20 == r2) { + pc=0x337c0; + continue; + } + r2 = (r20&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x33694; + continue; + } + r2 = r0 + 256; + if(r20 == r2) { + pc=0x339f0; + run_33800(); return; + } + r2 = r0 + 384; + if(r20 != r2) { + pc=0x336a8; + continue; + } + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8736; + case 0x33470: + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r4 = r19 + r0; + r5 = r18 + r0; + r31=0x33488; + pc=0x29a00; + run_29800(); return; + case 0x33488: + pc=0x330d0; + continue; + case 0x33490: + r31=0x33498; + pc=0x27e00; + run_27800(); return; + case 0x33498: + page[(r29+144)>>>2] = r2; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r0 + 32; + if(r2 == r3) { + pc=0x33a04; + run_33800(); return; + } + case 0x334ac: + r3 = r0 + 35; + if(r2 == r3) { + pc=0x338dc; + run_33800(); return; + } + r3 = r0 + 91; + if(r2 == r3) { + pc=0x3395c; + run_33800(); return; + } + if(r2 == r0) { + pc=0x338cc; + run_33800(); return; + } + r4 = r29 + 16; + r5 = r0 + 1; + r18 = r29 + 120; + r31=0x334e0; + pc=0x1a800; + run_1a800(); return; + case 0x334e0: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x334f4; + pc=0x56fe0; + run_56800(); return; + case 0x334f4: + r4 = r18 + r0; + r31=0x33500; + pc=0x42e00; + run_42800(); return; + case 0x33500: + r19= page[(r29+56)>>>2]; + r2= page[(r29+52)>>>2]; + r19 = ((r0 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; + r19 = r19 << 2; + if(r2 != r0) { + pc=0x33c18; + run_33800(); return; + } + case 0x33518: + r31=0x33520; + pc=0x29200; + run_29000(); return; + case 0x33520: + r2 = r2 << 7; + r19 = r2 | r19; + case 0x33528: + r31=0x33530; + pc=0x24000; + run_24000(); return; + case 0x33530: + r2 = r0 + 256; + if(r19 == r2) { + pc=0x33c04; + run_33800(); return; + } + r2 = (r19&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x33a58; + run_33800(); return; + } + r2 = r0 + 392; + if(r19 == r2) { + pc=0x33c54; + run_33800(); return; + } + r2 = (r19&0xffffffffL) < (393&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x33c64; + run_33800(); return; + } + r2 = r0 + 516; + if(r19 == r2) { + pc=0x33b20; + run_33800(); return; + } + r2 = r0 + 520; + if(r19 == r2) { + pc=0x33ae4; + run_33800(); return; + } + r2 = r0 + 404; + if(r19 != r2) { + pc=0x336a8; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9360; + case 0x3358c: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x335a4; + pc=0x29a00; + run_29800(); return; + case 0x335a4: + pc=0x330d0; + continue; + case 0x335ac: + r5 = 6 << 16; + r4 = r29 + 16; + r5 = r5 + 6828; + r6 = r17 + r0; + r31=0x335c4; + pc=0x50c00; + run_50800(); return; + case 0x335c4: + r4 = r0 + -2; + r5 = r29 + 16; + r31=0x335d4; + pc=0x1fc00; + run_1f800(); return; + case 0x335d4: + pc=0x330d0; + continue; + case 0x335dc: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x335ec; + return; + case 0x335ec: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 66; + pc=r2; + r31=0x335fc; + return; + case 0x335fc: + r2= page[(r29+148)>>>2]; + pc=0x33088; + continue; + case 0x33608: + r4 = 6 << 16; + r4 = r4 + 6908; + r5 = r17 + r0; + r31=0x3361c; + pc=0x21400; + run_21000(); return; + case 0x3361c: + pc=0x330d0; + continue; + case 0x33624: + r2= page[(r28+-31264)>>>2]; + r4 = r17 + r0; + pc=r2; + r31=0x33634; + return; + case 0x33634: + r4= page[(r29+128)>>>2]; + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x33648; + return; + case 0x33648: + r4 = r0 + 3; + r31=0x33654; + pc=0x29800; + run_29800(); return; + case 0x33654: + pc=0x330d0; + continue; + case 0x3365c: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 16; + if(r2 == r0) { + pc=0x33360; + continue; + } + r4 = 6 << 16; + r4 = r4 + 6768; + r31=0x3368c; + pc=0x21200; + run_21000(); return; + case 0x3368c: + pc=0x33360; + continue; + case 0x33694: + if(r20 == r0) { + pc=0x33768; + continue; + } + r2 = r0 + 1; + if(r20 == r2) { + pc=0x336cc; + continue; + } + case 0x336a8: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 8592; + r31=0x336bc; + pc=0x1fc00; + run_1f800(); return; + case 0x336bc: + pc=0x330d0; + continue; + case 0x336c4: + r31=0x336cc; + pc=0x24000; + run_24000(); return; + case 0x336cc: + r2 = 6 << 16; + r2 = r2 + 9072; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r0) { + pc=0x336a8; + continue; + } + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x336f8; + return; + case 0x336f8: + pc=0x330d0; + continue; + case 0x33700: + r31=0x33708; + pc=0x23000; + run_23000(); return; + case 0x33708: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x3371c; + pc=0x1a800; + run_1a800(); return; + case 0x3371c: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x33730; + pc=0x56fe0; + run_56800(); return; + case 0x33730: + r4 = r18 + r0; + r31=0x3373c; + pc=0x42e00; + run_42800(); return; + case 0x3373c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x33bc4; + run_33800(); return; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x33760; + pc=0x1fc00; + run_1f800(); return; + case 0x33760: + r31=0x33768; + pc=0x24000; + run_24000(); return; + case 0x33768: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8928; + pc=0x33470; + continue; + case 0x3377c: + r31=0x33784; + pc=0x23000; + run_23000(); return; + case 0x33784: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x33798; + pc=0x1a800; + run_1a800(); return; + case 0x33798: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x337ac; + pc=0x56fe0; + run_56800(); return; + case 0x337ac: + r4 = r18 + r0; + r31=0x337b8; + pc=0x42c00; + run_42800(); return; + case 0x337b8: + r31=0x337c0; + pc=0x24000; + run_24000(); return; + case 0x337c0: + r2 = 6 << 16; + r2 = r2 + 9024; + r17 = r17 + r2; + r5 = r16 & 768; + r2 = r0 + 256; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r17 = tmp; + if(r5 == r2) { + pc=0x33cec; + run_33800(); return; + } + r2 = (r5&0xffffffffL) < (257&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x33cb8; + run_33800(); return; + } + r2 = r0 + 512; + if(r5 == r2) { + pc=0x33cfc; + run_33800(); return; + } + r2 = r0 + 768; + if(r5 != r2) { + pc=0x33ccc; + run_33800(); return; + } + case 0x33800: + pc=0x33800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_33800() throws ExecutionException { /* 0x33800 - 0x34000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x33800: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+40)>>>2]; + case 0x33810: + r3= page[(r16+31424)>>>2]; + r3= page[(r3+4)>>>2]; + r3 = r3 & 2; + if(r3 == r0) { + pc=0x33848; + continue; + } + if(r19 != r0) { + pc=0x33840; + continue; + } + r19 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r19 = r2 - r19; + case 0x33840: + r2 = r17 << 8; + r17 = r2 | r17; + case 0x33848: + r4 = r19 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + r31=0x3385c; + pc=0x29a00; + run_29800(); return; + case 0x3385c: + r2= page[(r16+31424)>>>2]; + r2= page[(r2+4)>>>2]; + r2 = r2 & 4; + if(r2 == r0) { + pc=0x330d0; + run_33000(); return; + } + r3= page[(r29+120)>>>2]; + r2 = r0 + 1; + if(r3 != r2) { + pc=0x330d0; + run_33000(); return; + } + r2= page[(r29+128)>>>2]; + if(r2 == r0) { + pc=0x330d0; + run_33000(); return; + } + r2 = r0 + 139; + if(r17 == r2) { + pc=0x33d4c; + continue; + } + r2 = r0 + 171; + if(r17 != r2) { + pc=0x330d0; + run_33000(); return; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6720; + r31=0x338c4; + pc=0x1fc00; + run_1f800(); return; + case 0x338c4: + pc=0x330d0; + run_33000(); return; + case 0x338cc: + r31=0x338d4; + pc=0x24000; + run_24000(); return; + case 0x338d4: + pc=0x336a8; + run_33000(); return; + case 0x338dc: + r31=0x338e4; + pc=0x23000; + run_23000(); return; + case 0x338e4: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x338f8; + pc=0x1a800; + run_1a800(); return; + case 0x338f8: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x3390c; + pc=0x56fe0; + run_56800(); return; + case 0x3390c: + r4 = r18 + r0; + r31=0x33918; + pc=0x42c00; + run_42800(); return; + case 0x33918: + r31=0x33920; + pc=0x24000; + run_24000(); return; + case 0x33920: + r2 = 6 << 16; + r2 = r2 + 10240; + r17 = r17 + r2; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = tmp; + r4 = r29 + 144; + r6 = r16 & 768; + r31=0x33940; + pc=0x28e00; + run_28800(); return; + case 0x33940: + r4= page[(r29+144)>>>2]; + r5 = r18 + r0; + r6 = r2 + r0; + r31=0x33954; + pc=0x29a00; + run_29800(); return; + case 0x33954: + pc=0x330d0; + run_33000(); return; + case 0x3395c: + r31=0x33964; + pc=0x23000; + run_23000(); return; + case 0x33964: + r18 = r29 + 120; + r4 = r29 + 16; + r5 = r0 + r0; + r31=0x33978; + pc=0x1a800; + run_1a800(); return; + case 0x33978: + r4 = r18 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + r31=0x3398c; + pc=0x56fe0; + run_56800(); return; + case 0x3398c: + r4 = r18 + r0; + r31=0x33998; + pc=0x42e00; + run_42800(); return; + case 0x33998: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 93; + if(r3 == r2) { + pc=0x33be4; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x339bc; + pc=0x1fc00; + run_1f800(); return; + case 0x339bc: + r31=0x339c4; + pc=0x24000; + run_24000(); return; + case 0x339c4: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 10008; + case 0x339d0: + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + r6= page[(r2+0)>>>2]; + r5 = r18 + r0; + r31=0x339e8; + pc=0x29a00; + run_29800(); return; + case 0x339e8: + pc=0x330d0; + run_33000(); return; + case 0x339f0: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 8832; + pc=0x33470; + run_33000(); return; + case 0x33a04: + r31=0x33a0c; + pc=0x23000; + run_23000(); return; + case 0x33a0c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x334ac; + run_33000(); return; + case 0x33a18: + r31=0x33a20; + pc=0x23000; + run_23000(); return; + case 0x33a20: + r18 = r0 + r0; + r16 = r0 + 1; + pc=0x331c8; + run_33000(); return; + case 0x33a30: + r31=0x33a38; + pc=0x23000; + run_23000(); return; + case 0x33a38: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + pc=0x331b4; + run_33000(); return; + case 0x33a44: + r31=0x33a4c; + pc=0x23000; + run_23000(); return; + case 0x33a4c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + pc=0x333b0; + run_33000(); return; + case 0x33a58: + r2 = r0 + 4; + if(r19 == r2) { + pc=0x33b78; + continue; + } + r2 = (r19&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x33d30; + continue; + } + r2 = r0 + 36; + if(r19 == r2) { + pc=0x33b68; + continue; + } + r2 = r0 + 128; + if(r19 == r2) { + pc=0x33b58; + continue; + } + r2 = r0 + 8; + if(r19 != r2) { + pc=0x336a8; + run_33000(); return; + } + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x33ab0; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x3358c; + run_33000(); return; + case 0x33ab0: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x33ac0; + return; + case 0x33ac0: + r2 = 6 << 16; + r2 = r2 + 9300; + pc=0x3358c; + run_33000(); return; + case 0x33ad0: + r31=0x33ad8; + pc=0x23000; + run_23000(); return; + case 0x33ad8: + r16 = r18 + r0; + pc=0x33200; + run_33000(); return; + case 0x33ae4: + r16 = r16 & 2048; + if(r16 != r0) { + pc=0x33b00; + continue; + } + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x3358c; + run_33000(); return; + case 0x33b00: + r2= page[(r28+-31264)>>>2]; + r4 = r0 + 234; + pc=r2; + r31=0x33b10; + return; + case 0x33b10: + r2 = 6 << 16; + r2 = r2 + 9120; + pc=0x3358c; + run_33000(); return; + case 0x33b20: + r2 = 6 << 16; + r2 = r2 + 9180; + case 0x33b28: + r17 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r17+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = tmp; + r5 = r18 + r0; + r31=0x33b40; + pc=0x29a00; + run_29800(); return; + case 0x33b40: + r4= page[(r29+120)>>>2]; + r5 = r29 + 128; + r31=0x33b50; + pc=0x29000; + run_29000(); return; + case 0x33b50: + pc=0x330d0; + run_33000(); return; + case 0x33b58: + r2 = 6 << 16; + r2 = r2 + 9420; + pc=0x3358c; + run_33000(); return; + case 0x33b68: + r2 = 6 << 16; + r2 = r2 + 9600; + pc=0x3358c; + run_33000(); return; + case 0x33b78: + r2 = 6 << 16; + r2 = r2 + 9480; + pc=0x33b28; + continue; + case 0x33b88: + r31=0x33b90; + pc=0x29200; + run_29000(); return; + case 0x33b90: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r20 = r20 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x33d10; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x33bbc; + pc=0x1fc00; + run_1f800(); return; + case 0x33bbc: + pc=0x3341c; + run_33000(); return; + case 0x33bc4: + r31=0x33bcc; + pc=0x23000; + run_23000(); return; + case 0x33bcc: + r31=0x33bd4; + pc=0x29200; + run_29000(); return; + case 0x33bd4: + r2 = r2 << 7; + r20 = r2 | 8; + pc=0x3342c; + run_33000(); return; + case 0x33be4: + r31=0x33bec; + pc=0x23000; + run_23000(); return; + case 0x33bec: + r31=0x33bf4; + pc=0x29200; + run_29000(); return; + case 0x33bf4: + r2 = r2 << 7; + r19 = r2 | 8; + pc=0x33528; + run_33000(); return; + case 0x33c04: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + 9776; + pc=0x339d0; + continue; + case 0x33c18: + r31=0x33c20; + pc=0x29200; + run_29000(); return; + case 0x33c20: + r2 = r2 << 4; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r19 | r2; + r2 = r0 + 41; + if(r3 == r2) { + pc=0x33d20; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5020; + r31=0x33c4c; + pc=0x1fc00; + run_1f800(); return; + case 0x33c4c: + pc=0x33518; + run_33000(); return; + case 0x33c54: + r2 = 6 << 16; + r2 = r2 + 9240; + pc=0x3358c; + run_33000(); return; + case 0x33c64: + r2 = r0 + 384; + if(r19 == r2) { + pc=0x33c8c; + continue; + } + r2 = r0 + 388; + if(r19 != r2) { + pc=0x336a8; + run_33000(); return; + } + r2 = 6 << 16; + r2 = r2 + 9540; + pc=0x33b28; + continue; + case 0x33c8c: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + 9660; + r2 = r17 + r2; + r4= page[(r29+144)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r6 = tmp; + r5 = r18 + r0; + r31=0x33cb0; + pc=0x29a00; + run_29800(); return; + case 0x33cb0: + pc=0x330d0; + run_33000(); return; + case 0x33cb8: + if(r5 != r0) { + pc=0x33ccc; + continue; + } + r16 = 6 << 16; + pc=0x33848; + continue; + case 0x33ccc: + r4 = 6 << 16; + r4 = r4 + 6300; + r31=0x33cdc; + pc=0x21400; + run_21000(); return; + case 0x33cdc: + r16 = 6 << 16; + r2 = r0 + r0; + pc=0x33810; + continue; + case 0x33cec: + r17 = r17 << 8; + r16 = 6 << 16; + pc=0x33848; + continue; + case 0x33cfc: + r16 = 6 << 16; + r2 = r16 + 31424; + r2= page[(r2+36)>>>2]; + pc=0x33810; + continue; + case 0x33d10: + r31=0x33d18; + pc=0x23000; + run_23000(); return; + case 0x33d18: + pc=0x3341c; + run_33000(); return; + case 0x33d20: + r31=0x33d28; + pc=0x23000; + run_23000(); return; + case 0x33d28: + pc=0x33518; + run_33000(); return; + case 0x33d30: + if(r19 == r0) { + pc=0x339c4; + continue; + } + r2 = r0 + 2; + if(r19 != r2) { + pc=0x336a8; + run_33000(); return; + } + pc=0x33920; + continue; + case 0x33d4c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 6672; + r31=0x33d60; + pc=0x1fc00; + run_1f800(); return; + case 0x33d60: + pc=0x330d0; + run_33000(); return; + case 0x33e00: + r29 = r29 + -40; + page[(r29+24)>>>2] = r18; + r18 = 6 << 16; + page[(r29+16)>>>2] = r16; + r16 = r18 + 30184; + page[(r29+20)>>>2] = r17; + r2= page[(r16+24)>>>2]; + r17= page[(r16+4)>>>2]; + page[(r29+28)>>>2] = r19; + r2 = r2 < r17 ? 1 : 0; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + r19 = r4 + r0; + if(r2 != r0) { + pc=0x33f24; + continue; + } + r2 = r17 + r0; + case 0x33e40: + r3= page[(r16+8)>>>2]; + r3 = r2 < r3 ? 1 : 0; + if(r3 == r0) { + pc=0x33e58; + continue; + } + page[(r16+8)>>>2] = r2; + case 0x33e58: + r3= page[(r16+12)>>>2]; + r3 = r3 < r2 ? 1 : 0; + if(r3 == r0) { + pc=0x33e70; + continue; + } + page[(r16+12)>>>2] = r2; + case 0x33e70: + r3= page[(r28+-31340)>>>2]; + r5= page[(r3+0)>>>2]; + if(r5 == r0) { + pc=0x33f14; + continue; + } + r5= page[(r3+12)>>>2]; + if(r5 != r0) { + pc=0x33f08; + continue; + } + page[(r3+16)>>>2] = r2; + case 0x33e9c: + r4 = r19 << 24; + r6 = r5 + 1; + r4 = r4 >> 24; + page[(r3+12)>>>2] = r6; + r3 = r3 + r5; + addr=r3+1044; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x33eb4: + r3= page[(r18+30184)>>>2]; + r5 = r2 + 1; + r2 = r3 + r2; + addr=r16+48; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + page[(r16+4)>>>2] = r5; + r4 = r4 ^ r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2 = 6 << 16; + r2 = r2 + 31424; + r3= page[(r2+32)>>>2]; + r31= page[(r29+36)>>>2]; + r3 = r3 + 1; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + page[(r2+32)>>>2] = r3; + r29 = r29 + 40; + pc=r31; + return; + case 0x33f08: + r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x33e9c; + continue; + } + case 0x33f14: + r4 = r19 << 24; + r4 = r4 >> 24; + pc=0x33eb4; + continue; + case 0x33f24: + r20 = 6 << 16; + r20 = r20 + 31340; + r2= page[(r20+60)>>>2]; + r2 = r17 < r2 ? 1 : 0; + if(r2 == r0) { + pc=0x33fd8; + continue; + } + case 0x33f40: + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x33f60; + continue; + } + r2= page[(r16+4)>>>2]; + pc=0x33e40; + continue; + case 0x33f60: + r4= page[(r20+40)>>>2]; + r5 = 6 << 16; + r5 = r5 + 10324; + r31=0x33f74; + pc=0x1fc00; + run_1f800(); return; + case 0x33f74: + r4 = r17 + 1; + r3= page[(r16+32)>>>2]; + r17 = r17 + 2; + page[(r16+40)>>>2] = r17; + r2= page[(r3+8)>>>2]; + r5 = r4 < r2 ? 1 : 0; + if(r5 != r0) { + pc=0x33fb4; + continue; + } + case 0x33f98: + r3= page[(r3+0)>>>2]; + r2= page[(r3+8)>>>2]; + r5 = r4 < r2 ? 1 : 0; + if(r5 == r0) { + pc=0x33f98; + continue; + } + case 0x33fb4: + r4 = 6 << 16; + r4 = r4 + 30216; + if(r3 == r4) { + pc=0x33ff4; + continue; + } + r2 = r2 + -1; + page[(r16+24)>>>2] = r2; + case 0x33fcc: + r2= page[(r16+4)>>>2]; + pc=0x33e40; + continue; + case 0x33fd8: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 10300; + r31=0x33fec; + pc=0x1fc00; + run_1f800(); return; + case 0x33fec: + pc=0x33f40; + continue; + case 0x33ff4: + r2= page[(r20+60)>>>2]; + r2 = r2 + -1; + case 0x34000: + pc=0x34000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_34000() throws ExecutionException { /* 0x34000 - 0x34800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x34000: + page[(r16+24)>>>2] = r2; + pc=0x33fcc; + run_33800(); return; + case 0x34200: + r29 = r29 + -40; + r5 = 6 << 16; + r5 = r5 + 5060; + page[(r29+28)>>>2] = r19; + r19 = r4 + r0; + r4 = r0 + -2; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + r18 = 6 << 16; + r31=0x34238; + pc=0x1fc00; + run_1f800(); return; + case 0x34238: + r2 = 3 << 16; + r2 = r2 + 15872; + r16 = r18 + 30184; + page[(r28+-31264)>>>2] = r2; + r17= page[(r16+4)>>>2]; + r2= page[(r16+24)>>>2]; + r2 = r2 < r17 ? 1 : 0; + if(r2 != r0) { + pc=0x34348; + continue; + } + r2 = r17 + r0; + case 0x34264: + r3= page[(r16+8)>>>2]; + r3 = r2 < r3 ? 1 : 0; + if(r3 == r0) { + pc=0x3427c; + continue; + } + page[(r16+8)>>>2] = r2; + case 0x3427c: + r3= page[(r16+12)>>>2]; + r3 = r3 < r2 ? 1 : 0; + if(r3 == r0) { + pc=0x34294; + continue; + } + page[(r16+12)>>>2] = r2; + case 0x34294: + r3= page[(r28+-31340)>>>2]; + r4= page[(r3+0)>>>2]; + if(r4 == r0) { + pc=0x34338; + continue; + } + r5= page[(r3+12)>>>2]; + if(r5 != r0) { + pc=0x3432c; + continue; + } + page[(r3+16)>>>2] = r2; + case 0x342c0: + r4 = r19 << 24; + r6 = r5 + 1; + r4 = r4 >> 24; + page[(r3+12)>>>2] = r6; + r3 = r3 + r5; + addr=r3+1044; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x342d8: + r3= page[(r18+30184)>>>2]; + r5 = r2 + 1; + r2 = r3 + r2; + addr=r16+48; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + page[(r16+4)>>>2] = r5; + r4 = r4 ^ r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2 = 6 << 16; + r2 = r2 + 31424; + r3= page[(r2+32)>>>2]; + r31= page[(r29+36)>>>2]; + r3 = r3 + 1; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + page[(r2+32)>>>2] = r3; + r29 = r29 + 40; + pc=r31; + return; + case 0x3432c: + r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x342c0; + continue; + } + case 0x34338: + r4 = r19 << 24; + r4 = r4 >> 24; + pc=0x342d8; + continue; + case 0x34348: + r20 = 6 << 16; + r20 = r20 + 31340; + r2= page[(r20+60)>>>2]; + r2 = r17 < r2 ? 1 : 0; + if(r2 == r0) { + pc=0x343fc; + continue; + } + case 0x34364: + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x34384; + continue; + } + r2= page[(r16+4)>>>2]; + pc=0x34264; + continue; + case 0x34384: + r4= page[(r20+40)>>>2]; + r5 = 6 << 16; + r5 = r5 + 10324; + r31=0x34398; + pc=0x1fc00; + run_1f800(); return; + case 0x34398: + r5 = r17 + 1; + r3= page[(r16+32)>>>2]; + r17 = r17 + 2; + page[(r16+40)>>>2] = r17; + r2= page[(r3+8)>>>2]; + r4 = r5 < r2 ? 1 : 0; + if(r4 != r0) { + pc=0x343d8; + continue; + } + case 0x343bc: + r3= page[(r3+0)>>>2]; + r2= page[(r3+8)>>>2]; + r4 = r5 < r2 ? 1 : 0; + if(r4 == r0) { + pc=0x343bc; + continue; + } + case 0x343d8: + r4 = 6 << 16; + r4 = r4 + 30216; + if(r3 == r4) { + pc=0x34418; + continue; + } + r2 = r2 + -1; + page[(r16+24)>>>2] = r2; + case 0x343f0: + r2= page[(r16+4)>>>2]; + pc=0x34264; + continue; + case 0x343fc: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 10300; + r31=0x34410; + pc=0x1fc00; + run_1f800(); return; + case 0x34410: + pc=0x34364; + continue; + case 0x34418: + r2= page[(r20+60)>>>2]; + r2 = r2 + -1; + page[(r16+24)>>>2] = r2; + pc=0x343f0; + continue; + case 0x34600: + r29 = r29 + -40; + page[(r29+28)>>>2] = r18; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r19; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r18 = r4 + r0; + if(r4 <= 0) { + pc=0x346a0; + continue; + } + r2 = 3 << 16; + r3= page[(r28+-31264)>>>2]; + r2 = r2 + 16896; + if(r3 == r2) { + pc=0x347a0; + continue; + } + case 0x34638: + r16 = 6 << 16; + r16 = r16 + 30184; + r3= page[(r16+4)>>>2]; + r4= page[(r16+24)>>>2]; + r17 = r3 + r18; + r2 = r17 + -1; + r4 = r4 < r2 ? 1 : 0; + if(r4 != r0) { + pc=0x346cc; + continue; + } + case 0x3465c: + r4= page[(r16+8)>>>2]; + r4 = r3 < r4 ? 1 : 0; + if(r4 == r0) { + pc=0x34674; + continue; + } + page[(r16+8)>>>2] = r3; + case 0x34674: + r3= page[(r16+12)>>>2]; + r3 = r3 < r2 ? 1 : 0; + if(r3 != r0) { + pc=0x346c0; + continue; + } + case 0x34688: + r2 = 6 << 16; + r2 = r2 + 31424; + r3= page[(r2+32)>>>2]; + page[(r16+4)>>>2] = r17; + r18 = r3 + r18; + page[(r2+32)>>>2] = r18; + case 0x346a0: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 40; + pc=r31; + return; + case 0x346c0: + page[(r16+12)>>>2] = r2; + pc=0x34688; + continue; + case 0x346cc: + r19 = 6 << 16; + r19 = r19 + 31340; + r3= page[(r19+60)>>>2]; + r2 = r2 < r3 ? 1 : 0; + if(r2 == r0) { + pc=0x34784; + continue; + } + case 0x346e8: + r2 = 6 << 16; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x34714; + continue; + } + case 0x346fc: + r3= page[(r16+4)>>>2]; + r17 = r18 + r3; + r2 = r17 + -1; + pc=0x3465c; + continue; + case 0x34714: + r4= page[(r19+40)>>>2]; + r5 = 6 << 16; + r5 = r5 + 10324; + r31=0x34728; + pc=0x1fc00; + run_1f800(); return; + case 0x34728: + r3 = r17 + 1; + r2= page[(r16+32)>>>2]; + page[(r16+40)>>>2] = r3; + r3= page[(r2+8)>>>2]; + r4 = r17 < r3 ? 1 : 0; + if(r4 != r0) { + pc=0x34764; + continue; + } + case 0x34748: + r2= page[(r2+0)>>>2]; + r3= page[(r2+8)>>>2]; + r4 = r17 < r3 ? 1 : 0; + if(r4 == r0) { + pc=0x34748; + continue; + } + case 0x34764: + r4 = 6 << 16; + r4 = r4 + 30216; + if(r2 == r4) { + pc=0x347b8; + continue; + } + r3 = r3 + -1; + page[(r16+24)>>>2] = r3; + pc=0x346fc; + continue; + case 0x34784: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + 10300; + r31=0x34798; + pc=0x1fc00; + run_1f800(); return; + case 0x34798: + pc=0x346e8; + continue; + case 0x347a0: + r4 = r0 + r0; + r31=0x347ac; + pc=0x34200; + continue; + case 0x347ac: + r18 = r18 + -1; + pc=0x34638; + continue; + case 0x347b8: + r2= page[(r19+60)>>>2]; + r3= page[(r16+4)>>>2]; + r2 = r2 + -1; + r17 = r18 + r3; + page[(r16+24)>>>2] = r2; + r2 = r17 + -1; + pc=0x3465c; + continue; + case 0x34800: + pc=0x34800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_34800() throws ExecutionException { /* 0x34800 - 0x35000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x34800: + r2 = 6 << 16; + r3 = r2 + 30184; + r6= page[(r3+16)>>>2]; r29 = r29 + -24; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2ba3c; + r5 = r4 << 24; + r5 = r5 >> 24; + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; + if(r6 != r0) { + pc=0x3488c; + continue; + } + r4= page[(r2+30184)>>>2]; + r2 = 6 << 16; + r6= page[(r2+31400)>>>2]; + r16 = r0 + 1; + page[(r3+16)>>>2] = r16; + r31=0x34844; + pc=0x56ff0; + run_56800(); return; + case 0x34844: + r3 = 6 << 16; + r3 = r3 + 31320; + r2= page[(r3+4)>>>2]; + if(r2 != r0) { + pc=0x34874; + continue; + } + r31= page[(r29+20)>>>2]; + page[(r3+4)>>>2] = r16; + r16= page[(r29+16)>>>2]; + r29 = r29 + 24; + pc=r31; + return; + case 0x34874: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r2 = r0 + r0; + r29 = r29 + 24; + pc=r31; + return; + case 0x3488c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 10372; + r31=0x348a0; + pc=0x1fc00; + run_1f800(); return; + case 0x348a0: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + r2 = r0 + 1; + r29 = r29 + 24; + pc=r31; + return; + case 0x34a00: + r2 = 3 << 16; + r3= page[(r28+-31264)>>>2]; + r2 = r2 + 16896; + if(r3 == r2) { + pc=0x34a34; + continue; + } + r2 = r0 + 1; + page[(r28+-31312)>>>2] = r2; + r2 = 6 << 16; + r2= page[(r2+30188)>>>2]; + page[(r28+-31316)>>>2] = r2; + pc=r31; + return; + case 0x34a34: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5060; + pc=0x1fc00; + run_1f800(); return; + case 0x34c00: + r2 = 3 << 16; + r3= page[(r28+-31264)>>>2]; + r2 = r2 + 16896; + if(r3 == r2) { + pc=0x34c34; + continue; + } + r2 = r0 + 1; + page[(r28+-31320)>>>2] = r2; + r2 = 6 << 16; + r2= page[(r2+30188)>>>2]; + page[(r28+-31324)>>>2] = r2; + pc=r31; + return; + case 0x34c34: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 5060; + pc=0x1fc00; + run_1f800(); return; + case 0x34e00: + r29 = r29 + -32; + r4 = 6 << 16; + r6 = 6 << 16; + r4 = r4 + 22548; + r5 = r29 + 16; + r6 = r6 + 17104; + page[(r29+28)>>>2] = r31; + r31=0x34e24; + pc=0x42400; + run_42000(); return; + case 0x34e24: + if(r2 == r0) { + pc=0x34e48; + continue; + } + r2= page[(r29+16)>>>2]; + r31= page[(r29+28)>>>2]; + page[(r28+-31308)>>>2] = r2; + r2 = r0 + r0; + r29 = r29 + 32; + pc=r31; + return; + case 0x34e48: + r31= page[(r29+28)>>>2]; + r2 = r0 + 1; + r29 = r29 + 32; + pc=r31; + return; + case 0x35000: + pc=0x35000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_35000() throws ExecutionException { /* 0x35000 - 0x35800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x35000: + r2= page[(r28+-31308)>>>2]; + if(r2 != r0) { + pc=0x35024; + continue; + } + r2 = r0 + 2; + page[(r28+-31308)>>>2] = r2; + r2 = r0 + 1; + pc=r31; + return; + case 0x35024: + r2 = r0 + r0; + pc=r31; + return; + case 0x35200: + r2= page[(r28+-31404)>>>2]; + r29 = r29 + -24; + page[(r29+20)>>>2] = r31; + if(r2 == r0) { + pc=0x3523c; 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]; + r5 = r5 + 10400; + r31=0x35228; + pc=0x1fc00; + run_1f800(); return; + case 0x35228: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2ba3c: + case 0x3523c: 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; + r4 = r4 + 17104; + r31=0x3524c; + pc=0x1c200; + run_1c000(); return; + case 0x3524c: + r31= page[(r29+20)>>>2]; + page[(r28+-31404)>>>2] = r2; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x35400: 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]; + page[(r29+24)>>>2] = r17; r17 = 6 << 16; + r17 = r17 + 31340; + r4= page[(r17+60)>>>2]; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r31=0x35424; + pc=0x20200; + run_20000(); return; + case 0x35424: + r5= page[(r17+64)>>>2]; + r16 = 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; + page[(r16+30184)>>>2] = r2; + if(r5 == r3) { + pc=0x35488; 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]; + r3 = r0 + 1; + case 0x35448: + r6= page[(r17+60)>>>2]; + r16 = r16 + 30184; 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]; + page[(r16+16)>>>2] = r3; + r31=0x35460; + pc=0x56ff0; + run_56800(); return; + case 0x35460: + r31= page[(r29+28)>>>2]; 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]; + r2 = r2 + 30216; + r17= page[(r29+24)>>>2]; + page[(r16+32)>>>2] = r2; + page[(r16+36)>>>2] = r2; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2bc88: - writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r0; + case 0x35488: r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2bc50; + r3 = r0 + r0; + pc=0x35448; 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: + case 0x35600: r29 = r29 + -56; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + page[(r29+40)>>>2] = 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]; + r2 = r19 + 30184; + page[(r29+28)>>>2] = r16; + r3= page[(r2+12)>>>2]; 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; + r4= page[(r2+8)>>>2]; + r2= page[(r28+-31312)>>>2]; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r21; + page[(r29+44)>>>2] = r20; + page[(r29+36)>>>2] = r18; + page[(r29+32)>>>2] = r17; + if(r2 == r0) { + pc=0x35644; 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; + r4= page[(r28+-31316)>>>2]; + case 0x35644: + r2= page[(r28+-31320)>>>2]; + if(r2 != r0) { + pc=0x3588c; + run_35800(); return; } r2 = 6 << 16; - r2 = r2 + -10308; - r17 = readPages[(r2 + 72) >>> 12][((r2 + 72) >>> 2) & 0x3ff]; + r2 = r2 + 31340; + r17= page[(r2+72)>>>2]; r6 = r3 + 1; r3 = r0 + -1; - if (r17 == r3) { - /* Next insn is delay slot */ - pc = 0x2c0a8; - run_2c000(); - return; + if(r17 == r3) { + pc=0x358a8; + run_35800(); return; } - case 0x2be70: - r5 = readPages[(r2 + 76) >>> 12][((r2 + 76) >>> 2) & 0x3ff]; + case 0x35670: + r5= page[(r2+76)>>>2]; r3 = r0 + -1; - if (r5 == r3) { - /* Next insn is delay slot */ - pc = 0x2c0bc; - run_2c000(); - return; + if(r5 == r3) { + pc=0x358bc; + run_35800(); return; } - case 0x2be80: + case 0x35680: r3 = r17 < r5 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x2bf64; + if(r3 == r0) { + pc=0x35764; continue; } - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2= page[(r2+4)>>>2]; r18 = r5 - r17; r21 = r17 + r0; r20 = r18 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2bf80; + if(r2 != r0) { + pc=0x35780; continue; } - case 0x2bea4: - r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; + case 0x356a4: + r2= page[(r28+-31308)>>>2]; r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x2bfb4; + if(r2 == r3) { + pc=0x357b4; continue; } - case 0x2beb4: + case 0x356b4: r3 = r0 + 2; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x2bf28; + if(r2 != r3) { + pc=0x35728; continue; } - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2= page[(r16+8)>>>2]; 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; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x35a60; + run_35800(); 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= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + case 0x356ec: r2 = r2 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - case 0x2bef4: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r2; + case 0x356f4: + r2= page[(r16+8)>>>2]; 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; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x35a18; + run_35800(); return; } - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; 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: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + case 0x35720: 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]; + page[(r16+0)>>>2] = r2; + case 0x35728: + r4= page[(r19+30184)>>>2]; + r31= page[(r29+52)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; 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= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; r7 = r16 + r0; - r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16= page[(r29+28)>>>2]; r6 = r0 + 1; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = 0x43e00; - run_43e00(); - return; - case 0x2bf64: - r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + pc=0x4d600; + run_4d000(); return; + case 0x35764: + r2= page[(r2+4)>>>2]; r20 = r0 + r0; r21 = r0 + r0; r18 = r0 + r0; r17 = r0 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2bea4; + if(r2 == r0) { + pc=0x356a4; continue; } - case 0x2bf80: + case 0x35780: r2 = r17 + r18; r4 = 6 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - r4 = r4 + -31212; + page[(r29+16)>>>2] = r2; + r4 = r4 + 10428; r5 = r18 + r0; r6 = r18 + r0; r7 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x2bfa4; - pc = 0x45a00; - run_45a00(); - return; - case 0x2bfa4: - r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; + r31=0x357a4; + pc=0x4f200; + run_4f000(); return; + case 0x357a4: + r2= page[(r28+-31308)>>>2]; r3 = r0 + 1; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x2beb4; + if(r2 != r3) { + pc=0x356b4; continue; } - case 0x2bfb4: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + case 0x357b4: + r2= page[(r16+8)>>>2]; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x2c1c4; - run_2c000(); - return; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x359c4; + run_35800(); 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 0x2bfe0: + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + case 0x357e0: r2 = r2 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - case 0x2bfe8: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r2; + case 0x357e8: + r2= page[(r16+8)>>>2]; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x2c170; - run_2c000(); - return; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x35970; + run_35800(); return; } - case 0x2c000: - pc = 0x2c000; + case 0x35800: + pc=0x35800; 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_35800() throws ExecutionException { /* 0x35800 - 0x36000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2c000: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x35800: + r2= page[(r16+0)>>>2]; 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: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + case 0x35814: r2 = r2 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - case 0x2c01c: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r2; + case 0x3581c: + r2= page[(r16+8)>>>2]; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x2c11c; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x3591c; 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))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); - writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - case 0x2c048: + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + case 0x35848: r2 = r2 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - case 0x2c050: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r2; + case 0x35850: + r2= page[(r16+8)>>>2]; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x2c0c8; + page[(r16+8)>>>2] = r2; + if(r2 < 0) { + pc=0x358c8; continue; } - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; 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]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; r2 = r2 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x2bf28; - run_2be00(); - return; - case 0x2c08c: + page[(r16+0)>>>2] = r2; + pc=0x35728; + run_35000(); return; + case 0x3588c: r2 = 6 << 16; - r2 = r2 + -10308; - r17 = readPages[(r2 + 72) >>> 12][((r2 + 72) >>> 2) & 0x3ff]; + r2 = r2 + 31340; + r17= page[(r2+72)>>>2]; 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; + r6= page[(r28+-31324)>>>2]; + if(r17 != r3) { + pc=0x35670; + run_35000(); return; } - case 0x2c0a8: - r5 = readPages[(r2 + 76) >>> 12][((r2 + 76) >>> 2) & 0x3ff]; + case 0x358a8: + r5= page[(r2+76)>>>2]; r3 = r0 + -1; r17 = r4 + r0; - if (r5 != r3) { - /* Next insn is delay slot */ - pc = 0x2be80; - run_2be00(); - return; + if(r5 != r3) { + pc=0x35680; + run_35000(); return; } - case 0x2c0bc: + case 0x358bc: r5 = r6 + r0; - /* Next insn is delay slot */ - pc = 0x2be80; - run_2be00(); - return; - case 0x2c0c8: - r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + pc=0x35680; + run_35000(); return; + case 0x358c8: + r3= page[(r16+24)>>>2]; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c324; - run_2c200(); - return; + if(r2 != r0) { + pc=0x35b24; + continue; } - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; 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]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; r3 = r0 + 10; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x2bf20; - run_2be00(); - return; + if(r4 != r3) { + pc=0x35720; + run_35000(); return; } - case 0x2c100: - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + case 0x35900: + r4= page[(r28+-31512)>>>2]; r5 = r0 + 10; r6 = r16 + r0; - /* 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]; + r31=0x35914; + pc=0x56a00; + run_56800(); return; + case 0x35914: + pc=0x35728; + run_35000(); return; + case 0x3591c: + r3= page[(r16+24)>>>2]; 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; + if(r2 != r0) { + pc=0x35ad0; continue; } - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; + r3 = r0 + 10; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 != r3) { + pc=0x35848; + continue; + } + r4= page[(r28+-31512)>>>2]; 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; + r31=0x35968; + pc=0x56a00; + run_56800(); return; + case 0x35968: + pc=0x35850; continue; - case 0x2c170: - r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + case 0x35970: + r3= page[(r16+24)>>>2]; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c2b4; - 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]; - 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 = 0x2c014; + if(r2 != r0) { + pc=0x35ab4; continue; } - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; + r17 = r17 >> 8; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + r3 = r0 + 10; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 != r3) { + pc=0x35814; + continue; + } + r4= page[(r28+-31512)>>>2]; r5 = r0 + 10; r6 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x2c1bc; - pc = 0x4d200; - run_4d200(); - return; - case 0x2c1bc: - /* Next insn is delay slot */ - pc = 0x2c01c; + r31=0x359bc; + pc=0x56a00; + run_56800(); return; + case 0x359bc: + pc=0x3581c; continue; - case 0x2c1c4: - r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + case 0x359c4: + r3= page[(r16+24)>>>2]; 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_2c200() throws ExecutionException { /* 0x2c200 - 0x2c400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x2c200: - r5 = r0 + 10; - r6 = r16 + r0; - /* 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; + if(r2 != r0) { + pc=0x35aec; 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]; + r2= page[(r16+0)>>>2]; r3 = r0 + 10; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - if (r4 == r3) { - /* Next insn is delay slot */ - pc = 0x2c100; - run_2c000(); - return; + if(r4 != r3) { + pc=0x357e0; + run_35000(); return; + } + r4= page[(r28+-31512)>>>2]; + r5 = r0 + 10; + r6 = r16 + r0; + r31=0x35a10; + pc=0x56a00; + run_56800(); return; + case 0x35a10: + pc=0x357e8; + run_35000(); return; + case 0x35a18: + r3= page[(r16+24)>>>2]; + r2 = r2 < r3 ? 1 : 0; + if(r2 != r0) { + pc=0x35b40; + continue; + } + r2= page[(r16+0)>>>2]; + r17 = r17 >> 8; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + r3 = r0 + 10; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + if(r4 == r3) { + pc=0x35900; + continue; } 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]; + page[(r16+0)>>>2] = r2; + pc=0x35728; + run_35000(); return; + case 0x35a60: + r3= page[(r16+24)>>>2]; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c308; + if(r2 != r0) { + pc=0x35b08; continue; } - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+0)>>>2]; 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; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x2beec; - run_2be00(); - return; + if(r4 != r3) { + pc=0x356ec; + run_35000(); return; } - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; 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]; + r31=0x35aac; + pc=0x56a00; + run_56800(); return; + case 0x35aac: + pc=0x356f4; + run_35000(); return; + case 0x35ab4: + r4= page[(r28+-31512)>>>2]; r5 = r17 >> 8; r6 = r16 + r0; - /* 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]; + r31=0x35ac8; + pc=0x56a00; + run_56800(); return; + case 0x35ac8: + pc=0x3581c; + continue; + case 0x35ad0: + r4= page[(r28+-31512)>>>2]; r5 = r18 & 255; r6 = r16 + r0; - /* 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]; + r31=0x35ae4; + pc=0x56a00; + run_56800(); return; + case 0x35ae4: + pc=0x35850; + continue; + case 0x35aec: + r4= page[(r28+-31512)>>>2]; r5 = r17 & 255; r6 = r16 + r0; - /* 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]; + r31=0x35b00; + pc=0x56a00; + run_56800(); return; + case 0x35b00: + pc=0x357e8; + run_35000(); return; + case 0x35b08: + r4= page[(r28+-31512)>>>2]; r5 = r17 & 255; r6 = r16 + r0; - /* 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]; + r31=0x35b1c; + pc=0x56a00; + run_56800(); return; + case 0x35b1c: + pc=0x356f4; + run_35000(); return; + case 0x35b24: + r4= page[(r28+-31512)>>>2]; r5 = r18 >> 8; r6 = r16 + r0; - /* 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]; + r31=0x35b38; + pc=0x56a00; + run_56800(); return; + case 0x35b38: + pc=0x35728; + run_35000(); return; + case 0x35b40: + r4= page[(r28+-31512)>>>2]; r5 = r17 >> 8; r6 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x2c354; - pc = 0x4d200; - run_4d200(); - return; - 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_2c400() throws ExecutionException { /* 0x2c400 - 0x2c600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x2c400: + r31=0x35b54; + pc=0x56a00; + run_56800(); return; + case 0x35b54: + pc=0x35728; + run_35000(); return; + case 0x35c00: r2 = 6 << 16; - r3 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; + r3= page[(r2+31400)>>>2]; r4 = 3 << 16; - r4 = r4 + -21504; + r4 = r4 + 16896; r2 = 6 << 16; - r2 = r2 + -11464; + r2 = r2 + 30184; r3 = r3 + -1; - writePages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff] = r4; + page[(r28+-31264)>>>2] = 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; - 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; + page[(r2+8)>>>2] = r3; + page[(r2+12)>>>2] = r0; + page[(r2+4)>>>2] = r0; + page[(r2+20)>>>2] = r4; + page[(r2+24)>>>2] = r3; + page[(r2+28)>>>2] = r0; + addr=r2+48; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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; + r2 = r2 + 31424; + page[(r2+8)>>>2] = r0; + page[(r2+12)>>>2] = r0; + page[(r2+16)>>>2] = r0; + page[(r2+32)>>>2] = r0; + page[(r28+-31304)>>>2] = r0; + 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: + case 0x35e00: r2 = 6 << 16; - r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c684; + r2= page[(r2+31320)>>>2]; + if(r2 != r0) { + pc=0x35e84; continue; } r29 = r29 + -48; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + page[(r29+32)>>>2] = 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]; + r17 = r17 + 30184; + page[(r29+36)>>>2] = r18; + r18= page[(r17+20)>>>2]; r2 = r0 + -1; - 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; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r19; + page[(r29+28)>>>2] = r16; + if(r18 == r2) { + pc=0x35e6c; continue; } - r2 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; + r2= page[(r17+28)>>>2]; r2 = r2 & 2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c66c; + if(r2 != r0) { + pc=0x35e6c; continue; } - r19 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r19= page[(r17+4)>>>2]; r19 = r19 - r18; - if (r19 != r0) { - /* Next insn is delay slot */ - pc = 0x2c68c; + if(r19 != r0) { + pc=0x35e8c; continue; } - 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]; + case 0x35e6c: + r31= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 48; - case 0x2c684: - /* Next insn is delay slot */ - pc = r31; + case 0x35e84: + pc=r31; return; - case 0x2c68c: + case 0x35e8c: r4 = r0 + 16; - 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; + r16= page[(r17+32)>>>2]; + r31=0x35e9c; + pc=0x20200; + run_20000(); return; + case 0x35e9c: + page[(r2+8)>>>2] = r18; + page[(r2+12)>>>2] = r19; + page[(r17+40)>>>2] = r18; r3 = r19 + 1; - 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]; + r6= page[(r2+8)>>>2]; + page[(r17+44)>>>2] = r3; + case 0x35eb4: + r3= page[(r16+8)>>>2]; r4 = r3 < r6 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x2c6e8; + if(r4 != r0) { + pc=0x35ee8; continue; } - if (r6 != r3) { - /* Next insn is delay slot */ - pc = 0x2c6f4; + if(r6 != r3) { + pc=0x35ef4; continue; } - r4 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; - r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4= page[(r16+12)>>>2]; + r3= page[(r2+12)>>>2]; r3 = r4 < r3 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x2c6f4; + if(r3 == r0) { + pc=0x35ef4; continue; } - case 0x2c6e8: - r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x2c6b4; + case 0x35ee8: + r16= page[(r16+0)>>>2]; + pc=0x35eb4; continue; - 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; + case 0x35ef4: + r3= page[(r16+4)>>>2]; + page[(r2+0)>>>2] = r16; + page[(r2+4)>>>2] = r3; + page[(r16+4)>>>2] = r2; + r3= page[(r2+4)>>>2]; + page[(r3+0)>>>2] = r2; r2 = 6 << 16; - r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; + r2= page[(r2+31344)>>>2]; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2c66c; + if(r2 != r0) { + pc=0x35e6c; continue; } - r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; - r7 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r2= page[(r17+4)>>>2]; + r7= page[(r17+20)>>>2]; r4 = 6 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - r4 = r4 + -31152; + page[(r29+16)>>>2] = r2; + r4 = r4 + 10488; r5 = r19 + r0; r6 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x2c74c; - pc = 0x45a00; - run_45a00(); - return; - case 0x2c74c: - /* Next insn is delay slot */ - pc = 0x2c66c; + r31=0x35f4c; + pc=0x4f200; + run_4f000(); return; + case 0x35f4c: + pc=0x35e6c; continue; - case 0x2c800: - pc = 0x2c800; + case 0x36000: + pc=0x36000; 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_2c800() throws ExecutionException { /* 0x2c800 - 0x2ca00 */ + private final void run_36000() throws ExecutionException { /* 0x36000 - 0x36800 */ int addr, tmp; - 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; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + for(;;) { + switch(pc) { + case 0x36000: + r29 = r29 + -56; + page[(r29+36)>>>2] = r19; + r19 = 6 << 16; + r2= page[(r19+31320)>>>2]; + page[(r29+40)>>>2] = r20; + page[(r29+32)>>>2] = r18; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; + r20 = r4 + r0; + r18 = r5 + r0; + if(r2 != r0) { + pc=0x36134; + continue; + } + r17 = 6 << 16; + r17 = r17 + 30184; + r21= page[(r17+20)>>>2]; + r2 = r0 + -1; + if(r21 == r2) { + pc=0x36178; + continue; + } + r2= page[(r17+28)>>>2]; + r4= page[(r17+4)>>>2]; + r2 = r2 & 2; + if(r2 != r0) { + pc=0x36074; + continue; + } + r22 = r4 - r21; + if(r22 != r0) { + pc=0x36184; + continue; + } + case 0x36074: 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; + r16 = r16 + 31340; + r2= page[(r16+60)>>>2]; + r20 = r20 + r4; r2 = r2 + -1; - r4 = r18 & r2; + r4 = r20 & r2; r2 = 3 << 16; - r2 = r2 + -22016; - writePages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff] = r2; + page[(r17+28)>>>2] = r18; + r2 = r2 + 15872; + r18 = r18 & 1; + page[(r17+4)>>>2] = r4; + page[(r17+20)>>>2] = r4; + page[(r28+-31264)>>>2] = r2; + if(r18 == r0) { + pc=0x36288; + continue; + } + case 0x360b0: + r2= page[(r17+32)>>>2]; + r7 = r4 + 1; + r5 = r4 + r0; + case 0x360bc: + page[(r17+40)>>>2] = r7; + r3= page[(r2+8)>>>2]; + r4 = r5 < r3 ? 1 : 0; + if(r4 != r0) { + pc=0x360f0; + continue; + } + case 0x360d4: + r2= page[(r2+0)>>>2]; + r3= page[(r2+8)>>>2]; + r4 = r5 < r3 ? 1 : 0; + if(r4 == r0) { + pc=0x360d4; + continue; + } + case 0x360f0: + r4 = 6 << 16; + r4 = r4 + 30216; + if(r2 == r4) { + pc=0x3633c; + continue; + } + r3 = r3 + -1; + page[(r17+24)>>>2] = r3; + case 0x36108: + r31= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r29 = r29 + 56; + pc=r31; + return; + case 0x36134: 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 = 0x2c8b4; - continue; - } - 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 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; - 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; + r2 = r2 + 30184; + r3= page[(r2+4)>>>2]; + page[(r2+28)>>>2] = r5; + r20 = r4 + r3; + r3 = 6 << 16; + r3= page[(r3+31400)>>>2]; + r3 = r3 + -1; + r20 = r20 & r3; + page[(r2+4)>>>2] = r20; + page[(r2+20)>>>2] = r20; + r2 = 3 << 16; + r2 = r2 + 15872; + page[(r28+-31264)>>>2] = r2; + pc=0x36108; 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; + case 0x36178: + r4= page[(r17+4)>>>2]; + pc=0x36074; + continue; + case 0x36184: + r4 = r0 + 16; + r16= page[(r17+32)>>>2]; + r31=0x36194; + pc=0x20200; + run_20000(); return; + case 0x36194: + page[(r2+8)>>>2] = r21; + page[(r2+12)>>>2] = r22; + page[(r17+40)>>>2] = r21; + r3 = r22 + 1; + r7= page[(r2+8)>>>2]; + page[(r17+44)>>>2] = r3; + case 0x361ac: + r3= page[(r16+8)>>>2]; + r6 = r3 < r7 ? 1 : 0; + if(r6 != r0) { + pc=0x361e0; continue; } - case 0x2c900: - r5 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + if(r3 != r7) { + pc=0x361ec; + continue; + } + r6= page[(r16+12)>>>2]; + r3= page[(r2+12)>>>2]; + r3 = r6 < r3 ? 1 : 0; + if(r3 == r0) { + pc=0x361ec; + continue; + } + case 0x361e0: + r16= page[(r16+0)>>>2]; + pc=0x361ac; + continue; + case 0x361ec: + r3= page[(r16+4)>>>2]; + page[(r2+0)>>>2] = r16; + page[(r2+4)>>>2] = r3; + page[(r16+4)>>>2] = r2; + r3= page[(r2+4)>>>2]; + r16 = 6 << 16; + r16 = r16 + 31340; + page[(r3+0)>>>2] = r2; + r2= page[(r16+4)>>>2]; + r2 = r2 < 2 ? 1 : 0; + if(r2 != r0) { + pc=0x36244; + continue; + } + r2= page[(r17+4)>>>2]; + r4 = 6 << 16; + r7= page[(r17+20)>>>2]; + page[(r29+16)>>>2] = r2; + r4 = r4 + 10488; + r5 = r22 + r0; + r6 = r22 + r0; + r31=0x36244; + pc=0x4f200; + run_4f000(); return; + case 0x36244: + r4= page[(r17+4)>>>2]; + r2= page[(r16+60)>>>2]; + r20 = r20 + r4; + r2 = r2 + -1; + r4 = r20 & r2; + r3= page[(r19+31320)>>>2]; + r2 = 3 << 16; + r2 = r2 + 15872; + page[(r17+4)>>>2] = r4; + page[(r17+20)>>>2] = r4; + page[(r17+28)>>>2] = r18; + page[(r28+-31264)>>>2] = r2; + if(r3 != r0) { + pc=0x36108; + continue; + } + r18 = r18 & 1; + if(r18 != r0) { + pc=0x360b0; + continue; + } + case 0x36288: + r2= page[(r17+32)>>>2]; + r7 = r4 + 1; + r3 = r0 + 1; + page[(r17+40)>>>2] = r7; + page[(r17+44)>>>2] = r3; + r3= page[(r2+8)>>>2]; + r5 = r4 < r3 ? 1 : 0; + if(r5 != r0) { + pc=0x36308; + continue; + } + r5= page[(r2+12)>>>2]; r3 = r3 + r5; r3 = r4 < r3 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x2c8e4; + if(r3 != r0) { + pc=0x36314; 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; + r3 = r2 + r0; + pc=0x362ec; continue; - 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: + case 0x362d4: + r6= page[(r3+12)>>>2]; + r5 = r5 + r6; + r5 = r4 < r5 ? 1 : 0; + if(r5 != r0) { + pc=0x36314; + continue; + } + case 0x362ec: + r3= page[(r3+0)>>>2]; + r5= page[(r3+8)>>>2]; + r6 = r4 < r5 ? 1 : 0; + if(r6 == r0) { + pc=0x362d4; + continue; + } + case 0x36308: + r5 = r4 + r0; + pc=0x360bc; + continue; + case 0x36314: + r4= page[(r16+40)>>>2]; + r5 = 6 << 16; + r5 = r5 + 10552; + r31=0x36328; + pc=0x1fc00; + run_1f800(); return; + case 0x36328: + r5= page[(r17+20)>>>2]; + r2= page[(r17+32)>>>2]; + r7 = r5 + 1; + pc=0x360bc; + continue; + case 0x3633c: + r2= page[(r16+60)>>>2]; + r2 = r2 + -1; + page[(r17+24)>>>2] = r2; + pc=0x36108; + continue; + case 0x36400: 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 */ + addr=r2+30232; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x36600: 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; + addr=r2+30232; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=r31; return; - case 0x2ce00: - pc = 0x2ce00; + 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_2ce00() throws ExecutionException { /* 0x2ce00 - 0x2d000 */ + private final void run_36800() throws ExecutionException { /* 0x36800 - 0x37000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2ce00: + for(;;) { + switch(pc) { + case 0x36800: + r2= page[(r28+-31304)>>>2]; + r29 = r29 + -32; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+20)>>>2] = r17; + r16 = r4 + r0; + r18 = r5 + r0; + if(r2 == r0) { + pc=0x36850; + continue; + } + r17 = 6 << 16; + r17 = r17 + 31340; + r2= page[(r17+52)>>>2]; + r3 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x368ec; + continue; + } + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x36890; + continue; + } + case 0x36850: + r7 = 6 << 16; + r7 = r7 + 31424; + r4= page[(r7+16)>>>2]; + case 0x3685c: + page[(r7+16)>>>2] = r16; + r2 = r0 + 1; + r31= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r4 = r16 - r4; + r5 = r18 + r0; + r16= page[(r29+16)>>>2]; + r18= page[(r29+24)>>>2]; + page[(r7+8)>>>2] = r2; + page[(r7+24)>>>2] = r2; + r29 = r29 + 32; + pc=0x36000; + run_36000(); return; + case 0x36890: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 10672; + r31=0x368a4; + pc=0x1fc00; + run_1f800(); return; + case 0x368a4: + r2= page[(r28+-31304)>>>2]; + r7 = 6 << 16; + r7 = r7 + 31424; + if(r2 == r0) { + pc=0x36948; + continue; + } + r8= page[(r17+60)>>>2]; + r3= page[(r7+16)>>>2]; + r8 = r8 + -1; + case 0x368c4: + r6= page[(r2+4)>>>2]; + r2= page[(r2+0)>>>2]; + r3 = r3 - r6; + r3 = r8 & r3; + if(r2 != r0) { + pc=0x368c4; + continue; + } + page[(r28+-31304)>>>2] = r0; + r4 = r3 + r0; + pc=0x3685c; + continue; + case 0x368ec: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + 10604; + r31=0x36900; + pc=0x1fc00; + run_1f800(); return; + case 0x36900: + r2= page[(r28+-31304)>>>2]; + r7 = 6 << 16; + r7 = r7 + 31424; + if(r2 == r0) { + pc=0x36948; + continue; + } + r5= page[(r17+60)>>>2]; + r3= page[(r7+16)>>>2]; + r5 = r5 + -1; + case 0x36920: + r4= page[(r2+4)>>>2]; + r2= page[(r2+0)>>>2]; + r3 = r3 - r4; + r3 = r5 & r3; + if(r2 != r0) { + pc=0x36920; + continue; + } + page[(r28+-31304)>>>2] = r0; + r4 = r3 + r0; + pc=0x3685c; + continue; + case 0x36948: + r4= page[(r7+16)>>>2]; + pc=0x3685c; + continue; + case 0x36a00: r5 = 6 << 16; r29 = r29 + -24; - r5 = r5 + -10216; + r5 = r5 + 31432; r6 = r0 + 24; - 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]; + page[(r29+20)>>>2] = r31; + r31=0x36a1c; + pc=0x56fe0; + run_56800(); return; + case 0x36a1c: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x36c00: r2 = 6 << 16; - r2 = readPages[(r2 + -10192) >>> 12][((r2 + -10192) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r31; + r2= page[(r2+31456)>>>2]; + 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: + case 0x36e00: r2 = 6 << 16; - r2 = r2 + -10224; + r2 = r2 + 31424; 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= page[(r3+31400)>>>2]; + r5= page[(r2+16)>>>2]; + r3= page[(r2+32)>>>2]; 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; + page[(r2+16)>>>2] = r3; + page[(r2+32)>>>2] = r0; + pc=r31; return; - case 0x2d400: - pc = 0x2d400; + case 0x37000: + pc=0x37000; 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_2d400() throws ExecutionException { /* 0x2d400 - 0x2d600 */ + private final void run_37000() throws ExecutionException { /* 0x37000 - 0x37800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2d400: + for(;;) { + switch(pc) { + case 0x37000: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = 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; + page[(r29+20)>>>2] = r31; + r31=0x3701c; + pc=0x20200; + run_20000(); return; + case 0x3701c: + r3= page[(r28+-31304)>>>2]; + page[(r28+-31304)>>>2] = r2; + page[(r2+0)>>>2] = 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]; + r3 = r3 + 31424; + r4= page[(r3+8)>>>2]; + page[(r2+8)>>>2] = r4; + r4= page[(r16+8)>>>2]; + r5= page[(r3+16)>>>2]; 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]; + page[(r2+4)>>>2] = r5; + page[(r3+16)>>>2] = r4; + r31= page[(r29+20)>>>2]; r2 = r0 + 1; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + r16= page[(r29+16)>>>2]; + page[(r3+8)>>>2] = r2; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x37200: + r2= page[(r28+-31304)>>>2]; + if(r2 == r0) { + pc=0x37250; continue; } r3 = 6 << 16; - r3 = r3 + -10224; + r3 = r3 + 31424; 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= page[(r4+31400)>>>2]; + r6= page[(r3+16)>>>2]; + r4= page[(r2+4)>>>2]; 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; + page[(r3+16)>>>2] = r4; + r4= page[(r2+8)>>>2]; + r2= page[(r2+0)>>>2]; + page[(r3+8)>>>2] = r4; + page[(r28+-31304)>>>2] = r2; + case 0x37248: + pc=r31; return; - case 0x2d650: + case 0x37250: 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; + r2= page[(r2+31392)>>>2]; + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x37248; continue; } r4 = 6 << 16; - r4 = r4 + -31036; + r4 = r4 + 10720; 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; + pc=0x21400; + run_21000(); return; + case 0x37400: + r2= page[(r28+-31304)>>>2]; + if(r2 == r0) { + pc=0x37454; 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; + r6 = 6 << 16; + r4 = 6 << 16; + r6 = r6 + 31424; + r5= page[(r4+31400)>>>2]; + r3= page[(r6+16)>>>2]; + r5 = r5 + -1; + case 0x37428: + r4= page[(r2+4)>>>2]; + r3 = r3 - r4; + r4= page[(r2+8)>>>2]; + r2= page[(r2+0)>>>2]; + r3 = r5 & r3; + if(r2 != r0) { + pc=0x37428; 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; - 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(); + page[(r6+16)>>>2] = r3; + page[(r6+8)>>>2] = r4; + page[(r28+-31304)>>>2] = r0; + case 0x37454: + pc=r31; 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; - } - 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; - } - /* Next insn is delay slot */ - pc = 0x2d848; - continue; - 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; - } - 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; - } - /* 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)); - } - /* NOT REACHED */ - } - } - - private final void run_2da00() throws ExecutionException { /* 0x2da00 - 0x2dc00 */ - int addr, tmp; - 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; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2da2c; - continue; - } - 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: + case 0x37600: 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; + page[(r29+20)>>>2] = r31; + if(r6 == r0) { + pc=0x37660; continue; } - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x2dc78; + if(r5 == r0) { + pc=0x37678; continue; } r2 = 6 << 16; - r8 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; - r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r8= page[(r2+31400)>>>2]; + r3= page[(r4+8)>>>2]; r8 = r8 + -1; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2dc44; + pc=0x37644; continue; - case 0x2dc38: + case 0x37638: r2 = r2 + 1; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x2dc74; + if(r5 == r0) { + pc=0x37674; continue; } - case 0x2dc44: - r6 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; - r5 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + case 0x37644: + r6= page[(r5+4)>>>2]; + r5= page[(r5+0)>>>2]; r3 = r3 - r6; r3 = r8 & r3; - if (r2 != r7) { - /* Next insn is delay slot */ - pc = 0x2dc38; + if(r2 != r7) { + pc=0x37638; continue; } - writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r3; - case 0x2dc60: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + page[(r4+8)>>>2] = r3; + case 0x37660: + r31= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2dc74: - writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r3; - case 0x2dc78: + case 0x37674: + page[(r4+8)>>>2] = r3; + case 0x37678: 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]; + r5 = r5 + 10752; + r31=0x3768c; + pc=0x1fc00; + run_1f800(); return; + case 0x3768c: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2de00: - pc = 0x2de00; + case 0x37800: + pc=0x37800; 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_2de00() throws ExecutionException { /* 0x2de00 - 0x2e000 */ + private final void run_37800() throws ExecutionException { /* 0x37800 - 0x38000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2de00: - r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x37800: + r2= page[(r28+-31304)>>>2]; + 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: + case 0x37a00: 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: + r4 = r4 + 10848; + page[(r29+24)>>>2] = r17; + page[(r29+28)>>>2] = r31; + page[(r29+20)>>>2] = r16; + r31=0x37a20; + pc=0x4d800; + run_4d800(); return; + case 0x37a20: r17 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2e07c; + if(r2 == r0) { + pc=0x37a7c; continue; } r16 = 6 << 16; - r4 = r16 + -24536; - /* Next insn is delay slot */ - r31 = 0x2e03c; - pc = 0x1c400; - run_1c400(); - return; - case 0x2e03c: - r4 = r16 + -24536; + r4 = r16 + 17104; + r31=0x37a3c; + pc=0x1be00; + run_1b800(); return; + case 0x37a3c: + r4 = r16 + 17104; r5 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x2e04c; - pc = 0x1cc00; - run_1cc00(); - return; - case 0x2e04c: - r4 = r16 + -24536; + r31=0x37a4c; + pc=0x1c600; + run_1c000(); return; + case 0x37a4c: + r4 = r16 + 17104; r5 = r0 + 47; - /* Next insn is delay slot */ - r31 = 0x2e05c; - pc = 0x1ca00; - run_1ca00(); - return; - case 0x2e05c: - r4 = r16 + -24536; + r31=0x37a5c; + pc=0x1c400; + run_1c000(); return; + case 0x37a5c: + r4 = r16 + 17104; 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]; + r31=0x37a6c; + pc=0x1c400; + run_1c000(); return; + case 0x37a6c: + r4 = r16 + 17104; + r31=0x37a78; + pc=0x1c200; + run_1c000(); return; + case 0x37a78: + page[(r28+-31300)>>>2] = r2; + case 0x37a7c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x37c00: 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; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+44)>>>2] = 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 */ + case 0x37c38: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + r6 = (r5&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r6 != r0) { + pc=0x37cd8; continue; } r4 = r2 + -97; - r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x2e318; + r4 = (r4&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x37d18; continue; } r4 = r2 + -65; - r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x2e344; + r4 = (r4&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x37d44; continue; } - if (r16 == r18) { - /* Next insn is delay slot */ - pc = 0x2e394; + if(r16 == r18) { + pc=0x37d94; continue; } - if (r3 == r19) { - /* Next insn is delay slot */ - pc = 0x2e370; + if(r3 == r19) { + pc=0x37d70; continue; } - if (r3 == r20) { - /* Next insn is delay slot */ - pc = 0x2e370; + if(r3 == r20) { + pc=0x37d70; continue; } - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x2e388; + if(r3 == r0) { + pc=0x37d88; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29596; - /* Next insn is delay slot */ - r31 = 0x2e2ac; - pc = 0x20600; - run_20600(); - return; - case 0x2e2ac: + r5 = r5 + 5020; + r31=0x37cac; + pc=0x1fc00; + run_1f800(); return; + case 0x37cac: 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]; + case 0x37cb0: + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2e2d8: + case 0x37cd8: 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; + r31=0x37cf0; + pc=0x23000; + run_23000(); return; + case 0x37cf0: + if(r16 != r17) { + pc=0x37c38; continue; } - case 0x2e2f8: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + case 0x37cf8: + r2= page[(r28+-31264)>>>2]; r4 = r21 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2e308; + pc=r2; + r31=0x37d08; return; - case 0x2e308: + case 0x37d08: r21 = r0 + r0; r16 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2e238; + pc=0x37c38; continue; - case 0x2e318: + case 0x37d18: 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; + r31=0x37d34; + pc=0x23000; + run_23000(); return; + case 0x37d34: + if(r16 != r17) { + pc=0x37c38; continue; } - /* Next insn is delay slot */ - pc = 0x2e2f8; + pc=0x37cf8; continue; - case 0x2e344: + case 0x37d44: 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; + r31=0x37d60; + pc=0x23000; + run_23000(); return; + case 0x37d60: + if(r16 != r17) { + pc=0x37c38; continue; } - /* Next insn is delay slot */ - pc = 0x2e2f8; + pc=0x37cf8; 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; + case 0x37d70: + r31=0x37d78; + pc=0x23000; + run_23000(); return; + case 0x37d78: + if(r16 != r17) { + pc=0x37c38; continue; } - /* Next insn is delay slot */ - pc = 0x2e2f8; + pc=0x37cf8; continue; - case 0x2e388: + case 0x37d88: r2 = r0 + 3; - /* Next insn is delay slot */ - pc = 0x2e2b0; + pc=0x37cb0; continue; - case 0x2e394: + case 0x37d94: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30784; - /* Next insn is delay slot */ - r31 = 0x2e3a8; - pc = 0x20600; - run_20600(); - return; - case 0x2e3a8: + r5 = r5 + 10856; + r31=0x37da8; + pc=0x1fc00; + run_1f800(); return; + case 0x37da8: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2e2b0; + pc=0x37cb0; 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: + case 0x37e00: 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]; + page[(r29+20)>>>2] = r31; + r31=0x37e10; + pc=0x24000; + run_24000(); return; + case 0x37e10: + r2= page[(r28+-32692)>>>2]; + r31= page[(r29+20)>>>2]; r3 = r0 + 9; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + page[(r2+12)>>>2] = r3; r2 = r0 + 3; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2e600: - pc = 0x2e600; + case 0x38000: + pc=0x38000; 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_38000() throws ExecutionException { /* 0x38000 - 0x38800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2e600: + for(;;) { + switch(pc) { + case 0x38000: r2 = 6 << 16; - r3 = readPages[(r2 + -10232) >>> 12][((r2 + -10232) >>> 2) & 0x3ff]; + r3= page[(r2+31416)>>>2]; 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; + page[(r29+20)>>>2] = r31; + if(r3 != r2) { + pc=0x38054; 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; + r2= page[(r2+31320)>>>2]; + r3= page[(r28+-32676)>>>2]; + if(r2 == r3) { + pc=0x38054; 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]; + page[(r28+-32676)>>>2] = r2; + r31=0x38040; + pc=0x34c00; + run_34800(); return; + case 0x38040: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2e654: + case 0x38054: 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]; + r4 = r4 + 10892; + r31=0x38064; + pc=0x21200; + run_21000(); return; + case 0x38064: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x38200: r2 = 6 << 16; - r3 = readPages[(r2 + -10236) >>> 12][((r2 + -10236) >>> 2) & 0x3ff]; + r3= page[(r2+31412)>>>2]; 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; + page[(r29+20)>>>2] = r31; + if(r3 != r2) { + pc=0x38254; 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; + r2= page[(r2+31320)>>>2]; + r3= page[(r28+-32680)>>>2]; + if(r2 == r3) { + pc=0x38254; 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]; + page[(r28+-32680)>>>2] = r2; + r31=0x38240; + pc=0x34a00; + run_34800(); return; + case 0x38240: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2e854: + case 0x38254: 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]; + r4 = r4 + 10928; + r31=0x38264; + pc=0x21200; + run_21000(); return; + case 0x38264: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x38400: r29 = r29 + -88; - writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r16; + page[(r29+60)>>>2] = r16; r16 = 6 << 16; - writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r21; + page[(r29+80)>>>2] = 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; + r4 = r16 + 24068; + page[(r29+84)>>>2] = r31; + page[(r29+76)>>>2] = r20; + page[(r29+72)>>>2] = r19; + page[(r29+68)>>>2] = r18; + page[(r29+64)>>>2] = r17; + page[(r29+48)>>>2] = r5; + r31=0x38438; + pc=0x1be00; + run_1b800(); return; + case 0x38438: + r5= page[(r29+48)>>>2]; + r4 = r16 + 24068; r20 = 6 << 16; - /* Next insn is delay slot */ - r31 = 0x2ea4c; - pc = 0x1cc00; - run_1cc00(); - return; - case 0x2ea4c: + r31=0x3844c; + pc=0x1c600; + run_1c000(); return; + case 0x3844c: r17 = r0 + 34; r18 = 6 << 16; - r19 = r20 + -24536; - /* Next insn is delay slot */ - pc = 0x2ea94; + r19 = r20 + 17104; + pc=0x38494; continue; - case 0x2ea60: + case 0x38460: 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]; + r31=0x3846c; + pc=0x1aa00; + run_1a800(); return; + case 0x3846c: + r2= page[(r29+16)>>>2]; r4 = r29 + 16; - r2 = readPages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff]; - r5 = r16 + -17572; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2ea84; + r2= page[(r2+28)>>>2]; + r5 = r16 + 24068; + pc=r2; + r31=0x38484; 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; + case 0x38484: + r31=0x3848c; + pc=0x27c00; + run_27800(); return; + case 0x3848c: + if(r2 == r0) { + pc=0x38528; 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 */ + case 0x38494: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r17) { - /* Next insn is delay slot */ - pc = 0x2ea60; + if(r2 != r17) { + pc=0x38460; 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; + r2 = r18 + 31340; + r2= page[(r2+52)>>>2]; + r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x38460; continue; } r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x2eac8; - pc = 0x1c400; - run_1c400(); - return; - case 0x2eac8: + r31=0x384c8; + pc=0x1be00; + run_1b800(); return; + case 0x384c8: 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; + r31=0x384d4; + pc=0x24800; + run_24800(); return; + case 0x384d4: + if(r2 != r0) { + pc=0x38574; continue; } - /* Next insn is delay slot */ - r31 = 0x2eae4; - pc = 0x23400; - run_23400(); - return; - case 0x2eae4: + r31=0x384e4; + pc=0x23000; + run_23000(); return; + case 0x384e4: 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; + r31=0x384f0; + pc=0x24c00; + run_24800(); return; + case 0x384f0: + if(r2 != r0) { + pc=0x38574; 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; + r31=0x38508; + pc=0x1c400; + run_1c000(); return; + case 0x38508: + r5= page[(r20+17104)>>>2]; + r4 = r16 + 24068; + r31=0x38518; + pc=0x1c600; + run_1c000(); return; + case 0x38518: + r31=0x38520; + pc=0x27c00; + run_27800(); return; + case 0x38520: + if(r2 != r0) { + pc=0x38494; continue; } - case 0x2eb28: - r4 = r16 + -17572; + case 0x38528: + r4 = r16 + 24068; 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]; + r31=0x38538; + pc=0x1c400; + run_1c000(); return; + case 0x38538: + r5= page[(r16+24068)>>>2]; r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x2eb48; - pc = 0x20600; - run_20600(); - return; - case 0x2eb48: + r31=0x38548; + pc=0x1fc00; + run_1f800(); return; + case 0x38548: 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]; + case 0x3854c: + r31= page[(r29+84)>>>2]; + r21= page[(r29+80)>>>2]; + r20= page[(r29+76)>>>2]; + r19= page[(r29+72)>>>2]; + r18= page[(r29+68)>>>2]; + r17= page[(r29+64)>>>2]; + r16= page[(r29+60)>>>2]; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2eb74: + case 0x38574: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2eb4c; + pc=0x3854c; 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: + case 0x38600: r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + -30672; - /* Next insn is delay slot */ - pc = 0x2ea00; - run_2ea00(); + r5 = r5 + 10968; + pc=0x38400; + continue; + case 0x38800: + pc=0x38800; return; - case 0x2ee00: - pc = 0x2ee00; - 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_2ee00() throws ExecutionException { /* 0x2ee00 - 0x2f000 */ + private final void run_38800() throws ExecutionException { /* 0x38800 - 0x39000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2ee00: + for(;;) { + switch(pc) { + case 0x38800: 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 = r5 + 10980; + pc=0x38400; + run_38000(); return; + case 0x38a00: 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 = r5 + 10992; + pc=0x38400; + run_38000(); return; + case 0x38c00: 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: + r5 = r5 + 11000; + pc=0x38400; + run_38000(); return; + case 0x38e00: 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: + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; + r31=0x38e18; + pc=0x1f400; + run_1f000(); return; + case 0x38e18: r16 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x2f424; - pc = 0x21600; - run_21600(); - return; - case 0x2f424: + r31=0x38e24; + pc=0x21000; + run_21000(); return; + case 0x38e24: r4 = r16 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2f458; + if(r2 != r0) { + pc=0x38e58; 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]; + r31=0x38e38; + pc=0x1f400; + run_1f000(); return; + case 0x38e38: + r31=0x38e40; + pc=0x1f800; + run_1f800(); return; + case 0x38e40: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 2; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x38e58: + r31=0x38e60; + pc=0x1f400; + run_1f000(); return; + case 0x38e60: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2f600: - pc = 0x2f600; + case 0x39000: + pc=0x39000; 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_2f600() throws ExecutionException { /* 0x2f600 - 0x2f800 */ + private final void run_39000() throws ExecutionException { /* 0x39000 - 0x39800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2f600: + for(;;) { + switch(pc) { + case 0x39000: 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: + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; + r31=0x39018; + pc=0x1f200; + run_1f000(); return; + case 0x39018: r16 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x2f624; - pc = 0x21600; - run_21600(); - return; - case 0x2f624: + r31=0x39024; + pc=0x21000; + run_21000(); return; + case 0x39024: r4 = r16 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x2f658; + if(r2 != r0) { + pc=0x39058; 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]; + r31=0x39038; + pc=0x1f200; + run_1f000(); return; + case 0x39038: + r31=0x39040; + pc=0x1f600; + run_1f000(); return; + case 0x39040: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 2; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x39058: + r31=0x39060; + pc=0x1f200; + run_1f000(); return; + case 0x39060: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x39200: r2 = 6 << 16; - r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r2= page[(r2+31320)>>>2]; 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; + page[(r29+20)>>>2] = r31; + page[(r29+16)>>>2] = r16; + if(r2 == r0) { + pc=0x39274; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; r16 = r0 + 123; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x2f848; + if(r3 == r2) { + pc=0x39248; continue; } - 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 */ + case 0x39230: + r31=0x39238; + pc=0x23000; + run_23000(); return; + case 0x39238: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r16) { - /* Next insn is delay slot */ - pc = 0x2f830; + if(r2 != r16) { + pc=0x39230; continue; } - case 0x2f848: + case 0x39248: r4 = r0 + r0; - /* 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]; + r31=0x39254; + pc=0x24e00; + run_24800(); return; + case 0x39254: + r31=0x3925c; + pc=0x23000; + run_23000(); return; + case 0x3925c: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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]; + case 0x39274: + r31=0x3927c; + pc=0x28400; + run_28000(); return; + case 0x3927c: + r31=0x39284; + pc=0x23000; + run_23000(); return; + case 0x39284: + r31= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; - if ((tmp & 0x80) != 0) - tmp |= 0xffffff00; /* sign extend */ + case 0x39400: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x2faac; + page[(r29+52)>>>2] = r31; + if(r3 == r2) { + pc=0x394ac; continue; } - case 0x2fa18: + case 0x39418: 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 */ + r31=0x39424; + pc=0x1e800; + run_1e800(); return; + case 0x39424: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x2fa48; + if(r3 == r2) { + pc=0x39448; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5260; + r31=0x39448; + pc=0x1fc00; + run_1f800(); return; + case 0x39448: + r2= page[(r28+-32692)>>>2]; 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: + r2= page[(r2+4)>>>2]; + page[(r29+28)>>>2] = r2; + r31=0x39464; + pc=0x24e00; + run_24800(); return; + case 0x39464: 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]; + page[(r29+32)>>>2] = r2; + page[(r29+44)>>>2] = r0; + r31=0x39478; + pc=0x1ea00; + run_1e800(); return; + case 0x39478: + r4= page[(r29+24)>>>2]; + r31=0x39484; + pc=0x4e000; + run_4e000(); return; + case 0x39484: + r4= page[(r29+32)>>>2]; + r31=0x39490; + pc=0x4e000; + run_4e000(); return; + case 0x39490: + r31=0x39498; + pc=0x23000; + run_23000(); return; + case 0x39498: + r31= page[(r29+52)>>>2]; r2 = r0 + 1; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x394ac: + r31=0x394b4; + pc=0x23000; + run_23000(); return; + case 0x394b4: + pc=0x39418; 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 */ + case 0x39600: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + page[(r29+52)>>>2] = r31; + if(r3 == r2) { + pc=0x396e4; continue; } - case 0x2fc18: + case 0x39618: r4 = r29 + 16; r5 = r0 + 123; - /* 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 */ + r31=0x39628; + pc=0x1e600; + run_1e000(); return; + case 0x39628: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x2fc4c; + if(r3 == r2) { + pc=0x3964c; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5260; + r31=0x3964c; + pc=0x1fc00; + run_1f800(); return; + case 0x3964c: + r2= page[(r28+-32692)>>>2]; 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 = 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: + r2= page[(r2+4)>>>2]; + page[(r29+28)>>>2] = r2; + r31=0x39668; + pc=0x24e00; + run_24800(); return; + case 0x39668: + page[(r29+32)>>>2] = r2; + r31=0x39674; + pc=0x23000; + run_23000(); return; + case 0x39674: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x2fcd4; + if(r2 == r3) { + pc=0x396d4; continue; } - case 0x2fc80: + case 0x39680: r5 = r0 + r0; r4 = r29 + 36; - /* Next insn is delay slot */ - r31 = 0x2fc90; - pc = 0x1f000; - run_1f000(); - return; - case 0x2fc90: + r31=0x39690; + pc=0x1e600; + run_1e000(); return; + case 0x39690: r4 = r29 + 16; - /* 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]; + r31=0x3969c; + pc=0x1ea00; + run_1e800(); return; + case 0x3969c: + r4= page[(r29+24)>>>2]; + r31=0x396a8; + pc=0x4e000; + run_4e000(); return; + case 0x396a8: + r4= page[(r29+32)>>>2]; + r31=0x396b4; + pc=0x4e000; + run_4e000(); return; + case 0x396b4: + r4= page[(r29+44)>>>2]; + r31=0x396c0; + pc=0x4e000; + run_4e000(); return; + case 0x396c0: + r31= page[(r29+52)>>>2]; r2 = r0 + 3; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2fcd4: - /* Next insn is delay slot */ - r31 = 0x2fcdc; - pc = 0x23400; - run_23400(); - return; - case 0x2fcdc: - /* Next insn is delay slot */ - pc = 0x2fc80; + case 0x396d4: + r31=0x396dc; + pc=0x23000; + run_23000(); return; + case 0x396dc: + pc=0x39680; continue; - case 0x2fce4: - /* Next insn is delay slot */ - r31 = 0x2fcec; - pc = 0x23400; - run_23400(); - return; - case 0x2fcec: - /* Next insn is delay slot */ - pc = 0x2fc18; + case 0x396e4: + r31=0x396ec; + pc=0x23000; + run_23000(); return; + case 0x396ec: + pc=0x39618; continue; - case 0x2fe00: - pc = 0x2fe00; + case 0x39800: + pc=0x39800; 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_2fe00() throws ExecutionException { /* 0x2fe00 - 0x30000 */ + private final void run_39800() throws ExecutionException { /* 0x39800 - 0x3a000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x2fe00: + for(;;) { + switch(pc) { + case 0x39800: 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 0x2fe1c: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x2fe3c; + page[(r29+108)>>>2] = r31; + page[(r29+104)>>>2] = r16; + r31=0x3981c; + pc=0x26200; + run_26000(); return; + case 0x3981c: + if(r2 == r0) { + pc=0x3983c; continue; } r2 = r0 + r0; - case 0x2fe28: - r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + case 0x39828: + r31= page[(r29+108)>>>2]; + r16= page[(r29+104)>>>2]; r29 = r29 + 112; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x3983c: + r31=0x39844; + pc=0x27e00; + run_27800(); return; + case 0x39844: + r4= page[(r29+96)>>>2]; 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; + r31=0x39854; + pc=0x40c00; + run_40800(); return; + case 0x39854: + page[(r29+16)>>>2] = r2; + r31=0x39860; + pc=0x27c00; + run_27800(); return; + case 0x39860: + if(r2 != r0) { + pc=0x39988; continue; } - addr = r28 + -31268; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + 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; + page[(r29+20)>>>2] = r2; r3 = r3 >> 24; r2 = r0 + 73; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x2ff68; + if(r3 != r2) { + pc=0x39968; continue; } - /* Next insn is delay slot */ - r31 = 0x2fe94; - pc = 0x25400; - run_25400(); - return; - case 0x2fe94: + r31=0x39894; + pc=0x26e00; + run_26800(); return; + case 0x39894: 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; + r5 = 6 << 16; + r4= page[(r2+17104)>>>2]; + r5 = r5 + 1688; + r31=0x398ac; + pc=0x51600; + run_51000(); return; + case 0x398ac: + if(r2 != r0) { + pc=0x39b24; + continue; } - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x30098; - run_30000(); - return; + if(r16 != r0) { + pc=0x39a98; + continue; } 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]; + r31=0x398c8; + pc=0x1aa00; + run_1a800(); return; + case 0x398c8: + r2= page[(r29+32)>>>2]; r4 = r29 + 32; - r2 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x2fee0; + r2= page[(r2+32)>>>2]; + pc=r2; + r31=0x398e0; 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 0x398e0: + page[(r29+24)>>>2] = r2; + if(r2 < 0) { + pc=0x39b44; + continue; } - 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 */ + case 0x398ec: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x2ff10; + if(r3 == r2) { + pc=0x39910; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5260; + r31=0x39910; + pc=0x1fc00; + run_1f800(); return; + case 0x39910: + r2= page[(r28+-32692)>>>2]; r4 = r0 + 1; - 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: + r2= page[(r2+4)>>>2]; + page[(r29+64)>>>2] = r2; + r31=0x3992c; + pc=0x24e00; + run_24800(); return; + case 0x3992c: r4 = r29 + 16; - 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]; + page[(r29+68)>>>2] = r2; + r31=0x3993c; + pc=0x1e200; + run_1e000(); return; + case 0x3993c: + r4= page[(r29+68)>>>2]; + r31=0x39948; + pc=0x4e000; + run_4e000(); return; + case 0x39948: + r31=0x39950; + pc=0x23000; + run_23000(); return; + case 0x39950: + r31= page[(r29+108)>>>2]; + r16= page[(r29+104)>>>2]; r2 = r0 + 1; r29 = r29 + 112; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x2ff68: - r5 = 5 << 16; + case 0x39968: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29596; - /* Next insn is delay slot */ - r31 = 0x2ff7c; - pc = 0x20600; - run_20600(); - return; - case 0x2ff7c: + r5 = r5 + 5020; + r31=0x3997c; + pc=0x1fc00; + run_1f800(); return; + case 0x3997c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2fe28; + pc=0x39828; continue; - case 0x2ff88: + case 0x39988: r4 = r29 + 72; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; - /* Next insn is delay slot */ - r31 = 0x2ff98; - pc = 0x1a800; - run_1a800(); - return; - 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; + page[(r29+40)>>>2] = r16; + r31=0x39998; + pc=0x1a400; + run_1a000(); return; + case 0x39998: + r2= page[(r29+88)>>>2]; + page[(r29+44)>>>2] = r2; + r31=0x399ac; + pc=0x27c00; + run_27800(); return; + case 0x399ac: + if(r2 == r0) { + pc=0x39a54; + continue; } 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; + r16 = r16 + 31340; + page[(r29+20)>>>2] = r2; + r2= page[(r16+52)>>>2]; + r2 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x39ad4; + continue; } - case 0x2ffd8: - r2 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + case 0x399d8: + r2= page[(r29+80)>>>2]; 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; + page[(r29+32)>>>2] = r2; + r31=0x399ec; + pc=0x1a400; + run_1a000(); return; + case 0x399ec: + r2= page[(r16+12)>>>2]; + if(r2 == r0) { + pc=0x39a20; + continue; } - 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_30000() throws ExecutionException { /* 0x30000 - 0x30200 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x30000: - r3 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x30020; + r2= page[(r29+44)>>>2]; + r3= page[(r29+88)>>>2]; + if(r3 == r2) { + pc=0x39a20; 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 = r4 + 11036; + r31=0x39a20; + pc=0x21200; + run_21000(); return; + case 0x39a20: + r3= page[(r29+32)>>>2]; + r2= page[(r29+80)>>>2]; r4 = r2 < r3 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x300b8; + if(r4 != r0) { + pc=0x39ab8; 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: + page[(r29+24)>>>2] = r3; + page[(r29+36)>>>2] = r2; + pc=0x398ec; + continue; + case 0x39a54: 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; + r2= page[(r2+31392)>>>2]; + page[(r29+20)>>>2] = r0; + r2 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x39aec; continue; } - case 0x3006c: - r2 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x30104; + case 0x39a6c: + r2= page[(r29+80)>>>2]; + if(r2 < 0) { + pc=0x39b04; continue; } r3 = r2 + r0; - case 0x30080: + case 0x39a80: 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: + page[(r29+32)>>>2] = r2; + page[(r29+24)>>>2] = r3; + page[(r29+36)>>>2] = r2; + pc=0x398ec; + continue; + case 0x39a98: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30424; - /* Next insn is delay slot */ - r31 = 0x300ac; - pc = 0x20600; - run_20600(); - return; - case 0x300ac: + r5 = r5 + 11216; + r31=0x39aac; + pc=0x1fc00; + run_1f800(); return; + case 0x39aac: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2fe28; - run_2fe00(); - return; - case 0x300b8: + pc=0x39828; + continue; + case 0x39ab8: r3 = r3 + 1; r2 = r3 - r2; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + page[(r29+24)>>>2] = 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; + page[(r29+36)>>>2] = r2; + pc=0x398ec; continue; - case 0x30104: + case 0x39ad4: + r4 = 6 << 16; + r4 = r4 + 11008; + r31=0x39ae4; + pc=0x21200; + run_21000(); return; + case 0x39ae4: + pc=0x399d8; + continue; + case 0x39aec: + r4 = 6 << 16; + r4 = r4 + 11104; + r31=0x39afc; + pc=0x21200; + run_21000(); return; + case 0x39afc: + pc=0x39a6c; + continue; + case 0x39b04: 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; + r5 = r5 + 11132; + r31=0x39b18; + pc=0x1fc00; + run_1f800(); return; + case 0x39b18: + r3= page[(r29+80)>>>2]; + pc=0x39a80; continue; - case 0x30124: + case 0x39b24: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30484; - /* Next insn is delay slot */ - r31 = 0x30138; - pc = 0x20600; - run_20600(); - return; - case 0x30138: + r5 = r5 + 11156; + r31=0x39b38; + pc=0x1fc00; + run_1f800(); return; + case 0x39b38: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x2fe28; - run_2fe00(); - return; - case 0x30144: + pc=0x39828; + continue; + case 0x39b44: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30336; - /* Next insn is delay slot */ - r31 = 0x30158; - pc = 0x20600; - run_20600(); - return; - case 0x30158: + r5 = r5 + 11304; + r31=0x39b58; + pc=0x1fc00; + run_1f800(); return; + case 0x39b58: 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: + pc=0x39828; + continue; + case 0x39c00: 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; + page[(r29+68)>>>2] = r22; + page[(r29+60)>>>2] = r20; + page[(r29+52)>>>2] = r18; + r22 = 6 << 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; + page[(r29+64)>>>2] = r21; + page[(r29+56)>>>2] = r19; + page[(r29+48)>>>2] = r17; + page[(r29+44)>>>2] = r16; + page[(r29+76)>>>2] = r31; + page[(r29+72)>>>2] = r23; r16 = r4 + r0; r19 = r0 + 1; - r22 = r22 + 29836; - r20 = r20 + -30304; - r21 = 5 << 16; + r22 = r22 + 5260; + r20 = r20 + 11336; + r21 = 6 << 16; r17 = 6 << 16; - r18 = r18 + -30244; - case 0x30250: + r18 = r18 + 11396; + case 0x39c50: r2 = r0 + 1; - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x303c4; + if(r16 == r2) { + pc=0x39dc4; continue; } - case 0x3025c: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x304ac; - run_30400(); - return; + case 0x39c5c: + if(r16 == r0) { + pc=0x39eac; + continue; } r2 = r0 + 2; - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x30498; - run_30400(); - return; + if(r16 == r2) { + pc=0x39e98; + continue; } r2 = r0 + 3; - if (r16 != r2) { - /* Next insn is delay slot */ - pc = 0x3047c; - run_30400(); - return; + if(r16 != r2) { + pc=0x39e7c; + continue; } 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 */ + case 0x39c80: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 32; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x303e0; + if(r3 == r2) { + pc=0x39de0; continue; } - case 0x30290: + case 0x39c90: r2 = r0 + 123; - if (r23 == r0) { - /* Next insn is delay slot */ - pc = 0x303f8; + if(r23 == r0) { + pc=0x39df8; continue; } - case 0x3029c: - if (r19 == r0) { - /* Next insn is delay slot */ - pc = 0x303f8; + case 0x39c9c: + if(r19 == r0) { + pc=0x39df8; continue; } - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x30574; - run_30400(); - return; + if(r3 != r2) { + pc=0x39f74; + continue; } - /* Next insn is delay slot */ - r31 = 0x302b4; - pc = 0x21000; - run_21000(); - return; - 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 */ + r31=0x39cb4; + pc=0x20800; + run_20800(); return; + case 0x39cb4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 125; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x304fc; - run_30400(); - return; + if(r3 == r2) { + pc=0x39efc; + continue; } r4 = r0 + -3; - r5 = r21 + 29784; - /* Next insn is delay slot */ - r31 = 0x302d4; - pc = 0x20600; - run_20600(); - return; - case 0x302d4: + r5 = r21 + 5208; + r31=0x39cd4; + pc=0x1fc00; + run_1f800(); return; + case 0x39cd4: r19 = r0 + r0; - case 0x302d8: - /* Next insn is delay slot */ - r31 = 0x302e0; - pc = 0x23400; - run_23400(); - return; - case 0x302e0: + case 0x39cd8: + r31=0x39ce0; + pc=0x23000; + run_23000(); return; + case 0x39ce0: r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x30420; - run_30400(); - return; + if(r2 == r3) { + pc=0x39e20; + continue; } - case 0x302ec: + case 0x39cec: r2 = r0 + 3; - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x30434; - run_30400(); - return; + if(r16 == r2) { + pc=0x39e34; + continue; } - 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 */ + case 0x39cf8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x30568; - run_30400(); - return; + if(r2 == r0) { + pc=0x39f68; + continue; } - /* 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; + r31=0x39d10; + pc=0x26e00; + run_26800(); return; + case 0x39d10: + if(r2 == r0) { + pc=0x39f34; + continue; } - r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r4= page[(r17+17104)>>>2]; 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; + r31=0x39d28; + pc=0x51600; + run_51000(); return; + case 0x39d28: + if(r2 != r0) { + pc=0x39f20; + 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x304e8; - run_30400(); - return; + if(r2 == r3) { + pc=0x39ee8; + continue; } - case 0x30340: + case 0x39d40: r3 = r0 + 123; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x30464; - run_30400(); - return; + if(r2 == r3) { + pc=0x39e64; + continue; } - /* 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; + r31=0x39d54; + pc=0x26e00; + run_26800(); return; + case 0x39d54: + if(r2 == r0) { + pc=0x39f34; + continue; } - r16 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r16= page[(r17+17104)>>>2]; r5 = 6 << 16; r4 = r16 + r0; - r5 = r5 + -30200; - /* Next insn is delay slot */ - r31 = 0x30374; - pc = 0x47e00; - run_47e00(); - return; - case 0x30374: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x30470; - run_30400(); - return; + r5 = r5 + 11440; + r31=0x39d74; + pc=0x51600; + run_51000(); return; + case 0x39d74: + if(r2 == r0) { + pc=0x39e70; + continue; } 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 = r5 + 11444; + r31=0x39d90; + pc=0x51600; + run_51000(); return; + case 0x39d90: + if(r2 == r0) { + pc=0x39f08; + continue; } 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; + r5 = r5 + 11452; + r31=0x39dac; + pc=0x51600; + run_51000(); return; + case 0x39dac: + if(r2 != r0) { + pc=0x39f80; + continue; } r16 = r0 + 2; r2 = r0 + 1; - if (r16 != r2) { - /* Next insn is delay slot */ - pc = 0x3025c; + if(r16 != r2) { + pc=0x39c5c; 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 */ + case 0x39dc4: + r31=0x39dcc; + pc=0x1e000; + run_1e000(); return; + case 0x39dcc: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r23 = r2 + r0; r2 = r0 + 32; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x30290; + if(r3 != r2) { + pc=0x39c90; 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 */ + case 0x39de0: + r31=0x39de8; + pc=0x23000; + run_23000(); return; + case 0x39de8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; - if (r23 != r0) { - /* Next insn is delay slot */ - pc = 0x3029c; + if(r23 != r0) { + pc=0x39c9c; continue; } - case 0x303f8: - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x30534; - run_30400(); - return; + case 0x39df8: + if(r3 != r2) { + pc=0x39f34; + continue; } - case 0x30400: - pc = 0x30400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_30400() throws ExecutionException { /* 0x30400 - 0x30600 */ - int addr, tmp; - 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: + r31=0x39e0c; + pc=0x24e00; + run_24800(); return; + case 0x39e0c: + r31=0x39e14; + pc=0x23000; + run_23000(); return; + case 0x39e14: r3 = r0 + 32; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x302ec; - run_30200(); - return; + if(r2 != r3) { + pc=0x39cec; + continue; } - case 0x30420: - /* Next insn is delay slot */ - r31 = 0x30428; - pc = 0x23400; - run_23400(); - return; - case 0x30428: + case 0x39e20: + r31=0x39e28; + pc=0x23000; + run_23000(); return; + case 0x39e28: r2 = r0 + 3; - if (r16 != r2) { - /* Next insn is delay slot */ - pc = 0x302f8; - run_30200(); - return; + if(r16 != r2) { + pc=0x39cf8; + continue; } - 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 */ + case 0x39e34: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x30534; + if(r2 == r0) { + pc=0x39f34; continue; } r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30288; - /* Next insn is delay slot */ - r31 = 0x30458; - pc = 0x20600; - run_20600(); - return; - case 0x30458: + r5 = r5 + 11352; + r31=0x39e58; + pc=0x1fc00; + run_1f800(); return; + case 0x39e58: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x30538; + pc=0x39f38; continue; - case 0x30464: + case 0x39e64: r16 = r0 + 3; - /* Next insn is delay slot */ - pc = 0x30250; - run_30200(); - return; - case 0x30470: + pc=0x39c50; + continue; + case 0x39e70: r16 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x30250; - run_30200(); - return; - case 0x3047c: + pc=0x39c50; + continue; + case 0x39e7c: r4 = r20 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x3048c; - pc = 0x21a00; - run_21a00(); - return; - case 0x3048c: + r31=0x39e8c; + pc=0x21400; + run_21000(); return; + case 0x39e8c: 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: + pc=0x39c80; + continue; + case 0x39e98: + r31=0x39ea0; + pc=0x1e000; + run_1e000(); return; + case 0x39ea0: + r23 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + pc=0x39c80; + continue; + case 0x39eac: r4 = r29 + 16; - /* 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 */ + r31=0x39eb8; + pc=0x1a400; + run_1a000(); return; + case 0x39eb8: + r23= page[(r29+24)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 123; r23 = ((r0 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x30514; + if(r3 == r2) { + pc=0x39f14; continue; } r4 = r0 + -3; r5 = r22 + r0; - /* Next insn is delay slot */ - r31 = 0x304e0; - pc = 0x20600; - run_20600(); - return; - case 0x304e0: - /* Next insn is delay slot */ - pc = 0x30280; - run_30200(); - return; - case 0x304e8: - /* Next insn is delay slot */ - r31 = 0x304f0; - pc = 0x23400; - run_23400(); - return; - 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 */ + r31=0x39ee0; + pc=0x1fc00; + run_1f800(); return; + case 0x39ee0: + pc=0x39c80; + continue; + case 0x39ee8: + r31=0x39ef0; + pc=0x23000; + run_23000(); return; + case 0x39ef0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x30340; - run_30200(); - return; - case 0x304fc: + pc=0x39d40; + continue; + case 0x39efc: r19 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x302d8; - run_30200(); - return; - case 0x30508: + pc=0x39cd8; + continue; + case 0x39f08: r16 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x30250; - run_30200(); - return; - case 0x30514: + pc=0x39c50; + continue; + case 0x39f14: r3 = r0 + 123; - /* Next insn is delay slot */ - pc = 0x30290; - run_30200(); - return; - case 0x30520: + pc=0x39c90; + continue; + case 0x39f20: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30236; - /* Next insn is delay slot */ - r31 = 0x30534; - pc = 0x20600; - run_20600(); - return; - case 0x30534: + r5 = r5 + 11404; + r31=0x39f34; + pc=0x1fc00; + run_1f800(); return; + case 0x39f34: 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]; + case 0x39f38: + r31= page[(r29+76)>>>2]; + r23= page[(r29+72)>>>2]; + r22= page[(r29+68)>>>2]; + r21= page[(r29+64)>>>2]; + r20= page[(r29+60)>>>2]; + r19= page[(r29+56)>>>2]; + r18= page[(r29+52)>>>2]; + r17= page[(r29+48)>>>2]; + r16= page[(r29+44)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x30568: + case 0x39f68: r2 = r0 + 3; - /* Next insn is delay slot */ - pc = 0x30538; + pc=0x39f38; continue; - case 0x30574: + case 0x39f74: r2 = r0 + 2; - /* Next insn is delay slot */ - pc = 0x30538; + pc=0x39f38; continue; - case 0x30580: + case 0x39f80: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -30180; - /* Next insn is delay slot */ - r31 = 0x30594; - pc = 0x20600; - run_20600(); - return; - case 0x30594: + r5 = r5 + 11460; + r31=0x39f94; + pc=0x1fc00; + run_1f800(); return; + case 0x39f94: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x30538; + pc=0x39f38; continue; - case 0x30600: - pc = 0x30600; + 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_30600() throws ExecutionException { /* 0x30600 - 0x30800 */ + private final void run_3a000() throws ExecutionException { /* 0x3a000 - 0x3a800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x30600: + for(;;) { + switch(pc) { + case 0x3a000: 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: + pc=0x39c00; + run_39800(); return; + case 0x3a200: 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: + pc=0x39c00; + run_39800(); return; + case 0x3a400: 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: + pc=0x39c00; + run_39800(); return; + case 0x3a600: r29 = r29 + -48; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; - r16 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + page[(r29+40)>>>2] = r16; + r16= page[(r28+-32672)>>>2]; r4 = r29 + 16; r5 = r16 + r0; 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; + page[(r29+44)>>>2] = r31; + r31=0x3a624; + pc=0x56fe0; + run_56800(); return; + case 0x3a624: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - r2 = 5 << 16; - r2 = r2 + 29340; + r2 = 6 << 16; + r2 = r2 + 4764; r2 = r3 + r2; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 64; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x30ce4; + if(r2 != r0) { + pc=0x3a6e4; continue; } r6 = 6 << 16; r4 = r16 + r0; r7 = r0 + r0; - r6 = r6 + -24444; - case 0x30c58: + r6 = r6 + 17196; + case 0x3a658: 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; + r5 = r5 + 11508; + r31=0x3a668; + pc=0x3fa00; + run_3f800(); return; + case 0x3a668: + r31=0x3a670; + pc=0x21000; + run_21000(); return; + case 0x3a670: + if(r2 != r0) { + pc=0x3a6ac; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x30c84; - pc = 0x36a00; - run_36a00(); - return; - case 0x30c84: - r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31=0x3a684; + pc=0x3fe00; + run_3f800(); return; + case 0x3a684: + r2= page[(r28+-32672)>>>2]; + r31= page[(r29+44)>>>2]; r3 = 6 << 16; - r3 = r3 + -30124; - writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; - r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r3 = r3 + 11516; + page[(r2+8)>>>2] = r3; + r16= page[(r29+40)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x3a6ac: + r4= page[(r28+-32672)>>>2]; + r31=0x3a6b8; + pc=0x3fe00; + run_3f800(); return; + case 0x3a6b8: + r4= page[(r28+-32672)>>>2]; r5 = r29 + 16; r6 = r0 + 20; - /* Next insn is delay slot */ - r31 = 0x30ccc; - pc = 0x4d7e0; - run_4d600(); - return; - case 0x30ccc: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r31=0x3a6cc; + pc=0x56fe0; + run_56800(); return; + case 0x3a6cc: + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x30ce4: - /* Next insn is delay slot */ - r31 = 0x30cec; - pc = 0x25200; - run_25200(); - return; - case 0x30cec: + case 0x3a6e4: + r31=0x3a6ec; + pc=0x26600; + run_26000(); return; + case 0x3a6ec: r4 = 6 << 16; - r4 = r4 + -24536; - /* Next insn is delay slot */ - r31 = 0x30cfc; - pc = 0x1c800; - run_1c800(); - return; - case 0x30cfc: + r4 = r4 + 17104; + r31=0x3a6fc; + pc=0x1c200; + run_1c000(); return; + case 0x3a6fc: r6 = r2 + r0; - r4 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r4= page[(r28+-32672)>>>2]; r7 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x30c58; + pc=0x3a658; continue; - case 0x30e00: - pc = 0x30e00; + case 0x3a800: + pc=0x3a800; 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_30e00() throws ExecutionException { /* 0x30e00 - 0x31000 */ + private final void run_3a800() throws ExecutionException { /* 0x3a800 - 0x3b000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x30e00: + for(;;) { + switch(pc) { + case 0x3a800: 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 = 0x30e3c; - continue; - } - 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 = 0x30c00; - run_30c00(); - return; - 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 = 0x30c00; - run_30c00(); - return; - 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: r29 = r29 + -32; - 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 0x31020: - /* Next insn is delay slot */ - r31 = 0x31028; - pc = 0x21600; - run_21600(); - return; - case 0x31028: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x31040; + r4 = r2 + 31460; + r5 = r0 + 1; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r17= page[(r2+31460)>>>2]; + r16 = r2 + r0; + r31=0x3a82c; + pc=0x1b800; + run_1b800(); return; + case 0x3a82c: + r31=0x3a834; + pc=0x21000; + run_21000(); return; + case 0x3a834: + if(r2 == r0) { + pc=0x3a84c; continue; } - r4 = r16 + r0; + r4 = r16 + 31460; 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]; + r31=0x3a84c; + pc=0x1b800; + run_1b800(); return; + case 0x3a84c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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: - r4 = 6 << 16; - r4 = r4 + -10184; - r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x31000; - run_31000(); - 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: - 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: + case 0x3aa00: r29 = r29 + -32; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+20)>>>2] = 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; + page[(r29+24)>>>2] = r17; + page[(r29+28)>>>2] = r31; + r17= page[(r16+31424)>>>2]; + r31=0x3aa20; + pc=0x26e00; + run_26800(); return; + case 0x3aa20: + if(r2 != r0) { + pc=0x3aa58; 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; + case 0x3aa28: + r31=0x3aa30; + pc=0x21000; + run_21000(); return; + case 0x3aa30: + if(r2 == r0) { + pc=0x3aa3c; 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]; + page[(r16+31424)>>>2] = r17; + case 0x3aa3c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x3aa58: + r31=0x3aa60; + pc=0x1b600; + run_1b000(); return; + case 0x3aa60: + if(r2 == r0) { + pc=0x3aa74; continue; } - writePages[(r16 + -10224) >>> 12][((r16 + -10224) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x31a28; + page[(r16+31424)>>>2] = r2; + pc=0x3aa28; continue; - case 0x31a74: + case 0x3aa74: 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; + r5 = r5 + 11524; + r31=0x3aa88; + pc=0x1fc00; + run_1f800(); return; + case 0x3aa88: + pc=0x3aa28; 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: + case 0x3ac00: 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; + page[(r29+52)>>>2] = r31; + page[(r29+40)>>>2] = r0; + r31=0x3ac18; + pc=0x1a400; + run_1a000(); return; + case 0x3ac18: + r31=0x3ac20; + pc=0x27c00; + run_27800(); return; + case 0x3ac20: + if(r2 == r0) { + pc=0x3ac3c; continue; } - /* Next insn is delay slot */ - pc = 0x31c68; + pc=0x3ac68; 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]; + case 0x3ac30: + r4= page[(r29+40)>>>2]; + r31=0x3ac3c; + pc=0x21c00; + run_21800(); return; + case 0x3ac3c: + r2= page[(r29+24)>>>2]; r3 = r2 + -1; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x31c30; + page[(r29+24)>>>2] = r3; + if(r2 != r0) { + pc=0x3ac30; continue; } - r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r31= page[(r29+52)>>>2]; r2 = r0 + 1; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x31c68: + case 0x3ac68: r4 = r29 + 40; - /* Next insn is delay slot */ - r31 = 0x31c74; - pc = 0x1a600; - run_1a600(); - return; - case 0x31c74: - /* Next insn is delay slot */ - pc = 0x31c3c; + r31=0x3ac74; + pc=0x1a200; + run_1a000(); return; + case 0x3ac74: + pc=0x3ac3c; 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: + case 0x3ae00: 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; + page[(r29+92)>>>2] = r31; + page[(r29+88)>>>2] = r18; + page[(r29+84)>>>2] = r17; + page[(r29+80)>>>2] = r16; + page[(r29+56)>>>2] = r2; + page[(r29+32)>>>2] = r0; + r31=0x3ae2c; + pc=0x27800; + run_27800(); return; + case 0x3ae2c: + if(r2 == r0) { + pc=0x3ae54; 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]; + case 0x3ae34: + r31= page[(r29+92)>>>2]; + r18= page[(r29+88)>>>2]; + r17= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r2 = r0 + r0; r29 = r29 + 96; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3ae54: + r4= page[(r29+72)>>>2]; + r31=0x3ae60; + pc=0x28200; + run_28000(); return; + case 0x3ae60: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x31e34; + if(r2 == r0) { + pc=0x3ae34; continue; } - /* Next insn is delay slot */ - r31 = 0x31e74; - pc = 0x25a00; - run_25a00(); - return; - case 0x31e74: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x31eb4; + r31=0x3ae74; + pc=0x27c00; + run_27800(); return; + case 0x3ae74: + if(r2 == r0) { + pc=0x3aeb4; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 44; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x31e94; + if(r2 == r3) { + pc=0x3ae94; continue; } - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x32094; - run_32000(); - return; + if(r2 != r0) { + pc=0x3b094; + run_3b000(); 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; + case 0x3ae94: + r31=0x3ae9c; + pc=0x27c00; + run_27800(); return; + case 0x3ae9c: + if(r2 == r0) { + pc=0x3aeb4; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x32080; - run_32000(); - return; + if(r2 != r0) { + pc=0x3b080; + run_3b000(); return; } - case 0x31eb4: - r4 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + case 0x3aeb4: + r4= page[(r29+56)>>>2]; r17 = 6 << 16; - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x31ee8; + if(r4 < 0) { + pc=0x3aee8; continue; } - r2 = r17 + -10328; - r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x31fdc; + r2 = r17 + 31320; + r3= page[(r2+4)>>>2]; + if(r3 != r0) { + pc=0x3afdc; continue; } - r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x31fdc; + r2= page[(r2+8)>>>2]; + if(r2 != r0) { + pc=0x3afdc; continue; } - case 0x31ee8: - r5 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + case 0x3aee8: + r5= page[(r29+32)>>>2]; r4 = r16 + r0; r6 = r0 + r0; - /* 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; + r31=0x3aefc; + pc=0x4ce00; + run_4c800(); return; + case 0x3aefc: + r2= page[(r29+56)>>>2]; + if(r2 == r0) { + pc=0x3afe4; continue; } r18 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x31f54; + pc=0x3af54; continue; - case 0x31f18: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x3af18: + r2= page[(r16+0)>>>2]; 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; + page[(r16+0)>>>2] = r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - case 0x31f2c: - r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x31f3c; + case 0x3af2c: + r2= page[(r28+-31264)>>>2]; + pc=r2; + r31=0x3af3c; return; - case 0x31f3c: - r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + case 0x3af3c: + r2= page[(r29+56)>>>2]; r2 = r2 + -1; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x31fe4; + page[(r29+56)>>>2] = r2; + if(r2 == r0) { + pc=0x3afe4; continue; } - case 0x31f54: - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x3af54: + r2= page[(r16+4)>>>2]; r2 = r2 + -1; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x31f18; + page[(r16+4)>>>2] = r2; + if(r2 >= 0) { + pc=0x3af18; continue; } - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x31f7c; - pc = 0x47200; - run_47200(); - return; - case 0x31f7c: + r31=0x3af7c; + pc=0x50a00; + run_50800(); return; + case 0x3af7c: r4 = r2 + r0; - if (r2 != r18) { - /* Next insn is delay slot */ - pc = 0x31f2c; + if(r2 != r18) { + pc=0x3af2c; continue; } - r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x31fe4; + r2= page[(r29+56)>>>2]; + if(r2 <= 0) { + pc=0x3afe4; 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]; + r5 = r5 + 11544; + r31=0x3afac; + pc=0x1fc00; + run_1f800(); return; + case 0x3afac: + r2= page[(r28+-31264)>>>2]; r4 = r0 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x31fbc; + pc=r2; + r31=0x3afbc; return; - case 0x31fbc: - r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + case 0x3afbc: + r2= page[(r29+56)>>>2]; r2 = r2 + -1; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x31fac; + page[(r29+56)>>>2] = r2; + if(r2 != r0) { + pc=0x3afac; continue; } - /* Next insn is delay slot */ - pc = 0x31fe4; + pc=0x3afe4; continue; - case 0x31fdc: - /* Next insn is delay slot */ - r31 = 0x31fe4; - pc = 0x2ae00; - run_2ae00(); - return; - case 0x31fe4: + case 0x3afdc: + r31=0x3afe4; + pc=0x34600; + run_34000(); return; + case 0x3afe4: r4 = r16 + r0; - /* 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; + r31=0x3aff0; + pc=0x49e00; + run_49800(); return; + case 0x3aff0: + r2= page[(r17+31320)>>>2]; + if(r2 != r0) { + pc=0x3b060; + run_3b000(); return; } - case 0x32000: - pc = 0x32000; + 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_32000() throws ExecutionException { /* 0x32000 - 0x32200 */ + private final void run_3b000() throws ExecutionException { /* 0x3b000 - 0x3b800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x32000: + for(;;) { + switch(pc) { + case 0x3b000: r2 = 6 << 16; - r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; + r2= page[(r2+31344)>>>2]; r2 = r2 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x32060; + if(r2 != r0) { + pc=0x3b060; continue; } - /* Next insn is delay slot */ - r31 = 0x32020; - pc = 0x2d000; - run_2d000(); - return; - case 0x32020: - r7 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r31=0x3b020; + pc=0x36c00; + run_36800(); return; + case 0x3b020: + r7= page[(r29+32)>>>2]; r4 = 6 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; - r4 = r4 + -29964; + page[(r29+16)>>>2] = r7; + r4 = r4 + 11568; r5 = r2 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x32040; - pc = 0x45a00; - run_45a00(); - return; - 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]; + r31=0x3b040; + pc=0x4f200; + run_4f000(); return; + case 0x3b040: + r31= page[(r29+92)>>>2]; + r18= page[(r29+88)>>>2]; + r17= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r2 = r0 + 1; r29 = r29 + 96; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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]; + case 0x3b060: + r31= page[(r29+92)>>>2]; + r18= page[(r29+88)>>>2]; + r17= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; r2 = r0 + 1; r29 = r29 + 96; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x32080: + case 0x3b080: r4 = r29 + 24; - /* Next insn is delay slot */ - r31 = 0x3208c; - pc = 0x1a800; - run_1a800(); - return; - case 0x3208c: - /* Next insn is delay slot */ - pc = 0x31eb4; - run_31e00(); - return; - case 0x32094: + r31=0x3b08c; + pc=0x1a400; + run_1a000(); return; + case 0x3b08c: + pc=0x3aeb4; + run_3a800(); return; + case 0x3b094: 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; + r31=0x3b0a0; + pc=0x1a400; + run_1a000(); return; + case 0x3b0a0: + r2= page[(r29+56)>>>2]; + if(r2 >= 0) { + pc=0x3ae94; + run_3a800(); return; } - r5 = 5 << 16; + r5 = 6 << 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_32200() throws ExecutionException { /* 0x32200 - 0x32400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x32200: + r5 = r5 + 5276; + r31=0x3b0c4; + pc=0x1fc00; + run_1f800(); return; + case 0x3b0c4: + pc=0x3ae94; + run_3a800(); return; + case 0x3b200: 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; + r2 = r2 + 7168; + page[(r29+68)>>>2] = r17; + page[(r29+48)>>>2] = r2; r17 = 6 << 16; r2 = r0 + 1; - 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; + page[(r29+84)>>>2] = r21; + page[(r29+80)>>>2] = r20; + page[(r29+76)>>>2] = r19; + page[(r29+72)>>>2] = r18; + r21= page[(r28+-31272)>>>2]; + page[(r29+92)>>>2] = r31; + page[(r29+88)>>>2] = r22; + page[(r29+64)>>>2] = 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; + page[(r29+52)>>>2] = r2; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r28+-31272)>>>2] = r4; r19 = 6 << 16; r20 = r17 + r0; - /* Next insn is delay slot */ - pc = 0x32288; + pc=0x3b288; continue; - case 0x3225c: + case 0x3b25c: r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x32268; - pc = 0x1ae00; - run_1ae00(); - return; - case 0x32268: + r31=0x3b268; + pc=0x1aa00; + run_1a800(); return; + case 0x3b268: r4 = r29 + 16; r5 = r29 + 48; - /* Next insn is delay slot */ - r31 = 0x32278; - pc = 0x21c00; - run_21c00(); - return; - 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; + r31=0x3b278; + pc=0x21800; + run_21800(); return; + case 0x3b278: + r31=0x3b280; + pc=0x27c00; + run_27800(); return; + case 0x3b280: + if(r2 == r0) { + pc=0x3b354; 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 */ + case 0x3b288: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 34; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x3225c; + if(r3 != r2) { + pc=0x3b25c; 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; + r2 = r19 + 31340; + r2= page[(r2+52)>>>2]; + r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x3b25c; continue; } - r4 = r17 + -24536; - /* Next insn is delay slot */ - r31 = 0x322bc; - pc = 0x1c400; - run_1c400(); - return; - case 0x322bc: + r4 = r17 + 17104; + r31=0x3b2bc; + pc=0x1be00; + run_1b800(); return; + case 0x3b2bc: 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; + r31=0x3b2c8; + pc=0x24800; + run_24800(); return; + case 0x3b2c8: + if(r2 != r0) { + pc=0x3b388; continue; } - /* Next insn is delay slot */ - r31 = 0x322d8; - pc = 0x23400; - run_23400(); - return; - case 0x322d8: + r31=0x3b2d8; + pc=0x23000; + run_23000(); return; + case 0x3b2d8: 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; + r31=0x3b2e4; + pc=0x24c00; + run_24800(); return; + case 0x3b2e4: + if(r2 != r0) { + pc=0x3b388; continue; } - r22 = r20 + -24536; - r2 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x32278; + r22 = r20 + 17104; + r2= page[(r22+4)>>>2]; + if(r2 == r0) { + pc=0x3b278; continue; } r2 = r0 + r0; r16 = r0 + r0; - case 0x32308: - r3 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + case 0x3b308: + r3= page[(r17+17104)>>>2]; r16 = r16 + 1; r2 = r3 + r2; - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - /* Next insn is delay slot */ - r31 = 0x32320; - pc = 0x1dc00; - run_1dc00(); - return; - case 0x32320: + r31=0x3b320; + pc=0x1d600; + run_1d000(); return; + case 0x3b320: 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]; + r31=0x3b330; + pc=0x21c00; + run_21800(); return; + case 0x3b330: + r3= page[(r22+4)>>>2]; r2 = r16 + r0; r3 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x32308; + if(r3 != r0) { + pc=0x3b308; 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; + r31=0x3b34c; + pc=0x27c00; + run_27800(); return; + case 0x3b34c: + if(r2 != r0) { + pc=0x3b288; continue; } - case 0x32354: - writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r21; + case 0x3b354: + page[(r28+-31272)>>>2] = 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]; + case 0x3b35c: + r31= page[(r29+92)>>>2]; + r22= page[(r29+88)>>>2]; + r21= page[(r29+84)>>>2]; + r20= page[(r29+80)>>>2]; + r19= page[(r29+76)>>>2]; + r18= page[(r29+72)>>>2]; + r17= page[(r29+68)>>>2]; + r16= page[(r29+64)>>>2]; r29 = r29 + 96; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x32388: + case 0x3b388: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3235c; + pc=0x3b35c; continue; - 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: + case 0x3b400: r4 = 6 << 16; - r4 = r4 + -15284; + r4 = r4 + 26364; 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: + pc=0x3b200; + continue; + case 0x3b600: r4 = 6 << 16; - r4 = r4 + -15280; + r4 = r4 + 26368; r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x32200; - run_32200(); + pc=0x3b200; + continue; + case 0x3b800: + pc=0x3b800; return; - case 0x32800: - pc = 0x32800; - 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_32800() throws ExecutionException { /* 0x32800 - 0x32a00 */ + private final void run_3b800() throws ExecutionException { /* 0x3b800 - 0x3c000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x32800: + for(;;) { + switch(pc) { + case 0x3b800: r4 = 6 << 16; - r4 = r4 + -15276; + r4 = r4 + 26372; 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]; + pc=0x3b200; + run_3b000(); return; + case 0x3ba00: + r4= page[(r28+-31272)>>>2]; 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: + pc=0x3b200; + run_3b000(); return; + case 0x3bc00: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; 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: + r2= page[(r2+4)>>>2]; + page[(r29+68)>>>2] = r31; + r2 = r2 & 8; + if(r2 != r0) { + pc=0x3bc74; + continue; + } + r2 = 2 << 16; + r2 = r2 + 10240; + case 0x3bc28: + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3bc34: r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x32c20; - pc = 0x1ae00; - run_1ae00(); - return; - case 0x32c20: + r31=0x3bc40; + pc=0x1aa00; + run_1a800(); return; + case 0x3bc40: 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; + r31=0x3bc50; + pc=0x21800; + run_21800(); return; + case 0x3bc50: + r31=0x3bc58; + pc=0x27c00; + run_27800(); return; + case 0x3bc58: + if(r2 != r0) { + pc=0x3bc34; continue; } - r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31= page[(r29+68)>>>2]; r2 = r0 + 1; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3bc74: + r2 = 2 << 16; + r2 = r2 + 9728; + pc=0x3bc28; + continue; + case 0x3be00: 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; + page[(r29+288)>>>2] = r19; + page[(r29+284)>>>2] = r18; + page[(r29+280)>>>2] = r17; + page[(r29+276)>>>2] = r16; + page[(r29+292)>>>2] = r31; r16 = r4 + r0; - r18 = readPages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff]; - r19 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + r18= page[(r28+-32696)>>>2]; + r19= page[(r28+-31272)>>>2]; r17 = r29 + 16; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3424c; + if(r4 == r0) { + pc=0x3be4c; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x34240; - pc = 0x1e000; - run_1e000(); - return; - case 0x34240: + r31=0x3be40; + pc=0x1da00; + run_1d800(); return; + case 0x3be40: r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x3424c; - pc = 0x40600; - run_40600(); - return; - case 0x3424c: + r31=0x3be4c; + pc=0x49e00; + run_49800(); return; + case 0x3be4c: 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; + r2 = r2 + 26360; + page[(r28+-31272)>>>2] = r2; + page[(r28+-32696)>>>2] = r17; + r31=0x3be64; + pc=0x21000; + run_21000(); return; + case 0x3be64: + if(r2 != r0) { + pc=0x3bea8; 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; + r31=0x3be80; + pc=0x56fe0; + run_56800(); return; + case 0x3be80: + r31= page[(r29+292)>>>2]; + r19= page[(r29+288)>>>2]; + r17= page[(r29+280)>>>2]; + r16= page[(r29+276)>>>2]; + page[(r28+-32696)>>>2] = r18; r2 = r0 + 1; - r18 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r18= page[(r29+284)>>>2]; r29 = r29 + 296; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x3bea8: + r31= page[(r29+292)>>>2]; + r17= page[(r29+280)>>>2]; + r16= page[(r29+276)>>>2]; + page[(r28+-31272)>>>2] = r19; + page[(r28+-32696)>>>2] = r18; + r19= page[(r29+288)>>>2]; + r18= page[(r29+284)>>>2]; r2 = r0 + 1; r29 = r29 + 296; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x34400: - pc = 0x34400; + 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_34400() throws ExecutionException { /* 0x34400 - 0x34600 */ + private final void run_3c000() throws ExecutionException { /* 0x3c000 - 0x3c800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x34400: + for(;;) { + switch(pc) { + case 0x3c000: 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: + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r16; + r31=0x3c014; + pc=0x36400; + run_36000(); return; + case 0x3c014: 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]; + r31=0x3c024; + pc=0x1a200; + run_1a000(); return; + case 0x3c024: + r3= page[(r29+16)>>>2]; r2 = r3 + 128; - r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3448c; + r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x3c08c; continue; } r4 = r3 << 24; r4 = r4 >> 24; - case 0x34444: + case 0x3c044: 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; + r31=0x3c058; + pc=0x36600; + run_36000(); return; + case 0x3c058: + r31=0x3c060; + pc=0x21000; + run_21000(); return; + case 0x3c060: + if(r2 == r0) { + pc=0x3c074; 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]; + r31=0x3c074; + pc=0x36600; + run_36000(); return; + case 0x3c074: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r2 = r0 + 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3448c: - r5 = 5 << 16; + case 0x3c08c: + r5 = 6 << 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; + r5 = r5 + 5152; + r31=0x3c0a0; + pc=0x1fc00; + run_1f800(); return; + case 0x3c0a0: + page[(r29+16)>>>2] = r0; r4 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x34444; + pc=0x3c044; 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; + case 0x3c200: + r29 = r29 + -48; + r4 = r29 + 16; + page[(r29+44)>>>2] = r31; + r31=0x3c214; + pc=0x1a400; + run_1a000(); return; + case 0x3c214: + r4 = r29 + 16; + r31=0x3c220; + pc=0x37000; + run_37000(); return; + case 0x3c220: + r31=0x3c228; + pc=0x21000; + run_21000(); return; + case 0x3c228: + if(r2 != r0) { + pc=0x3c278; continue; } - r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x34634; + r2 = 6 << 16; + r2= page[(r2+31392)>>>2]; + if(r2 == r0) { + pc=0x3c264; + continue; + } + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x3c294; continue; } r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -29840; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); + r5 = r5 + 11692; + r31=0x3c264; + pc=0x1fc00; + run_1f800(); return; + case 0x3c264: + r31= page[(r29+44)>>>2]; + r2 = r0 + 1; + r29 = r29 + 48; + pc=r31; return; - case 0x34634: + case 0x3c278: + r31=0x3c280; + pc=0x37200; + run_37000(); return; + case 0x3c280: + r31= page[(r29+44)>>>2]; + r2 = r0 + 1; + r29 = r29 + 48; + pc=r31; + return; + case 0x3c294: 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]; + r4 = r4 + 11628; + r31=0x3c2a4; + pc=0x21200; + run_21000(); return; + case 0x3c2a4: + r31= page[(r29+44)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3c400: r2 = 6 << 16; - r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r2= page[(r2+31392)>>>2]; 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; + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + page[(r29+20)>>>2] = r31; + if(r2 == r0) { + pc=0x3c44c; 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 = r2 + 26368; + r4 = r4 + 11800; + page[(r28+-31272)>>>2] = r2; + r31=0x3c438; + pc=0x21200; + run_21000(); return; + case 0x3c438: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x34c4c: + case 0x3c44c: 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]; + r5 = r5 + 11756; + r31=0x3c460; + pc=0x1fc00; + run_1f800(); return; + case 0x3c460: + r31= page[(r29+20)>>>2]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3c600: 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; + page[(r29+44)>>>2] = r31; + r31=0x3c614; + pc=0x1a400; + run_1a000(); return; + case 0x3c614: + r31=0x3c61c; + pc=0x27c00; + run_27800(); return; + case 0x3c61c: + if(r2 == r0) { + pc=0x3c674; continue; } r2 = 6 << 16; - r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r2 = readPages[(r2 + -10252) >>> 12][((r2 + -10252) >>> 2) & 0x3ff]; + r4= page[(r29+24)>>>2]; + r2= page[(r2+31396)>>>2]; r2 = r2 < r4 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x34e54; + if(r2 == r0) { + pc=0x3c654; continue; } - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x34e54: + case 0x3c654: 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]; + r5 = r5 + 11884; + r31=0x3c664; + pc=0x38400; + run_38000(); return; + case 0x3c664: + r31= page[(r29+44)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x34e74: + case 0x3c674: 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]; + r5 = r5 + 11848; + r31=0x3c688; + pc=0x1fc00; + run_1f800(); return; + case 0x3c688: + r31= page[(r29+44)>>>2]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35000: - pc = 0x35000; + case 0x3c800: + pc=0x3c800; 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_3c800() throws ExecutionException { /* 0x3c800 - 0x3d000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x35000: - r2 = readPages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x3c800: + r2= page[(r28+-32768)>>>2]; 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; + page[(r29+56)>>>2] = r30; + page[(r29+60)>>>2] = r31; + page[(r29+52)>>>2] = r19; + page[(r29+48)>>>2] = r18; + page[(r29+44)>>>2] = r17; + page[(r29+40)>>>2] = r16; r30 = r29 + r0; - writePages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3512c; + page[(r28+-32768)>>>2] = r2; + if(r2 < 0) { + pc=0x3c92c; continue; } - case 0x35034: + case 0x3c834: 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; + r31=0x3c840; + pc=0x27800; + run_27800(); return; + case 0x3c840: + if(r2 == r0) { + pc=0x3c874; 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= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r19= page[(r29+52)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r2 = r0 + r0; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x3c874: + r4= page[(r30+36)>>>2]; + r31=0x3c880; + pc=0x28200; + run_28000(); return; + case 0x3c880: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x350f0; + if(r2 == r0) { + pc=0x3c8f0; continue; } r2 = 6 << 16; - r3 = r2 + -24536; - r3 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r3 = r2 + 17104; + r3= page[(r3+4)>>>2]; r17 = r29 + r0; r3 = r3 + 7; r3 = r3 >>> 3; r3 = r3 << 3; r29 = r29 - r3; r3 = r29 + 16; - r5 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; + r5= page[(r2+17104)>>>2]; r4 = r3 + r0; - /* Next insn is delay slot */ - r31 = 0x350c0; - pc = 0x48000; - run_48000(); - return; - case 0x350c0: + r31=0x3c8c0; + pc=0x51800; + run_51800(); return; + case 0x3c8c0: r3 = r2 + r0; - 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 */ + r19= page[(r28+-32692)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r2 = r30 + 16; r4 = r16 + r0; r5 = r3 + r0; - 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; + page[(r28+-32692)>>>2] = r2; + r31=0x3c8e4; + pc=0x1ee00; + run_1e800(); return; + case 0x3c8e4: + page[(r28+-32692)>>>2] = r19; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r29 = r17 + r0; - case 0x350f0: - r2 = readPages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff]; + case 0x3c8f0: + r2= page[(r28+-32768)>>>2]; r2 = r2 + 1; - writePages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff] = r2; + page[(r28+-32768)>>>2] = 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= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r19= page[(r29+52)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r2 = r0 + 1; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3512c: + case 0x3c92c: r5 = 6 << 16; r4 = r0 + -3; - r5 = r5 + -29636; - /* Next insn is delay slot */ - r31 = 0x35140; - pc = 0x20600; - run_20600(); - return; - case 0x35140: - /* Next insn is delay slot */ - pc = 0x35034; + r5 = r5 + 11896; + r31=0x3c940; + pc=0x1fc00; + run_1f800(); return; + case 0x3c940: + pc=0x3c834; continue; - case 0x35200: - pc = 0x35200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_35200() throws ExecutionException { /* 0x35200 - 0x35400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x35200: + case 0x3ca00: r29 = r29 + -24; - 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; + page[(r29+20)>>>2] = r31; + r31=0x3ca10; + pc=0x27a00; + run_27800(); return; + case 0x3ca10: + if(r2 != r0) { + pc=0x3ca64; continue; } r2 = 6 << 16; - r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x35264; + r2= page[(r2+31320)>>>2]; + if(r2 != r0) { + pc=0x3ca64; continue; } - r2 = readPages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x35278; + r2= page[(r28+-31396)>>>2]; + if(r2 == r0) { + pc=0x3ca78; continue; } 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]; + r5 = r5 + 11936; + r31=0x3ca50; + pc=0x1fc00; + run_1f800(); return; + case 0x3ca50: + r31= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35264: + case 0x3ca64: r2 = r0 + r0; - case 0x35268: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x3ca68: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35278: + case 0x3ca78: 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; + r4 = r4 + 17104; + r31=0x3ca88; + pc=0x1c200; + run_1c000(); return; + case 0x3ca88: + page[(r28+-31396)>>>2] = r2; r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x35268; + pc=0x3ca68; continue; - case 0x35400: - pc = 0x35400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_35400() throws ExecutionException { /* 0x35400 - 0x35600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x35400: + case 0x3cc00: 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; + page[(r29+28)>>>2] = r31; + r31=0x3cc18; + pc=0x26200; + run_26000(); return; + case 0x3cc18: + if(r2 == r0) { + pc=0x3cc34; continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x3cc34: + r31=0x3cc3c; + pc=0x27e00; + run_27800(); return; + case 0x3cc3c: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; r3 = r0 + 61; - if (r4 == r3) { - /* Next insn is delay slot */ - pc = 0x35474; + if(r4 == r3) { + pc=0x3cc74; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5020; + r31=0x3cc60; + pc=0x1fc00; + run_1f800(); return; + case 0x3cc60: + r31= page[(r29+28)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35474: - r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x3cc74: + r4= page[(r29+16)>>>2]; 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]; + r31=0x3cc88; + pc=0x1fa00; + run_1f800(); return; + case 0x3cc88: + r31= page[(r29+28)>>>2]; r2 = r0 + 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3ce00: 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; + page[(r29+100)>>>2] = r31; + r31=0x3ce14; + pc=0x1a400; + run_1a000(); return; + case 0x3ce14: + r31=0x3ce1c; + pc=0x27c00; + run_27800(); return; + case 0x3ce1c: + if(r2 == r0) { + pc=0x3cec4; continue; } r4 = r29 + 40; - /* 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; + r31=0x3ce30; + pc=0x1a400; + run_1a000(); return; + case 0x3ce30: + r31=0x3ce38; + pc=0x27c00; + run_27800(); return; + case 0x3ce38: + if(r2 != r0) { + pc=0x3cef4; continue; } - case 0x35640: + case 0x3ce40: r2 = 6 << 16; - r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2= page[(r2+31424)>>>2]; r4 = r29 + 16; - addr = r2 + 8; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+8; + tmp= page[(addr)>>>2]; + 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; + page[(r29+88)>>>2] = r2; + r31=0x3ce60; + pc=0x36a00; + run_36800(); return; + case 0x3ce60: + r2= page[(r29+16)>>>2]; + if(r2 != r0) { + pc=0x3ce84; continue; } - /* Next insn is delay slot */ - pc = 0x3571c; + pc=0x3cf1c; continue; - 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]; + case 0x3ce78: + r4= page[(r29+88)>>>2]; + r31=0x3ce84; + pc=0x21c00; + run_21800(); return; + case 0x3ce84: + r2= page[(r29+24)>>>2]; r3 = r2 + 1; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + page[(r29+24)>>>2] = r3; + r3= page[(r29+72)>>>2]; r2 = r2 & r3; - r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x35678; + r3= page[(r29+48)>>>2]; + if(r2 != r3) { + pc=0x3ce78; continue; } - r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r31= page[(r29+100)>>>2]; r2 = r0 + 1; r29 = r29 + 104; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x356c4: - r5 = 5 << 16; + case 0x3cec4: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29596; - /* Next insn is delay slot */ - r31 = 0x356d8; - pc = 0x20600; - run_20600(); - return; - case 0x356d8: + r5 = r5 + 5020; + r31=0x3ced8; + pc=0x1fc00; + run_1f800(); return; + case 0x3ced8: 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; + r31=0x3cee4; + pc=0x1a400; + run_1a000(); return; + case 0x3cee4: + r31=0x3ceec; + pc=0x27c00; + run_27800(); return; + case 0x3ceec: + if(r2 == r0) { + pc=0x3ce40; continue; } - case 0x356f4: + case 0x3cef4: r4 = r29 + 88; - /* Next insn is delay slot */ - r31 = 0x35700; - pc = 0x1a600; - run_1a600(); - return; - case 0x35700: + r31=0x3cf00; + pc=0x1a200; + run_1a000(); return; + case 0x3cf00: 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; + r31=0x3cf0c; + pc=0x36a00; + run_36800(); return; + case 0x3cf0c: + r2= page[(r29+16)>>>2]; + if(r2 != r0) { + pc=0x3ce84; continue; } - case 0x3571c: - r5 = 5 << 16; + case 0x3cf1c: + r5 = 6 << 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]; + r5 = r5 + 5060; + r31=0x3cf30; + pc=0x1fc00; + run_1f800(); return; + case 0x3cf30: + r31= page[(r29+100)>>>2]; r2 = r0 + r0; r29 = r29 + 104; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35800: - pc = 0x35800; + 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_35800() throws ExecutionException { /* 0x35800 - 0x35a00 */ + private final void run_3d000() throws ExecutionException { /* 0x3d000 - 0x3d800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x35800: + for(;;) { + switch(pc) { + case 0x3d000: 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; + page[(r29+44)>>>2] = r31; + r31=0x3d014; + pc=0x1a400; + run_1a000(); return; + case 0x3d014: + r4= page[(r29+24)>>>2]; + if(r4 < 0) { + pc=0x3d040; continue; } - /* Next insn is delay slot */ - r31 = 0x3582c; - pc = 0x2ae00; - run_2ae00(); - return; - case 0x3582c: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31=0x3d02c; + pc=0x34600; + run_34000(); return; + case 0x3d02c: + r31= page[(r29+44)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35840: - r5 = 5 << 16; + case 0x3d040: + r5 = 6 << 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]; + r5 = r5 + 5276; + r31=0x3d054; + pc=0x1fc00; + run_1f800(); return; + case 0x3d054: + r31= page[(r29+44)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x3d200: 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; + page[(r29+28)>>>2] = r31; + r31=0x3d214; + pc=0x1a200; + run_1a000(); return; + case 0x3d214: + r31=0x3d21c; + pc=0x27c00; + run_27800(); return; + case 0x3d21c: + if(r2 == r0) { + pc=0x3d248; continue; } - addr = r29 + 19; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r29+19; + tmp= page[(addr)>>>2]; + 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]; + r4 = r4 + 26364; + r31=0x3d238; + pc=0x3b200; + run_3b000(); return; + case 0x3d238: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35a48: - r5 = 5 << 16; + case 0x3d248: + r5 = 6 << 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]; + r5 = r5 + 5020; + r31=0x3d25c; + pc=0x1fc00; + run_1f800(); return; + case 0x3d25c: + r31= page[(r29+28)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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 */ + case 0x3d400: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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] = r17; - writePages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff] = r16; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x35c80; + page[(r29+284)>>>2] = r31; + page[(r29+280)>>>2] = r17; + page[(r29+276)>>>2] = r16; + if(r2 == r3) { + pc=0x3d480; continue; } r3 = r0 + 34; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x35c80; + if(r2 == r3) { + pc=0x3d480; continue; } - 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; + r16= page[(r28+-32696)>>>2]; + r17= page[(r28+-31272)>>>2]; + r31=0x3d43c; + pc=0x26e00; + run_26800(); return; + case 0x3d43c: + if(r2 != r0) { + pc=0x3d4e0; continue; } - case 0x35c44: + case 0x3d444: r2 = r29 + 16; - writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - r31 = 0x35c54; - pc = 0x21600; - run_21600(); - return; - case 0x35c54: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x35c60; + page[(r28+-32696)>>>2] = r2; + r31=0x3d454; + pc=0x21000; + run_21000(); return; + case 0x3d454: + if(r2 == r0) { + pc=0x3d460; continue; } - 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; + page[(r28+-31272)>>>2] = r17; + case 0x3d460: + r31= page[(r29+284)>>>2]; + r17= page[(r29+280)>>>2]; + page[(r28+-32696)>>>2] = r16; r2 = r0 + 1; - r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; + r16= page[(r29+276)>>>2]; r29 = r29 + 288; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35c80: + case 0x3d480: 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; + r31=0x3d48c; + pc=0x27800; + run_27800(); return; + case 0x3d48c: + if(r2 == r0) { + pc=0x3d4b0; 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]; + r31= page[(r29+284)>>>2]; + r17= page[(r29+280)>>>2]; + r16= page[(r29+276)>>>2]; r2 = r0 + r0; r29 = r29 + 288; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x3d4b0: + r4= page[(r29+16)>>>2]; + r31=0x3d4bc; + pc=0x28200; + run_28000(); return; + case 0x3d4bc: 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]; + r31=0x3d4c8; + pc=0x3be00; + run_3b800(); return; + case 0x3d4c8: + r31= page[(r29+284)>>>2]; + r17= page[(r29+280)>>>2]; + r16= page[(r29+276)>>>2]; r29 = r29 + 288; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x3d4e0: + r31=0x3d4e8; + pc=0x1dc00; + run_1d800(); return; + case 0x3d4e8: + if(r2 == r0) { + pc=0x3d444; continue; } - writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x35c44; + page[(r28+-31272)>>>2] = r2; + pc=0x3d444; continue; - case 0x35e00: - pc = 0x35e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_35e00() throws ExecutionException { /* 0x35e00 - 0x36000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x35e00: + case 0x3d600: r29 = r29 + -24; - 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; + page[(r29+20)>>>2] = r31; + r31=0x3d610; + pc=0x27a00; + run_27800(); return; + case 0x3d610: + if(r2 != r0) { + pc=0x3d62c; continue; } r2 = 6 << 16; - r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x35e40; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x3d640; continue; } - case 0x35e2c: + case 0x3d62c: r2 = r0 + r0; - case 0x35e30: - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + case 0x3d630: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x35e40: - /* Next insn is delay slot */ - r31 = 0x35e48; - pc = 0x2ba00; - run_2ba00(); - return; - case 0x35e48: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x35e2c; + case 0x3d640: + r31=0x3d648; + pc=0x35200; + run_35000(); return; + case 0x3d648: + if(r2 != r0) { + pc=0x3d62c; 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; + r31=0x3d658; + pc=0x27c00; + run_27800(); return; + case 0x3d658: + if(r2 != r0) { + pc=0x3d690; 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; + r31=0x3d668; + pc=0x35000; + run_35000(); return; + case 0x3d668: + if(r2 == r0) { + pc=0x3d684; continue; } r2 = 6 << 16; - r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x35ecc; + r2= page[(r2+31392)>>>2]; + if(r2 != r0) { + pc=0x3d6cc; continue; } - case 0x35e84: + case 0x3d684: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x35e30; + pc=0x3d630; 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; + case 0x3d690: + r31=0x3d698; + pc=0x26e00; + run_26800(); return; + case 0x3d698: + if(r2 == r0) { + pc=0x3d62c; 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; + r31=0x3d6a8; + pc=0x34e00; + run_34800(); return; + case 0x3d6a8: + if(r2 == r0) { + pc=0x3d684; 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; + r5 = r5 + 12040; + r31=0x3d6c4; + pc=0x1fc00; + run_1f800(); return; + case 0x3d6c4: + pc=0x3d62c; continue; - case 0x35ecc: + case 0x3d6cc: r5 = 6 << 16; r4 = r0 + -1; - r5 = r5 + -29556; - /* Next insn is delay slot */ - r31 = 0x35ee0; - pc = 0x20600; - run_20600(); - return; - case 0x35ee0: + r5 = r5 + 11976; + r31=0x3d6e0; + pc=0x1fc00; + run_1f800(); return; + case 0x3d6e0: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x35e30; + pc=0x3d630; continue; - case 0x36000: - pc = 0x36000; + 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_36000() throws ExecutionException { /* 0x36000 - 0x36200 */ + private final void run_3d800() throws ExecutionException { /* 0x3d800 - 0x3e000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x36000: + for(;;) { + switch(pc) { + case 0x3d800: r2 = 6 << 16; - r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x36020; + r2= page[(r2+31320)>>>2]; + if(r2 == r0) { + pc=0x3d820; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36020: + case 0x3d820: r29 = r29 + -48; r4 = r29 + 16; - 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]; + page[(r29+44)>>>2] = r31; + r31=0x3d834; + pc=0x1a400; + run_1a000(); return; + case 0x3d834: + r4= page[(r29+24)>>>2]; r2 = r4 + 128; - r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x36070; + r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x3d870; continue; } r4 = r4 << 24; r4 = r4 >> 24; - /* 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; + r31=0x3d85c; + pc=0x34800; + run_34800(); return; + case 0x3d85c: + r31= page[(r29+44)>>>2]; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36070: - r5 = 5 << 16; + case 0x3d870: + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29728; - /* Next insn is delay slot */ - r31 = 0x36084; - pc = 0x20600; - run_20600(); - return; - case 0x36084: - r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = r5 + 5152; + r31=0x3d884; + pc=0x1fc00; + run_1f800(); return; + case 0x3d884: + r4= page[(r29+24)>>>2]; r4 = r4 << 24; r4 = r4 >> 24; - /* Next insn is delay slot */ - r31 = 0x3609c; - pc = 0x2b000; - run_2b000(); - return; - case 0x3609c: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; - r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r31=0x3d89c; + pc=0x34800; + run_34800(); return; + case 0x3d89c: + r31= page[(r29+44)>>>2]; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36200: - pc = 0x36200; + case 0x3da00: + r2 = 6 << 16; + r2= page[(r2+31392)>>>2]; + r29 = r29 + -24; + page[(r29+20)>>>2] = r31; + if(r2 == r0) { + pc=0x3da38; + continue; + } + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x3da54; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 11692; + r31=0x3da38; + pc=0x1fc00; + run_1f800(); return; + case 0x3da38: + r31=0x3da40; + pc=0x37400; + run_37000(); return; + case 0x3da40: + r31= page[(r29+20)>>>2]; + r2 = r0 + 1; + r29 = r29 + 24; + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + case 0x3da54: + r4 = 6 << 16; + r4 = r4 + 11628; + r31=0x3da64; + pc=0x21200; + run_21000(); return; + case 0x3da64: + r31=0x3da6c; + pc=0x37400; + run_37000(); return; + case 0x3da6c: + r31= page[(r29+20)>>>2]; + r2 = r0 + 1; + r29 = r29 + 24; + pc=r31; + return; + case 0x3dc00: + r2 = 6 << 16; + r29 = r29 + -32; + r4 = r2 + 31464; + r5 = r0 + r0; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r17= page[(r2+31464)>>>2]; + r16 = r2 + r0; + r31=0x3dc2c; + pc=0x1b800; + run_1b800(); return; + case 0x3dc2c: + r31=0x3dc34; + pc=0x21000; + run_21000(); return; + case 0x3dc34: + if(r2 == r0) { + pc=0x3dc4c; + continue; + } + r4 = r16 + 31464; + r5 = r17 + r0; + r31=0x3dc4c; + pc=0x1b800; + run_1b800(); return; + case 0x3dc4c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r2 = r0 + 1; + r29 = r29 + 32; + pc=r31; + return; + case 0x3de00: + r2 = 6 << 16; + r29 = r29 + -32; + r4 = r2 + 31464; + r5 = r0 + 1; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r17= page[(r2+31464)>>>2]; + r16 = r2 + r0; + r31=0x3de2c; + pc=0x1b800; + run_1b800(); return; + case 0x3de2c: + r31=0x3de34; + pc=0x21000; + run_21000(); return; + case 0x3de34: + if(r2 == r0) { + pc=0x3de4c; + continue; + } + r4 = r16 + 31464; + r5 = r17 + r0; + r31=0x3de4c; + pc=0x1b800; + run_1b800(); return; + case 0x3de4c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r2 = r0 + 1; + r29 = r29 + 32; + pc=r31; + return; + case 0x3e000: + pc=0x3e000; + return; + 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_3e000() throws ExecutionException { /* 0x3e000 - 0x3e800 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x3e000: + r2 = 6 << 16; + r29 = r29 + -32; + r4 = r2 + 31460; + r5 = r0 + r0; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + r17= page[(r2+31460)>>>2]; + r16 = r2 + r0; + r31=0x3e02c; + pc=0x1b800; + run_1b800(); return; + case 0x3e02c: + r31=0x3e034; + pc=0x21000; + run_21000(); return; + case 0x3e034: + if(r2 == r0) { + pc=0x3e04c; 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 */ + r4 = r16 + 31460; + r5 = r17 + r0; + r31=0x3e04c; + pc=0x1b800; + run_1b800(); return; + case 0x3e04c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r2 = r0 + 1; + r29 = r29 + 32; + pc=r31; + return; + case 0x3e200: + r2 = 6 << 16; + r2= page[(r2+31392)>>>2]; + r29 = r29 + -48; + r2 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r16; + if(r2 == r0) { + pc=0x3e2d0; + continue; + } + r4 = 6 << 16; + r4 = r4 + 12116; + r31=0x3e230; + pc=0x21200; + run_21000(); return; + case 0x3e230: + r16= page[(r28+-32672)>>>2]; + r4 = r29 + 16; + r5 = r16 + r0; + r6 = r0 + 20; + r31=0x3e248; + pc=0x56fe0; + run_56800(); return; + case 0x3e248: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r3 = tmp; + r2 = 6 << 16; + r2 = r2 + 4764; + r2 = r3 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = tmp; + r2 = r2 & 64; + if(r2 != r0) { + pc=0x3e324; + continue; + } + r6 = 6 << 16; + r4 = r16 + r0; + r7 = r0 + r0; + r6 = r6 + 17196; + case 0x3e27c: + r5 = 6 << 16; + r5 = r5 + 11508; + r31=0x3e28c; + pc=0x3fa00; + run_3f800(); return; + case 0x3e28c: + r31=0x3e294; + pc=0x21000; + run_21000(); return; + case 0x3e294: + if(r2 != r0) { + pc=0x3e2ec; + continue; + } + r4 = r29 + 16; + r31=0x3e2a8; + pc=0x3fe00; + run_3f800(); return; + case 0x3e2a8: + r2= page[(r28+-32672)>>>2]; + r31= page[(r29+44)>>>2]; + r3 = 6 << 16; + r3 = r3 + 11516; + page[(r2+8)>>>2] = r3; + r16= page[(r29+40)>>>2]; + r2 = r0 + 1; + r29 = r29 + 48; + pc=r31; + return; + case 0x3e2d0: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 12064; + r31=0x3e2e4; + pc=0x1fc00; + run_1f800(); return; + case 0x3e2e4: + pc=0x3e230; + continue; + case 0x3e2ec: + r4= page[(r28+-32672)>>>2]; + r31=0x3e2f8; + pc=0x3fe00; + run_3f800(); return; + case 0x3e2f8: + r4= page[(r28+-32672)>>>2]; + r5 = r29 + 16; + r6 = r0 + 20; + r31=0x3e30c; + pc=0x56fe0; + run_56800(); return; + case 0x3e30c: + r31= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; + r2 = r0 + 1; + r29 = r29 + 48; + pc=r31; + return; + case 0x3e324: + r31=0x3e32c; + pc=0x26600; + run_26000(); return; + case 0x3e32c: + r4 = 6 << 16; + r4 = r4 + 17104; + r31=0x3e33c; + pc=0x1c200; + run_1c000(); return; + case 0x3e33c: + r6 = r2 + r0; + r4= page[(r28+-32672)>>>2]; + r7 = r0 + 1; + pc=0x3e27c; + continue; + case 0x3e400: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 10240; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3e41c: + r4 = r29 + 16; + r31=0x3e428; + pc=0x1aa00; + run_1a800(); return; + case 0x3e428: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3e438; + pc=0x21800; + run_21800(); return; + case 0x3e438: + r31=0x3e440; + pc=0x27c00; + run_27800(); return; + case 0x3e440: + if(r2 != r0) { + pc=0x3e41c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3e600: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 9728; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3e61c: + r4 = r29 + 16; + r31=0x3e628; + pc=0x1aa00; + run_1a800(); return; + case 0x3e628: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3e638; + pc=0x21800; + run_21800(); return; + case 0x3e638: + r31=0x3e640; + pc=0x27c00; + run_27800(); return; + case 0x3e640: + if(r2 != r0) { + pc=0x3e61c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3e800: + pc=0x3e800; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_3e800() throws ExecutionException { /* 0x3e800 - 0x3f000 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x3e800: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 9216; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3e81c: + r4 = r29 + 16; + r31=0x3e828; + pc=0x1aa00; + run_1a800(); return; + case 0x3e828: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3e838; + pc=0x21800; + run_21800(); return; + case 0x3e838: + r31=0x3e840; + pc=0x27c00; + run_27800(); return; + case 0x3e840: + if(r2 != r0) { + pc=0x3e81c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3ea00: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 8704; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3ea1c: + r4 = r29 + 16; + r31=0x3ea28; + pc=0x1aa00; + run_1a800(); return; + case 0x3ea28: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3ea38; + pc=0x21800; + run_21800(); return; + case 0x3ea38: + r31=0x3ea40; + pc=0x27c00; + run_27800(); return; + case 0x3ea40: + if(r2 != r0) { + pc=0x3ea1c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3ec00: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 8192; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3ec1c: + r4 = r29 + 16; + r31=0x3ec28; + pc=0x1aa00; + run_1a800(); return; + case 0x3ec28: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3ec38; + pc=0x21800; + run_21800(); return; + case 0x3ec38: + r31=0x3ec40; + pc=0x27c00; + run_27800(); return; + case 0x3ec40: + if(r2 != r0) { + pc=0x3ec1c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3ee00: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 7680; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3ee1c: + r4 = r29 + 16; + r31=0x3ee28; + pc=0x1aa00; + run_1a800(); return; + case 0x3ee28: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3ee38; + pc=0x21800; + run_21800(); return; + case 0x3ee38: + r31=0x3ee40; + pc=0x27c00; + run_27800(); return; + case 0x3ee40: + if(r2 != r0) { + pc=0x3ee1c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3f000: + pc=0x3f000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_3f000() throws ExecutionException { /* 0x3f000 - 0x3f800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x3f000: + r2 = 2 << 16; + r29 = r29 + -72; + r2 = r2 + 7168; + page[(r29+68)>>>2] = r31; + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3f01c: + r4 = r29 + 16; + r31=0x3f028; + pc=0x1aa00; + run_1a800(); return; + case 0x3f028: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3f038; + pc=0x21800; + run_21800(); return; + case 0x3f038: + r31=0x3f040; + pc=0x27c00; + run_27800(); return; + case 0x3f040: + if(r2 != r0) { + pc=0x3f01c; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3f200: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r29 = r29 + -72; + r2= page[(r2+4)>>>2]; + page[(r29+68)>>>2] = r31; + r2 = r2 & 8; + if(r2 != r0) { + pc=0x3f274; + continue; + } + r2 = 2 << 16; + r2 = r2 + 9216; + case 0x3f228: + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3f234: + r4 = r29 + 16; + r31=0x3f240; + pc=0x1aa00; + run_1a800(); return; + case 0x3f240: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3f250; + pc=0x21800; + run_21800(); return; + case 0x3f250: + r31=0x3f258; + pc=0x27c00; + run_27800(); return; + case 0x3f258: + if(r2 != r0) { + pc=0x3f234; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3f274: + r2 = 2 << 16; + r2 = r2 + 8704; + pc=0x3f228; + continue; + case 0x3f400: + r2 = 6 << 16; + r2= page[(r2+31424)>>>2]; + r29 = r29 + -72; + r2= page[(r2+4)>>>2]; + page[(r29+68)>>>2] = r31; + r2 = r2 & 8; + if(r2 != r0) { + pc=0x3f474; + continue; + } + r2 = 2 << 16; + r2 = r2 + 8192; + case 0x3f428: + page[(r29+48)>>>2] = r2; + page[(r29+52)>>>2] = r0; + addr=r29+56; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x3f434: + r4 = r29 + 16; + r31=0x3f440; + pc=0x1aa00; + run_1a800(); return; + case 0x3f440: + r4 = r29 + 16; + r5 = r29 + 48; + r31=0x3f450; + pc=0x21800; + run_21800(); return; + case 0x3f450: + r31=0x3f458; + pc=0x27c00; + run_27800(); return; + case 0x3f458: + if(r2 != r0) { + pc=0x3f434; + continue; + } + r31= page[(r29+68)>>>2]; + r2 = r0 + 1; + r29 = r29 + 72; + pc=r31; + return; + case 0x3f474: + r2 = 2 << 16; + r2 = r2 + 7680; + pc=0x3f428; + continue; + case 0x3f600: + r29 = r29 + -64; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r20; + page[(r29+52)>>>2] = r19; + page[(r29+48)>>>2] = r18; + page[(r29+44)>>>2] = r17; + page[(r29+40)>>>2] = r16; + r31=0x3f624; + pc=0x23000; + run_23000(); return; + case 0x3f624: + r3 = r0 + 32; + if(r2 == r3) { + pc=0x3f75c; + continue; + } + case 0x3f630: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 61; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x36280; + if(r3 == r2) { + pc=0x3f680; continue; } - r5 = 5 << 16; + r5 = 6 << 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]; + r5 = r5 + 5020; + r31=0x3f654; + pc=0x1fc00; + run_1f800(); return; + case 0x3f654: + r31=0x3f65c; + pc=0x23800; + run_23800(); return; + case 0x3f65c: + r31= page[(r29+60)>>>2]; + r20= page[(r29+56)>>>2]; + r19= page[(r29+52)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36280: - /* Next insn is delay slot */ - r31 = 0x36288; - pc = 0x23400; - run_23400(); - return; - case 0x36288: + case 0x3f680: + r31=0x3f688; + pc=0x23000; + run_23000(); return; + case 0x3f688: r18 = 6 << 16; r4 = r29 + 16; r20 = 6 << 16; - /* Next insn is delay slot */ - r31 = 0x3629c; - pc = 0x1a800; - run_1a800(); - return; - case 0x3629c: + r31=0x3f69c; + pc=0x1a400; + run_1a000(); return; + case 0x3f69c: r17 = r0 + r0; 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; + r18 = r18 + 12172; + r20 = r20 + 12180; + case 0x3f6ac: + r31=0x3f6b4; + pc=0x27c00; + run_27800(); return; + case 0x3f6b4: + if(r2 == r0) { + pc=0x3f6fc; continue; } - 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; + case 0x3f6bc: + r31=0x3f6c4; + pc=0x26e00; + run_26800(); return; + case 0x3f6c4: + if(r2 == r0) { + pc=0x3f654; continue; } - r16 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; + r16= page[(r19+17104)>>>2]; r5 = r18 + r0; r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x362e0; - pc = 0x47e00; - run_47e00(); - return; - case 0x362e0: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x36338; + r31=0x3f6e0; + pc=0x51600; + run_51000(); return; + case 0x3f6e0: + if(r2 != r0) { + pc=0x3f738; continue; } r17 = r17 | 1; - /* Next insn is delay slot */ - r31 = 0x362f4; - pc = 0x25a00; - run_25a00(); - return; - case 0x362f4: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x362bc; + r31=0x3f6f4; + pc=0x27c00; + run_27800(); return; + case 0x3f6f4: + if(r2 != r0) { + pc=0x3f6bc; continue; } - case 0x362fc: - r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + case 0x3f6fc: + r4= page[(r29+24)>>>2]; r5 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x3630c; - pc = 0x2d800; - run_2d800(); - return; - 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]; + r31=0x3f70c; + pc=0x36800; + run_36800(); return; + case 0x3f70c: + r31=0x3f714; + pc=0x24000; + run_24000(); return; + case 0x3f714: + r31= page[(r29+60)>>>2]; + r20= page[(r29+56)>>>2]; + r19= page[(r29+52)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36338: + case 0x3f738: r4 = r16 + r0; 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; + r31=0x3f748; + pc=0x51600; + run_51000(); return; + case 0x3f748: + if(r2 != r0) { + pc=0x3f76c; continue; } r17 = r17 | 2; - /* Next insn is delay slot */ - pc = 0x362ac; + pc=0x3f6ac; continue; - case 0x3635c: - /* Next insn is delay slot */ - r31 = 0x36364; - pc = 0x23400; - run_23400(); - return; - case 0x36364: - /* Next insn is delay slot */ - pc = 0x36230; + case 0x3f75c: + r31=0x3f764; + pc=0x23000; + run_23000(); return; + case 0x3f764: + pc=0x3f630; continue; - case 0x3636c: + case 0x3f76c: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -29448; - /* Next insn is delay slot */ - r31 = 0x36380; - pc = 0x20600; - run_20600(); - return; - case 0x36380: - /* Next insn is delay slot */ - pc = 0x36254; + r5 = r5 + 12192; + r31=0x3f780; + pc=0x1fc00; + run_1f800(); return; + case 0x3f780: + pc=0x3f654; continue; - case 0x36400: - pc = 0x36400; + case 0x3f800: + pc=0x3f800; 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_3f800() throws ExecutionException { /* 0x3f800 - 0x40000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x36400: + for(;;) { + switch(pc) { + case 0x3f800: 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 = 0x36414; - pc = 0x23400; - run_23400(); - return; - 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; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r16; + r31=0x3f814; + pc=0x23000; + run_23000(); return; + case 0x3f814: + r31=0x3f81c; + pc=0x26e00; + run_26800(); return; + case 0x3f81c: + if(r2 != r0) { + pc=0x3f840; 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]; + case 0x3f824: + r31=0x3f82c; + pc=0x23800; + run_23800(); return; + case 0x3f82c: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36440: + case 0x3f840: r4 = 6 << 16; r6 = 6 << 16; - r4 = r4 + -19012; + r4 = r4 + 22628; r5 = r29 + 16; - 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; + r6 = r6 + 17104; + r31=0x3f85c; + pc=0x42400; + run_42000(); return; + case 0x3f85c: + if(r2 == r0) { + pc=0x3f8bc; continue; } - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x364bc; + r16= page[(r29+16)>>>2]; + if(r16 == r0) { + pc=0x3f8bc; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 32; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x364d8; + if(r3 == r2) { + pc=0x3f8d8; continue; } - case 0x36484: - /* Next insn is delay slot */ - pc = r16; - r31 = 0x3648c; + case 0x3f884: + pc=r16; + r31=0x3f88c; return; - case 0x3648c: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x36424; + case 0x3f88c: + if(r2 == r0) { + pc=0x3f824; continue; } r3 = r0 + 1; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x3642c; + if(r2 != r3) { + pc=0x3f82c; continue; } - /* 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]; + r31=0x3f8a8; + pc=0x24000; + run_24000(); return; + case 0x3f8a8: + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x364bc: + case 0x3f8bc: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -29064; - /* Next insn is delay slot */ - r31 = 0x364d0; - pc = 0x20600; - run_20600(); - return; - case 0x364d0: - /* Next insn is delay slot */ - pc = 0x36424; + r5 = r5 + 12576; + r31=0x3f8d0; + pc=0x1fc00; + run_1f800(); return; + case 0x3f8d0: + pc=0x3f824; continue; - case 0x364d8: - /* Next insn is delay slot */ - r31 = 0x364e0; - pc = 0x23400; - run_23400(); - return; - case 0x364e0: - /* Next insn is delay slot */ - pc = 0x36484; + case 0x3f8d8: + r31=0x3f8e0; + pc=0x23000; + run_23000(); return; + case 0x3f8e0: + pc=0x3f884; continue; - case 0x36600: - pc = 0x36600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_36600() throws ExecutionException { /* 0x36600 - 0x36800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x36600: - r2 = readPages[(r28 + -31292) >>> 12][((r28 + -31292) >>> 2) & 0x3ff]; + case 0x3fa00: + r2= page[(r28+-31292)>>>2]; 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; + page[(r4+0)>>>2] = r2; + page[(r28+-31292)>>>2] = r2; + r2= page[(r28+-32672)>>>2]; + page[(r28+-32672)>>>2] = r4; + r2= page[(r2+4)>>>2]; + page[(r4+8)>>>2] = r5; + page[(r4+4)>>>2] = r2; + page[(r4+12)>>>2] = r6; + page[(r4+16)>>>2] = r7; + pc=r31; return; - case 0x36800: - pc = 0x36800; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_36800() throws ExecutionException { /* 0x36800 - 0x36a00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x36800: - r2 = readPages[(r28 + -31296) >>> 12][((r28 + -31296) >>> 2) & 0x3ff]; + case 0x3fc00: + r2= page[(r28+-31296)>>>2]; 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; + page[(r28+-31296)>>>2] = r2; + page[(r4+4)>>>2] = r2; + 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; + case 0x3fe00: + r2= page[(r4+16)>>>2]; + if(r2 != r0) { + pc=0x3fe18; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x36a18: - r4 = readPages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x44800; - run_44800(); + case 0x3fe18: + r4= page[(r4+12)>>>2]; + pc=0x4e000; + run_4e000(); return; + case 0x40000: + pc=0x40000; return; - case 0x36c00: - pc = 0x36c00; - 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_40000() throws ExecutionException { /* 0x40000 - 0x40800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x36c00: + for(;;) { + switch(pc) { + case 0x40000: r3 = r0 + 2; r2 = 6 << 16; - writePages[(r2 + -11412) >>> 12][((r2 + -11412) >>> 2) & 0x3ff] = r3; - writePages[(r28 + -31292) >>> 12][((r28 + -31292) >>> 2) & 0x3ff] = r3; + page[(r2+30236)>>>2] = r3; + page[(r28+-31292)>>>2] = r3; r3 = 6 << 16; - r2 = r2 + -11412; - r3 = r3 + -30124; - writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r2 = r2 + 30236; + r3 = r3 + 11516; + page[(r2+8)>>>2] = r3; r3 = 6 << 16; - r3 = r3 + -24444; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r3 = r3 + 17196; + page[(r2+12)>>>2] = r3; r3 = r0 + 1; - 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; + page[(r2+16)>>>2] = r0; + page[(r28+-32672)>>>2] = r2; + page[(r28+-31296)>>>2] = r3; + page[(r2+4)>>>2] = r3; + pc=r31; return; - case 0x36e00: - pc = 0x36e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_36e00() throws ExecutionException { /* 0x36e00 - 0x37000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x36e00: - r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + case 0x40200: + r2= page[(r4+16)>>>2]; r6 = 6 << 16; - r7 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - r6 = r6 + -26200; + r7= page[(r2+0)>>>2]; + r6 = r6 + 15440; r3 = r4 + r0; - if (r7 == r6) { - /* Next insn is delay slot */ - pc = 0x36e24; + if(r7 == r6) { + pc=0x40224; continue; } - case 0x36e1c: - /* Next insn is delay slot */ - pc = r31; + case 0x4021c: + pc=r31; return; - case 0x36e24: - r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x40224: + r4= page[(r2+8)>>>2]; r6 = r0 + 1; - if (r4 != r6) { - /* Next insn is delay slot */ - pc = 0x36e1c; + if(r4 != r6) { + pc=0x4021c; continue; } - r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; - if (r6 != r4) { - /* Next insn is delay slot */ - pc = 0x36e1c; + r6= page[(r2+24)>>>2]; + if(r6 != r4) { + pc=0x4021c; continue; } r4 = r5 + r0; - r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r6= page[(r2+16)>>>2]; 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; - case 0x37000: - pc = 0x37000; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_37000() throws ExecutionException { /* 0x37000 - 0x37200 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x37000: - r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r7= page[(r3+12)>>>2]; + r5 = r5 + 12616; + pc=0x4b800; + run_4b800(); return; + case 0x40400: + r2= page[(r4+16)>>>2]; r3 = r4 + r0; - r6 = readPages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff]; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x3702c; + r6= page[(r2+36)>>>2]; + if(r6 == r0) { + pc=0x4042c; continue; } 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; + r7= page[(r2+0)>>>2]; + r6 = r6 + 15440; + if(r7 == r6) { + pc=0x40434; continue; } - case 0x3702c: - /* Next insn is delay slot */ - pc = r31; + case 0x4042c: + pc=r31; return; - case 0x37034: - r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x40434: + r4= page[(r2+8)>>>2]; r6 = r0 + 1; - if (r4 != r6) { - /* Next insn is delay slot */ - pc = 0x3702c; + if(r4 != r6) { + pc=0x4042c; continue; } - r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; - if (r6 == r4) { - /* Next insn is delay slot */ - pc = 0x3702c; + r6= page[(r2+24)>>>2]; + if(r6 == r4) { + pc=0x4042c; continue; } r4 = r5 + r0; - r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r6= page[(r2+16)>>>2]; 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; - case 0x37200: - pc = 0x37200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_37200() throws ExecutionException { /* 0x37200 - 0x37400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x37200: - r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r7= page[(r3+12)>>>2]; + r5 = r5 + 12616; + pc=0x4b800; + run_4b800(); return; + case 0x40600: + r2= page[(r4+16)>>>2]; r3 = r4 + r0; - r6 = readPages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff]; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x3722c; + r6= page[(r2+36)>>>2]; + if(r6 != r0) { + pc=0x4062c; continue; } 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; + r7= page[(r2+0)>>>2]; + r6 = r6 + 15440; + if(r7 == r6) { + pc=0x40634; continue; } - case 0x3722c: - /* Next insn is delay slot */ - pc = r31; + case 0x4062c: + pc=r31; return; - case 0x37234: - r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x40634: + r4= page[(r2+8)>>>2]; r6 = r0 + 1; - if (r4 != r6) { - /* Next insn is delay slot */ - pc = 0x3722c; + if(r4 != r6) { + pc=0x4062c; continue; } - r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; - if (r6 == r4) { - /* Next insn is delay slot */ - pc = 0x3722c; + r6= page[(r2+24)>>>2]; + if(r6 == r4) { + pc=0x4062c; continue; } r4 = r5 + r0; - r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r6= page[(r2+16)>>>2]; r5 = 6 << 16; - r7 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; - r5 = r5 + -29024; - /* Next insn is delay slot */ - pc = 0x42000; - run_42000(); + r7= page[(r3+12)>>>2]; + r5 = r5 + 12616; + pc=0x4b800; + run_4b800(); return; + case 0x40800: + pc=0x40800; return; - case 0x37400: - pc = 0x37400; - 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_40800() throws ExecutionException { /* 0x40800 - 0x41000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x37400: + for(;;) { + switch(pc) { + case 0x40800: r29 = r29 + -32; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; - r16 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + page[(r29+16)>>>2] = r16; + r16= page[(r4+16)>>>2]; 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; + r3= page[(r16+0)>>>2]; + r2 = r2 + 15440; + page[(r29+20)>>>2] = r17; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; r17 = r4 + r0; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x3744c; + if(r3 == r2) { + pc=0x4084c; 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]; + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3744c: + case 0x4084c: r2 = 6 << 16; - r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; + r2= page[(r2+31352)>>>2]; r18 = r5 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x37470; + if(r2 == r0) { + pc=0x40870; continue; } - r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r3= page[(r16+24)>>>2]; r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x37604; - run_37600(); - return; + if(r3 == r2) { + pc=0x40a04; + continue; } - case 0x37470: + case 0x40870: r5 = 6 << 16; - r6 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r6= page[(r17+12)>>>2]; 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]; + r5 = r5 + 12640; + r31=0x40888; + pc=0x4b800; + run_4b800(); return; + case 0x40888: + r2= page[(r16+12)>>>2]; r3 = r0 + 4; r2 = r2 & 7; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x37550; + if(r2 == r3) { + pc=0x40950; continue; } r3 = r0 + 6; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x37550; + if(r2 == r3) { + pc=0x40950; continue; } r3 = r0 + 2; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x37574; + if(r2 == r3) { + pc=0x40974; continue; } r4 = 6 << 16; - r4 = r4 + -28980; + r4 = r4 + 12660; r5 = r0 + 1; r6 = r0 + 3; 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; + r31=0x408d0; + pc=0x4d600; + run_4d000(); return; + case 0x408d0: + r5= page[(r16+8)>>>2]; + if(r5 == r0) { + pc=0x40998; continue; } r2 = r0 + 1; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x3764c; - run_37600(); - return; + if(r5 == r2) { + pc=0x40a4c; + continue; } r2 = r0 + 2; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x37628; - run_37600(); - return; + if(r5 == r2) { + pc=0x40a28; + continue; } 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]; + r4 = r4 + 12680; + r31=0x40908; + pc=0x21400; + run_21000(); return; + case 0x40908: + r2= page[(r16+12)>>>2]; r2 = r2 & 16; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x375e0; + if(r2 != r0) { + pc=0x409e0; continue; } - case 0x3751c: - r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x375bc; + case 0x4091c: + r2= page[(r16+36)>>>2]; + if(r2 == r0) { + pc=0x409bc; continue; } - 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]; + case 0x4092c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r5 = r18 + r0; - r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r18= page[(r29+24)>>>2]; r4 = r0 + 10; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x42200; - run_42200(); - return; - case 0x37550: + pc=0x4ba00; + run_4b800(); return; + case 0x40950: r4 = 6 << 16; - r4 = r4 + -28988; + r4 = r4 + 12652; r5 = r0 + 1; r6 = r0 + 5; r7 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x3756c; - pc = 0x43e00; - run_43e00(); - return; - case 0x3756c: - /* Next insn is delay slot */ - pc = 0x374d0; + r31=0x4096c; + pc=0x4d600; + run_4d000(); return; + case 0x4096c: + pc=0x408d0; continue; - case 0x37574: + case 0x40974: r4 = 6 << 16; - r4 = r4 + -28996; + r4 = r4 + 12644; 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; + r31=0x40990; + pc=0x4d600; + run_4d000(); return; + case 0x40990: + pc=0x408d0; continue; - case 0x37598: + case 0x40998: r4 = 6 << 16; - r4 = r4 + -28976; + r4 = r4 + 12664; r5 = r0 + 1; r6 = r0 + 2; r7 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x375b4; - pc = 0x43e00; - run_43e00(); - return; - case 0x375b4: - /* Next insn is delay slot */ - pc = 0x37508; + r31=0x409b4; + pc=0x4d600; + run_4d000(); return; + case 0x409b4: + pc=0x40908; continue; - case 0x375bc: + case 0x409bc: r4 = 6 << 16; - r4 = r4 + -28932; + r4 = r4 + 12708; 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; + r31=0x409d8; + pc=0x4d600; + run_4d000(); return; + case 0x409d8: + pc=0x4092c; continue; - case 0x375e0: + case 0x409e0: r4 = 6 << 16; - r4 = r4 + -28940; + r4 = r4 + 12700; r5 = r0 + 1; r6 = r0 + 4; r7 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x375fc; - pc = 0x43e00; - run_43e00(); - return; - case 0x375fc: - /* Next insn is delay slot */ - pc = 0x3751c; + r31=0x409fc; + pc=0x4d600; + run_4d000(); return; + case 0x409fc: + pc=0x4091c; continue; - 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: + case 0x40a04: r4 = 6 << 16; - r4 = r4 + -29008; + r4 = r4 + 12632; r5 = r0 + 1; r6 = r0 + 5; r7 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x37620; - pc = 0x43e00; - run_43e00(); - return; - case 0x37620: - /* Next insn is delay slot */ - pc = 0x37470; - run_37400(); - return; - case 0x37628: + r31=0x40a20; + pc=0x4d600; + run_4d000(); return; + case 0x40a20: + pc=0x40870; + continue; + case 0x40a28: r5 = 6 << 16; - r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; - r6 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r7= page[(r16+20)>>>2]; + r6= page[(r16+16)>>>2]; 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 = r5 + 12672; + r31=0x40a44; + pc=0x4b800; + run_4b800(); return; + case 0x40a44: + pc=0x40908; + continue; + case 0x40a4c: r5 = 6 << 16; - r6 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r6= page[(r16+16)>>>2]; 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_37800() throws ExecutionException { /* 0x37800 - 0x37a00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x37800: + r5 = r5 + 12668; + r31=0x40a64; + pc=0x4b800; + run_4b800(); return; + case 0x40a64: + pc=0x40908; + continue; + case 0x40c00: r29 = r29 + -32; r5 = 6 << 16; r6 = r4 + r0; - r5 = r5 + -11392; + r5 = r5 + 30256; r4 = r29 + 16; 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; + page[(r29+28)>>>2] = r31; + r31=0x40c24; + pc=0x42800; + run_42800(); return; + case 0x40c24: + if(r2 != r0) { + pc=0x40c44; 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]; + r2= page[(r29+16)>>>2]; + r31= page[(r29+28)>>>2]; + r2= page[(r2+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x37844: + case 0x40c44: 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; + r31=0x40c50; + pc=0x20200; + run_20000(); return; + case 0x40c50: + r3= page[(r29+16)>>>2]; + r31= page[(r29+28)>>>2]; + page[(r3+16)>>>2] = 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; + r3= page[(r3+31320)>>>2]; + page[(r2+0)>>>2] = r0; + page[(r2+32)>>>2] = r3; + page[(r2+36)>>>2] = r0; + page[(r2+40)>>>2] = r0; + page[(r2+44)>>>2] = r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x37a00: - pc = 0x37a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_37a00() throws ExecutionException { /* 0x37a00 - 0x37c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x37a00: - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x40e00: + r2= page[(r4+0)>>>2]; 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; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; r16 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x37a80; + if(r2 == r0) { + pc=0x40e80; continue; } - r3 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r3= page[(r5+0)>>>2]; r17 = r5 + r0; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x37aa4; + if(r2 == r3) { + pc=0x40ea4; continue; } r6 = r6 & 2; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x37a50; + if(r6 != r0) { + pc=0x40e50; continue; } - r5 = 5 << 16; + r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + 29612; - /* Next insn is delay slot */ - r31 = 0x37a50; - pc = 0x20600; - run_20600(); - return; - case 0x37a50: + r5 = r5 + 5036; + r31=0x40e50; + pc=0x1fc00; + run_1f800(); return; + case 0x40e50: 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]; + r31=0x40e64; + pc=0x56fe0; + run_56800(); return; + case 0x40e64: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + page[(r16+36)>>>2] = r0; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x37a80: + case 0x40e80: 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]; + r31=0x40e8c; + pc=0x56fe0; + run_56800(); return; + case 0x40e8c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x40ea4: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r25= page[(r2+12)>>>2]; r6 = r6 & 1; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r25; + pc=r25; return; - case 0x37c00: - pc = 0x37c00; + case 0x41000: + pc=0x41000; 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_41000() throws ExecutionException { /* 0x41000 - 0x41800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x37c00: + for(;;) { + switch(pc) { + case 0x41000: 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; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; r16 = r4 + r0; r17 = r5 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x37cd8; + if(r5 == r0) { + pc=0x410d8; continue; } - case 0x37c20: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x37cf0; + case 0x41020: + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x410f0; continue; } - case 0x37c30: + case 0x41030: r3 = 6 << 16; - r3 = r3 + -26200; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x37c64; + r3 = r3 + 15440; + if(r2 == r3) { + pc=0x41064; 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= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -28888; + r5 = r5 + 12752; 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; + pc=0x1fc00; + run_1f800(); return; + case 0x41064: + r2= page[(r16+36)>>>2]; + if(r2 == r0) { + pc=0x410ac; continue; } - r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2= page[(r16+12)>>>2]; r2 = r2 & 7; - if (r2 == r17) { - /* Next insn is delay slot */ - pc = 0x37cc0; + if(r2 == r17) { + pc=0x410c0; 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= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -28844; + r5 = r5 + 12796; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x37cac: - r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + pc=0x1fc00; + run_1f800(); return; + case 0x410ac: + r3= page[(r16+12)>>>2]; 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]; + page[(r16+12)>>>2] = r17; + case 0x410c0: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x37cd8: + case 0x410d8: 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; + r4 = r4 + 12720; + r31=0x410e8; + pc=0x21400; + run_21000(); return; + case 0x410e8: + pc=0x41020; continue; - case 0x37cf0: + case 0x410f0: r4 = 6 << 16; - r4 = r4 + -28904; + r4 = r4 + 12736; 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; + r31=0x41104; + pc=0x21400; + run_21000(); return; + case 0x41104: + r2= page[(r16+0)>>>2]; + pc=0x41030; 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 = 6 << 16; - r4 = r4 + -11392; - r5 = r0 + r0; - r6 = r6 + 29696; - /* Next insn is delay slot */ - pc = 0x39200; - run_39200(); - return; - case 0x38200: - pc = 0x38200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_38200() throws ExecutionException { /* 0x38200 - 0x38400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x38200: + case 0x41200: r29 = r29 + -32; - r6 = 3 << 16; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r5 = 6 << 16; + r5 = r5 + 30256; + page[(r29+24)>>>2] = r16; + r6 = r0 + r0; + r16 = r4 + r0; + r7 = r0 + 1; + r4 = r29 + 16; + page[(r29+28)>>>2] = r31; + r31=0x4122c; + pc=0x42800; + run_42800(); return; + case 0x4122c: + if(r2 != r0) { + pc=0x4126c; + continue; + } + r2= page[(r29+16)>>>2]; + r3 = 6 << 16; + r2= page[(r2+16)>>>2]; + r3 = r3 + 15440; + r31= page[(r29+28)>>>2]; + page[(r2+0)>>>2] = r3; + r3 = r0 + 1; + page[(r2+16)>>>2] = r16; + page[(r2+8)>>>2] = r3; + r16= page[(r29+24)>>>2]; + page[(r2+12)>>>2] = r0; + r29 = r29 + 32; + pc=r31; + return; + case 0x4126c: + r4 = r0 + 48; + r31=0x41278; + pc=0x20200; + run_20000(); return; + case 0x41278: + r3= page[(r29+16)>>>2]; + r31= page[(r29+28)>>>2]; + page[(r3+16)>>>2] = r2; + r3 = 6 << 16; + r3= page[(r3+31320)>>>2]; + page[(r2+0)>>>2] = r0; + page[(r2+32)>>>2] = r3; + r3 = 6 << 16; + r3 = r3 + 15440; + page[(r2+0)>>>2] = r3; + r3 = r0 + 1; + page[(r2+16)>>>2] = r16; + page[(r2+36)>>>2] = r0; + r16= page[(r29+24)>>>2]; + page[(r2+40)>>>2] = r0; + page[(r2+44)>>>2] = r0; + page[(r2+8)>>>2] = r3; + page[(r2+12)>>>2] = r0; + r29 = r29 + 32; + pc=r31; + return; + case 0x41400: + r7 = r4 + r0; + r6 = 4 << 16; + r4 = 6 << 16; + r4 = r4 + 30256; + r5 = r0 + r0; + r6 = r6 + 2048; + pc=0x42a00; + run_42800(); return; + case 0x41600: + r29 = r29 + -32; + r6 = 4 << 16; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; r17 = 6 << 16; r16 = r4 + r0; r7 = r16 + r0; - r4 = r17 + -11392; - r6 = r6 + 29184; + r4 = r17 + 30256; + r6 = r6 + 1536; r5 = r0 + r0; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; - /* Next insn is delay slot */ - r31 = 0x38234; - pc = 0x39200; - run_39200(); - return; - case 0x38234: + page[(r29+28)>>>2] = r31; + r31=0x41634; + pc=0x42a00; + run_42800(); return; + case 0x41634: r5 = r16 + r0; r4 = r0 + 10; - /* Next insn is delay slot */ - r31 = 0x38244; - pc = 0x42200; - run_42200(); - return; - case 0x38244: - r6 = 3 << 16; + r31=0x41644; + pc=0x4ba00; + run_4b800(); return; + case 0x41644: + r6 = 4 << 16; r7 = r16 + r0; - r4 = r17 + -11392; - r6 = r6 + 28672; + r4 = r17 + 30256; + r6 = r6 + 1024; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x38260; - pc = 0x39200; - run_39200(); - return; - case 0x38260: + r31=0x41660; + pc=0x42a00; + run_42800(); return; + case 0x41660: r5 = r16 + r0; r4 = r0 + 10; - /* 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]; + r31=0x41670; + pc=0x4ba00; + run_4b800(); return; + case 0x41670: + r31= page[(r29+28)>>>2]; + r4 = r17 + 30256; + r6 = 4 << 16; + r17= page[(r29+24)>>>2]; r7 = r16 + r0; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16= page[(r29+20)>>>2]; r5 = r0 + r0; - r6 = r6 + 28160; + r6 = r6 + 512; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x39200; - run_39200(); + pc=0x42a00; + run_42800(); return; + case 0x41800: + pc=0x41800; return; - case 0x38400: - pc = 0x38400; - 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_38400() throws ExecutionException { /* 0x38400 - 0x38600 */ + private final void run_41800() throws ExecutionException { /* 0x41800 - 0x42000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x38400: - r29 = r29 + -48; - writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + for(;;) { + switch(pc) { + case 0x41800: + r29 = r29 + -56; + page[(r29+44)>>>2] = r20; r20 = 6 << 16; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + page[(r29+36)>>>2] = 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; + r4 = r20 + 17104; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r21; + page[(r29+40)>>>2] = r19; + page[(r29+32)>>>2] = r17; + page[(r29+28)>>>2] = r16; + r31=0x41838; + pc=0x1c400; + run_1c000(); return; + case 0x41838: + r2= page[(r28+-32672)>>>2]; + r5 = 6 << 16; + r6= page[(r2+0)>>>2]; + r4 = r29 + 16; + r5 = r5 + 30256; + r7 = r0 + 1; + r31=0x41858; + pc=0x42800; + run_42800(); return; + case 0x41858: + if(r2 != r0) { + pc=0x419b4; + continue; + } + r2= page[(r29+16)>>>2]; + r21= page[(r2+16)>>>2]; + r2= page[(r21+0)>>>2]; + if(r2 == r0) { + pc=0x41a14; continue; } r3 = 6 << 16; - r3 = r3 + -26200; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x38484; + r3 = r3 + 15440; + if(r2 == r3) { + pc=0x418a4; continue; } r4 = 6 << 16; - r4 = r4 + -28820; + r4 = r4 + 12820; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x38484; - pc = 0x21a00; - run_21a00(); - return; - case 0x38484: + r31=0x418a4; + pc=0x21400; + run_21000(); return; + case 0x418a4: 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; + case 0x418a8: + r2= page[(r2+31320)>>>2]; + r3= page[(r21+32)>>>2]; + if(r3 == r2) { + pc=0x419a8; continue; } - writePages[(r21 + 32) >>> 12][((r21 + 32) >>> 2) & 0x3ff] = r2; - writePages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff] = r0; + page[(r21+32)>>>2] = r2; + page[(r21+16)>>>2] = r0; r16 = r0 + r0; - case 0x384a8: - r17 = r20 + -24536; - r3 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + case 0x418c8: + r17 = r20 + 17104; + r3= page[(r17+4)>>>2]; r19 = r17 + r0; r3 = r3 + -1; - writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x384f0; + page[(r17+4)>>>2] = r3; + pc=0x41910; continue; - case 0x384c4: - r5 = readPages[(r20 + -24536) >>> 12][((r20 + -24536) >>> 2) & 0x3ff]; + case 0x418e4: + r5= page[(r20+17104)>>>2]; 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; + page[(r17+4)>>>2] = r6; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r16 == r0) { + pc=0x41958; 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; + case 0x4190c: + r3= page[(r19+4)>>>2]; + case 0x41910: + r5= page[(r17+8)>>>2]; + if(r5 != r3) { + pc=0x418e4; 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]; + r31=0x4192c; + pc=0x1c000; + run_1c000(); return; + case 0x4192c: + r3= page[(r19+4)>>>2]; + r5= page[(r20+17104)>>>2]; 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; + page[(r17+4)>>>2] = r6; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r16 != r0) { + pc=0x4190c; continue; } - case 0x38538: + case 0x41958: 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; + r31=0x41968; + pc=0x1c400; + run_1c000(); return; + case 0x41968: + if(r18 == r0) { + pc=0x41980; continue; } - r2 = readPages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff]; + r2= page[(r21+16)>>>2]; 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; + page[(r21+16)>>>2] = r2; + case 0x41980: + r31= page[(r29+52)>>>2]; + r21= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 56; + pc=r31; return; - case 0x38588: - r16 = readPages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x384a8; + case 0x419a8: + r16= page[(r21+16)>>>2]; + pc=0x418c8; continue; - case 0x38594: + case 0x419b4: + r4 = r0 + 48; + r31=0x419c0; + pc=0x20200; + run_20000(); return; + case 0x419c0: + r21 = r2 + r0; + r2= page[(r29+16)>>>2]; + page[(r2+16)>>>2] = r21; 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; + r3= page[(r2+31320)>>>2]; + page[(r21+0)>>>2] = r0; + page[(r21+32)>>>2] = r3; + page[(r21+36)>>>2] = r0; + page[(r21+40)>>>2] = r0; + page[(r21+44)>>>2] = r0; + case 0x419ec: + r3 = 6 << 16; + r3 = r3 + 15440; + page[(r21+0)>>>2] = r3; + r3 = r0 + 1; + page[(r21+8)>>>2] = r3; + page[(r21+12)>>>2] = r0; + page[(r21+24)>>>2] = r0; + page[(r21+16)>>>2] = r0; + pc=0x418a8; 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 */ + case 0x41a14: + r2 = 6 << 16; + pc=0x419ec; + continue; + case 0x41c00: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r23; + page[(r29+52)>>>2] = r22; + page[(r29+48)>>>2] = r21; + page[(r29+44)>>>2] = r20; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + page[(r29+32)>>>2] = r17; + page[(r29+28)>>>2] = r16; + if(r5 == r2) { + pc=0x41c48; continue; } r4 = 6 << 16; - r4 = r4 + -28792; - /* Next insn is delay slot */ - r31 = 0x38648; - pc = 0x21a00; - run_21a00(); - return; - case 0x38648: + r4 = r4 + 12848; + r31=0x41c48; + pc=0x21400; + run_21000(); return; + case 0x41c48: r18 = 6 << 16; - r4 = r18 + -17540; + r4 = r18 + 24100; 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; + r31=0x41c5c; + pc=0x1be00; + run_1b800(); return; + case 0x41c5c: + r5= page[(r23+17104)>>>2]; + r4 = r18 + 24100; + r31=0x41c6c; + pc=0x1c600; + run_1c000(); return; + case 0x41c6c: + r21 = 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 */ + r16 = r18 + 24100; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - r20 = r20 + -26200; - r22 = r22 + -26280; - r21 = 5 << 16; + r20 = 6 << 16; + r21 = r21 + 15440; + r22 = r22 + 15360; r19 = r16 + r0; - case 0x3868c: - r3 = r0 + 63; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x38864; - run_38800(); - return; + case 0x41c8c: + r4 = r0 + 63; + if(r2 != r4) { + pc=0x41f08; + continue; } - /* 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 */ + r31=0x41ca0; + pc=0x23000; + run_23000(); return; + case 0x41ca0: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 40; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x387fc; + if(r3 == r2) { + pc=0x41ea0; continue; } - r4 = r29 + 16; + r4 = r29 + 20; 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; + r31=0x41cc4; + pc=0x26200; + run_26000(); return; + case 0x41cc4: + if(r2 != r0) { + pc=0x41ec4; + continue; } - 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]; + case 0x41ccc: + r6= page[(r29+20)>>>2]; + r4 = r29 + 16; + r5 = r20 + 30256; + r7 = r0 + 1; + r31=0x41ce4; + pc=0x42800; + run_42800(); return; + case 0x41ce4: + if(r2 != r0) { + pc=0x41df8; + continue; + } + r2= page[(r29+16)>>>2]; r4 = r0 + 1; - writePages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff] = r4; - if (r3 == r20) { - /* Next insn is delay slot */ - pc = 0x387d4; + r2= page[(r2+16)>>>2]; + r3= page[(r2+0)>>>2]; + page[(r2+36)>>>2] = r4; + if(r3 == r21) { + pc=0x41e78; continue; } - if (r3 != r22) { - /* Next insn is delay slot */ - pc = 0x388d4; - run_38800(); - return; + if(r3 != r22) { + pc=0x41e30; + continue; } - r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; - r4 = r18 + -17540; - r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2= page[(r2+8)>>>2]; + r4 = r18 + 24100; + r6= page[(r2+0)>>>2]; 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; + r31=0x41d2c; + pc=0x1c800; + run_1c800(); return; + case 0x41d2c: + if(r17 == r0) { + pc=0x41d58; 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 */ + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 32; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x3882c; - run_38800(); - return; + if(r2 == r3) { + pc=0x41ed0; + continue; } 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; + if(r2 != r3) { + pc=0x41ee8; continue; } - /* Next insn is delay slot */ - pc = 0x3868c; + case 0x41d50: + r31=0x41d58; + pc=0x23000; + run_23000(); return; + case 0x41d58: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r17 = 6 << 16; + r2 = r3 & 255; + r17 = r17 + 4764; + r2 = r17 + r2; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r4 = tmp; + r2 = r3 + r0; + r4 = r4 & 64; + if(r4 != r0) { + pc=0x41dc8; + continue; + } + pc=0x41c8c; continue; - case 0x38764: - r4 = readPages[(r18 + -17540) >>> 12][((r18 + -17540) >>> 2) & 0x3ff]; + case 0x41d88: + r4= page[(r18+24100)>>>2]; 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 */ + page[(r16+4)>>>2] = r5; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31=0x41da4; + pc=0x23000; + run_23000(); return; + case 0x41da4: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r2 & 255; r3 = r17 + r3; - addr = r3 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x3868c; + if(r3 == r0) { + pc=0x41c8c; 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; + case 0x41dc8: + r3= page[(r16+4)>>>2]; + r4= page[(r16+8)>>>2]; + if(r3 != r4) { + pc=0x41d88; 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 */ + r31=0x41de8; + pc=0x1c000; + run_1c000(); return; + case 0x41de8: + r3= page[(r19+4)>>>2]; + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - /* Next insn is delay slot */ - pc = 0x38764; + pc=0x41d88; 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; + case 0x41df8: + r4 = r0 + 48; + r31=0x41e04; + pc=0x20200; + run_20000(); return; + case 0x41e04: + r3= page[(r29+16)>>>2]; + page[(r3+16)>>>2] = r2; + r3 = 6 << 16; + r3= page[(r3+31320)>>>2]; + page[(r2+0)>>>2] = r0; + page[(r2+32)>>>2] = r3; + r3 = r0 + 1; + page[(r2+40)>>>2] = r0; + page[(r2+44)>>>2] = r0; + page[(r2+36)>>>2] = r3; + case 0x41e30: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 12928; + r31=0x41e44; + pc=0x1fc00; + run_1f800(); return; + case 0x41e44: + r2 = r0 + 1; + case 0x41e48: + r31= page[(r29+60)>>>2]; + r23= page[(r29+56)>>>2]; + r22= page[(r29+52)>>>2]; + r21= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; + r29 = r29 + 64; + pc=r31; + return; + case 0x41e78: + r3= page[(r2+8)>>>2]; + if(r3 != r4) { + pc=0x41f50; + continue; } - 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; + r5= page[(r2+16)>>>2]; + r4 = r18 + 24100; + r31=0x41e98; + pc=0x1ca00; + run_1c800(); return; + case 0x41e98: + pc=0x41d2c; 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; + case 0x41ea0: + r31=0x41ea8; + pc=0x23000; + run_23000(); return; + case 0x41ea8: + r4 = r29 + 20; 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; + r31=0x41ebc; + pc=0x26200; + run_26000(); return; + case 0x41ebc: + if(r2 == r0) { + pc=0x41ccc; + continue; } - case 0x38820: + case 0x41ec4: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x388a4; + pc=0x41e48; 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 */ + case 0x41ed0: + r31=0x41ed8; + pc=0x23000; + run_23000(); return; + case 0x41ed8: + addr=r28+-31268; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 41; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x38730; - run_38600(); - return; + if(r2 == r3) { + pc=0x41d50; + continue; } - case 0x38844: + case 0x41ee8: r5 = 6 << 16; r4 = r0 + -2; - r5 = r5 + -28648; - /* Next insn is delay slot */ - r31 = 0x38858; - pc = 0x20600; - run_20600(); - return; - case 0x38858: + r5 = r5 + 12992; + r31=0x41efc; + pc=0x1fc00; + run_1f800(); return; + case 0x41efc: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x388a4; + pc=0x41e48; continue; - case 0x38864: + case 0x41f08: 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; + r4 = r18 + 24100; + r31=0x41f18; + pc=0x1c400; + run_1c000(); return; + case 0x41f18: + r4 = r23 + 17104; + r31=0x41f24; + pc=0x1be00; + run_1b800(); return; + case 0x41f24: + r5= page[(r18+24100)>>>2]; + r4 = r23 + 17104; + r31=0x41f34; + pc=0x1c600; + run_1c000(); return; + case 0x41f34: + r4 = r23 + 17104; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x388a0; - pc = 0x1ca00; - run_1ca00(); - return; - case 0x388a0: + r31=0x41f44; + pc=0x1c400; + run_1c000(); return; + case 0x41f44: 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]; + pc=0x41e48; + continue; + case 0x41f50: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + 12864; + r31=0x41f64; + pc=0x1fc00; + run_1f800(); return; + case 0x41f64: + r2 = r0 + 1; + pc=0x41e48; + continue; + case 0x42000: + pc=0x42000; + return; + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + } + } + } + private final void run_42000() throws ExecutionException { /* 0x42000 - 0x42800 */ + int addr, tmp; + for(;;) { + switch(pc) { + case 0x42000: + r29 = r29 + -64; + r3 = r4 + r0; + page[(r29+56)>>>2] = r30; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; + page[(r29+60)>>>2] = r31; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+32)>>>2] = r18; + page[(r29+64)>>>2] = r4; + r30 = r5 + r0; + r17 = r6 + r0; + r16 = r7 + r0; + case 0x42040: + r2= page[(r3+20)>>>2]; + if(r2 != r30) { + pc=0x42060; + continue; + } + r4 = r3 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x42060; + return; + case 0x42060: + r2= page[(r29+64)>>>2]; + r2= page[(r2+0)>>>2]; + page[(r29+16)>>>2] = r2; + if(r2 == r0) { + pc=0x4229c; + continue; + } + case 0x4207c: + r3= page[(r29+16)>>>2]; + r2= page[(r3+20)>>>2]; + if(r30 != r2) { + pc=0x420a4; + continue; + } + r4 = r3 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x420a4; + return; + case 0x420a4: + r2= page[(r29+16)>>>2]; + r2= page[(r2+0)>>>2]; + page[(r29+20)>>>2] = r2; + if(r2 == r0) { + pc=0x42280; + continue; + } + case 0x420c0: + r3= page[(r29+20)>>>2]; + r2= page[(r3+20)>>>2]; + if(r30 != r2) { + pc=0x420e8; + continue; + } + r4 = r3 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x420e8; + return; + case 0x420e8: + r2= page[(r29+20)>>>2]; + r22= page[(r2+0)>>>2]; + if(r22 == r0) { + pc=0x42264; + continue; + } + case 0x42100: + r2= page[(r22+20)>>>2]; + if(r30 != r2) { + pc=0x42120; + continue; + } + r4 = r22 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x42120; + return; + case 0x42120: + r23= page[(r22+0)>>>2]; + if(r23 == r0) { + pc=0x42254; + continue; + } + case 0x42130: + r2= page[(r23+20)>>>2]; + if(r30 == r2) { + pc=0x42334; + continue; + } + case 0x42140: + r20= page[(r23+0)>>>2]; + if(r20 == r0) { + pc=0x42244; + continue; + } + case 0x42150: + r2= page[(r20+20)>>>2]; + if(r30 == r2) { + pc=0x4231c; + continue; + } + case 0x42160: + r19= page[(r20+0)>>>2]; + if(r19 == r0) { + pc=0x42234; + continue; + } + case 0x42170: + r2= page[(r19+20)>>>2]; + if(r30 == r2) { + pc=0x42304; + continue; + } + case 0x42180: + r18= page[(r19+0)>>>2]; + if(r18 == r0) { + pc=0x42224; + continue; + } + case 0x42190: + r2= page[(r18+20)>>>2]; + if(r30 == r2) { + pc=0x422ec; + continue; + } + case 0x421a0: + r21= page[(r18+0)>>>2]; + if(r21 != r0) { + pc=0x421ec; + continue; + } + pc=0x42214; + continue; + case 0x421b8: + r4= page[(r21+0)>>>2]; + if(r4 == r0) { + pc=0x421dc; + continue; + } + r5 = r30 + r0; + r6 = r17 + r0; + r7 = r16 + r0; + r31=0x421dc; + pc=0x42000; + continue; + case 0x421dc: + r21= page[(r21+4)>>>2]; + if(r21 == r0) { + pc=0x42214; + continue; + } + case 0x421ec: + r3= page[(r21+20)>>>2]; + if(r30 != r3) { + pc=0x421b8; + continue; + } + r4 = r21 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x4220c; + return; + case 0x4220c: + pc=0x421b8; + continue; + case 0x42214: + r18= page[(r18+4)>>>2]; + if(r18 != r0) { + pc=0x42190; + continue; + } + case 0x42224: + r19= page[(r19+4)>>>2]; + if(r19 != r0) { + pc=0x42170; + continue; + } + case 0x42234: + r20= page[(r20+4)>>>2]; + if(r20 != r0) { + pc=0x42150; + continue; + } + case 0x42244: + r23= page[(r23+4)>>>2]; + if(r23 != r0) { + pc=0x42130; + continue; + } + case 0x42254: + r22= page[(r22+4)>>>2]; + if(r22 != r0) { + pc=0x42100; + continue; + } + case 0x42264: + r3= page[(r29+20)>>>2]; + r3= page[(r3+4)>>>2]; + page[(r29+20)>>>2] = r3; + if(r3 != r0) { + pc=0x420c0; + continue; + } + case 0x42280: + r3= page[(r29+16)>>>2]; + r3= page[(r3+4)>>>2]; + page[(r29+16)>>>2] = r3; + if(r3 != r0) { + pc=0x4207c; + continue; + } + case 0x4229c: + r3= page[(r29+64)>>>2]; + r3= page[(r3+4)>>>2]; + page[(r29+64)>>>2] = r3; + if(r3 != r0) { + pc=0x42040; + continue; + } + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + 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(); + case 0x422ec: + r4 = r18 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x422fc; return; - case 0x388e8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x388a4; + case 0x422fc: + pc=0x421a0; continue; - case 0x388f4: - r5 = 6 << 16; - r4 = r0 + -2; - r5 = r5 + -28776; - /* Next insn is delay slot */ - r31 = 0x38908; - pc = 0x20600; - run_20600(); + case 0x42304: + r4 = r19 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x42314; return; - case 0x38908: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x388a4; + case 0x42314: + pc=0x42180; continue; - case 0x38a00: - pc = 0x38a00; + case 0x4231c: + r4 = r20 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x4232c; 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; + case 0x4232c: + pc=0x42160; 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; + case 0x42334: + r4 = r23 + r0; + r5 = r16 + r0; + pc=r17; + r31=0x42344; + return; + case 0x42344: + pc=0x42140; 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]; + case 0x42400: + r2= page[(r4+0)>>>2]; r7 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x38d04; + if(r2 == r0) { + pc=0x424f0; 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; + case 0x42414: + r9= page[(r6+0)>>>2]; r8 = r0 + r0; - case 0x38c34: + addr=r9+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r3 = r9 + 1; + if(r2 == r0) { + pc=0x42450; + continue; + } + case 0x4242c: 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; + r8 = r2 ^ r8; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + if(r2 != r0) { + pc=0x4242c; 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; + case 0x42450: + if(r7 == r0) { + pc=0x4247c; + continue; + } + case 0x42458: + r2= page[(r7+8)>>>2]; + r3 = ((r2 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; + if(r3 == r0) { + pc=0x42488; + continue; + } + r7= page[(r7+0)>>>2]; + if(r7 != r0) { + pc=0x42458; + continue; + } + case 0x4247c: + r2 = r0 + r0; + pc=r31; return; - case 0x38cf8: - r8 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x38c58; + case 0x42488: + if(r2 == r8) { + pc=0x4249c; + continue; + } + case 0x42490: + r7= page[(r7+4)>>>2]; + pc=0x42450; continue; - case 0x38d04: - r3 = readPages[(r4 + 28) >>> 12][((r4 + 28) >>> 2) & 0x3ff]; + case 0x4249c: + r3= page[(r7+12)>>>2]; + r2 = r9 + r0; + pc=0x424b4; + continue; + case 0x424ac: + if(r4 == r0) { + pc=0x424d8; + continue; + } + case 0x424b4: + r2 = r2 + 1; + r3 = r3 + 1; + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r6 = tmp; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r4 = tmp; + if(r4 == r6) { + pc=0x424ac; + continue; + } + pc=0x42490; + continue; + case 0x424d8: + r2= page[(r7+16)>>>2]; + page[(r5+0)>>>2] = r2; + r2 = r0 + 1; + pc=r31; + return; + case 0x424f0: + r3= page[(r4+28)>>>2]; r12 = r4 + r0; r11 = r4 + 20; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x38e5c; - run_38e00(); - return; + if(r3 == r0) { + pc=0x42648; + continue; } - case 0x38d18: + case 0x42504: 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 */ + r3= page[(r10+-8)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r7 = tmp; r8 = r3 + 1; r3 = r0 + r0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x38d5c; + if(r7 == r0) { + pc=0x42548; continue; } - case 0x38d38: + case 0x42524: 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 */ + addr=r8+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r7 = tmp; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x38d38; + if(r7 != r0) { + pc=0x42524; continue; } - case 0x38d5c: - writePages[(r10 + -12) >>> 12][((r10 + -12) >>> 2) & 0x3ff] = r3; + case 0x42548: + page[(r10+-12)>>>2] = r3; r7 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x38d94; + if(r2 == r0) { + pc=0x42580; continue; } - case 0x38d6c: - r7 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x42558: + r7= page[(r2+8)>>>2]; r7 = ((r7 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x38db8; + if(r7 == r0) { + pc=0x425a4; 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; + r2= page[(r7+0)>>>2]; + case 0x42578: + if(r2 != r0) { + pc=0x42558; 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; + case 0x42580: + page[(r7+0)>>>2] = r11; + r2= page[(r10+8)>>>2]; + if(r2 == r0) { + pc=0x425b4; continue; } - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2= page[(r4+0)>>>2]; r11 = r10 + r0; - /* Next insn is delay slot */ - pc = 0x38d18; + pc=0x42504; continue; - case 0x38db8: + case 0x425a4: r7 = r2 + 4; - r2 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x38d8c; + r2= page[(r7+0)>>>2]; + pc=0x42578; 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 */ + case 0x425b4: + r2= page[(r4+0)>>>2]; + case 0x425b8: + r3= page[(r10+12)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r7 = tmp; r8 = r3 + 1; r3 = r0 + r0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x38e0c; - run_38e00(); - return; + if(r7 == r0) { + pc=0x425f8; + continue; } - case 0x38de8: + case 0x425d4: 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 */ + addr=r8+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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; + if(r7 != r0) { + pc=0x425d4; continue; } - r7 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x425f8: + page[(r10+8)>>>2] = r3; + case 0x425fc: + if(r2 == r0) { + pc=0x42638; + continue; + } + r7= page[(r2+8)>>>2]; r7 = ((r7 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x38e3c; + if(r7 == r0) { + pc=0x42628; continue; } r12 = r2 + r0; - r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x38e10; + r2= page[(r12+0)>>>2]; + pc=0x425fc; continue; - case 0x38e3c: + case 0x42628: r12 = r2 + 4; - r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x38e10; + r2= page[(r12+0)>>>2]; + pc=0x425fc; 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: + case 0x42638: + page[(r12+0)>>>2] = r10; + r7= page[(r4+0)>>>2]; + pc=0x42414; + continue; + case 0x42648: r10 = r11 + r0; - /* Next insn is delay slot */ - pc = 0x38dcc; - run_38c00(); + pc=0x425b8; + continue; + case 0x42800: + pc=0x42800; return; - case 0x39000: - pc = 0x39000; - 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_39000() throws ExecutionException { /* 0x39000 - 0x39200 */ + private final void run_42800() throws ExecutionException { /* 0x42800 - 0x43000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x39000: + for(;;) { + switch(pc) { + case 0x42800: r29 = r29 + -48; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + page[(r29+40)>>>2] = 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; + r10= page[(r20+17104)>>>2]; + page[(r29+36)>>>2] = r19; + page[(r29+44)>>>2] = r31; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; + addr=r10+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r19 = r4 + r0; + r8 = r10 + 1; + r2 = r0 + r0; + if(r3 == r0) { + pc=0x42860; continue; } - r8 = r11 + r0; - r2 = r0 + r0; - case 0x39040: + case 0x4283c: r9 = r2 >>> 25; r2 = r2 << 7; r2 = r2 | r9; - 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; + r8 = r8 + 1; + r2 = r3 ^ r2; + addr=r8+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + if(r3 != r0) { + pc=0x4283c; continue; } - case 0x39064: + case 0x42860: r17 = r2 ^ r6; r2 = r17 >>> 16; r2 = r2 ^ r17; @@ -34897,858 +47110,510 @@ public final class AcmeCrossAssembler extends UnixRuntime { r16 = r16 & 255; r16 = r16 << 2; r16 = r5 + r16; - case 0x39084: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x390bc; + case 0x42880: + r2= page[(r16+0)>>>2]; + if(r2 == r0) { + pc=0x428b8; continue; } - case 0x39094: - r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + case 0x42890: + r3= page[(r2+8)>>>2]; r5 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x390ec; + if(r5 == r0) { + pc=0x428e8; continue; } r16 = r2 + r0; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x39094; + r2= page[(r16+0)>>>2]; + if(r2 != r0) { + pc=0x42890; continue; } - case 0x390bc: - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x39178; + case 0x428b8: + if(r7 != r0) { + pc=0x42974; continue; } - 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]; + r31= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + page[(r19+0)>>>2] = r0; + r19= page[(r29+36)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x390ec: - if (r17 == r3) { - /* Next insn is delay slot */ - pc = 0x39100; + case 0x428e8: + if(r17 == r3) { + pc=0x428fc; continue; } - case 0x390f4: + case 0x428f0: r16 = r2 + 4; - /* Next insn is delay slot */ - pc = 0x39084; + pc=0x42880; continue; - case 0x39100: - r3 = readPages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff]; - if (r3 != r6) { - /* Next insn is delay slot */ - pc = 0x390f4; + case 0x428fc: + r3= page[(r2+20)>>>2]; + if(r3 != r6) { + pc=0x428f0; continue; } - r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; - r8 = r11 + r0; - r5 = r10 + r0; - /* Next insn is delay slot */ - pc = 0x39130; + r5= page[(r2+12)>>>2]; + r3 = r10 + r0; + pc=0x42924; continue; - case 0x39124: - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x3914c; + case 0x4291c: + if(r8 == r0) { + pc=0x42948; continue; } - 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; - case 0x39130: + case 0x42924: 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; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r9 = tmp; + addr=r5+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r8 = tmp; + if(r8 == r9) { + pc=0x4291c; continue; } - /* Next insn is delay slot */ - pc = 0x390f4; + pc=0x428f0; continue; - 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]; + case 0x42948: + r31= page[(r29+44)>>>2]; + page[(r19+0)>>>2] = r2; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x39178: + case 0x42974: r4 = r0 + 24; - 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]; + page[(r29+16)>>>2] = r6; + r31=0x42984; + pc=0x20200; + run_20000(); return; + case 0x42984: + r6= page[(r29+16)>>>2]; + page[(r2+8)>>>2] = r17; + r4 = r20 + 17104; + page[(r2+0)>>>2] = r0; + page[(r2+4)>>>2] = r0; + page[(r2+20)>>>2] = r6; + r18 = r2 + r0; + r31=0x429a8; + pc=0x1c200; + run_1c000(); return; + case 0x429a8: + r31= page[(r29+44)>>>2]; + page[(r18+12)>>>2] = r2; + r20= page[(r29+40)>>>2]; + page[(r16+0)>>>2] = r18; + r17= page[(r29+28)>>>2]; + page[(r19+0)>>>2] = r18; + r16= page[(r29+24)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; r2 = r0 + 1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x391e0: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x39064; - continue; - case 0x39200: - pc = 0x39200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_39200() throws ExecutionException { /* 0x39200 - 0x39400 */ - int addr, tmp; - 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; + case 0x42a00: + r29 = r29 + -48; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+44)>>>2] = r31; + page[(r29+20)>>>2] = r16; + r20 = r4 + r0; + r17 = r5 + r0; r19 = r6 + r0; r18 = r7 + r0; - r17 = r4 + 1024; - case 0x39230: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x39254; + r21 = r4 + 1024; + case 0x42a34: + r16= page[(r20+0)>>>2]; + if(r16 != r0) { + pc=0x42a80; continue; } - r5 = r20 + r0; + pc=0x42aa8; + continue; + case 0x42a4c: + r4= page[(r16+0)>>>2]; + if(r4 == r0) { + pc=0x42a70; + continue; + } + r5 = r17 + r0; r6 = r19 + r0; r7 = r18 + r0; - /* 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; + r31=0x42a70; + pc=0x42000; + run_42000(); return; + case 0x42a70: + r16= page[(r16+4)>>>2]; + if(r16 == r0) { + pc=0x42aa8; 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; + case 0x42a80: + r2= page[(r16+20)>>>2]; + if(r17 != r2) { + pc=0x42a4c; + continue; + } + r4 = r16 + r0; + r5 = r18 + r0; + pc=r19; + r31=0x42aa0; return; - case 0x39400: - pc = 0x39400; + case 0x42aa0: + pc=0x42a4c; + continue; + case 0x42aa8: + r20 = r20 + 4; + if(r20 != r21) { + pc=0x42a34; + continue; + } + r31= page[(r29+44)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + r29 = r29 + 48; + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_39400() throws ExecutionException { /* 0x39400 - 0x39600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x39400: + case 0x42c00: r2 = 6 << 16; - r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39434; + r2= page[(r2+31352)>>>2]; + if(r2 == r0) { + pc=0x42c34; continue; } - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39434; + r2= page[(r4+0)>>>2]; + if(r2 == r0) { + pc=0x42c34; continue; } - r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3943c; + r2= page[(r4+16)>>>2]; + if(r2 != r0) { + pc=0x42c3c; continue; } - case 0x39434: - /* Next insn is delay slot */ - pc = r31; + case 0x42c34: + pc=r31; return; - case 0x3943c: + case 0x42c3c: r5 = 6 << 16; r4 = r0 + -1; - r5 = r5 + -28580; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); - return; - case 0x39600: - pc = 0x39600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_39600() throws ExecutionException { /* 0x39600 - 0x39800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x39600: + r5 = r5 + 13060; + pc=0x1fc00; + run_1f800(); return; + case 0x42e00: r2 = 6 << 16; - r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39648; + r2= page[(r2+31352)>>>2]; + if(r2 == r0) { + pc=0x42e48; continue; } - r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39648; + r2= page[(r4+0)>>>2]; + if(r2 == r0) { + pc=0x42e48; continue; } - r3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r3= page[(r4+16)>>>2]; r2 = r0 + 1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x39648; + if(r3 == r2) { + pc=0x42e48; continue; } r5 = 6 << 16; r4 = r0 + -1; - r5 = r5 + -28548; - /* Next insn is delay slot */ - pc = 0x20600; - run_20600(); + r5 = r5 + 13092; + pc=0x1fc00; + run_1f800(); return; + case 0x42e48: + pc=r31; return; - case 0x39648: - /* Next insn is delay slot */ - pc = r31; + case 0x43000: + pc=0x43000; return; - case 0x39800: - pc = 0x39800; - 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_39800() throws ExecutionException { /* 0x39800 - 0x39a00 */ + private final void run_43000() throws ExecutionException { /* 0x43000 - 0x43800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x39800: + for(;;) { + switch(pc) { + case 0x43000: r29 = r29 + -32; r2 = f13; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+20)>>>2] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + page[(r29+24)>>>2] = r17; r17 = r2 + r0; r2 = 17424 << 16; r2 = r16 < r2 ? 1 : 0; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + page[(r29+28)>>>2] = r31; f0 = f12; f1 = f13; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x39880; + if(r2 != r0) { + pc=0x43080; continue; } r2 = 32752 << 16; r3 = r2 + 1; r3 = r16 < r3 ? 1 : 0; r5 = f12; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x39a08; - run_39a00(); - return; + if(r3 == r0) { + pc=0x43208; + continue; } - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x39a00; - run_39a00(); - return; + if(r16 == r2) { + pc=0x43200; + continue; } - case 0x39858: - if (r17 <= 0) { - /* Next insn is delay slot */ - pc = 0x39abc; - run_39a00(); - return; + case 0x43058: + if(r17 <= 0) { + pc=0x432bc; + continue; } - 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]; + r31= page[(r29+28)>>>2]; + f0= page[(r28+-32660)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + f1= page[(r28+-32664)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x39880: + case 0x43080: r2 = 16348 << 16; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39a60; - run_39a00(); - return; + if(r2 == r0) { + pc=0x43260; + continue; } r2 = 15904 << 16; r16 = r16 < r2 ? 1 : 0; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x39a24; - run_39a00(); - return; + if(r16 != r0) { + pc=0x43224; + continue; } - case 0x398a0: + case 0x430a0: r2 = r0 + -1; - 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; - } + case 0x430a4: + { 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= page[(r28+-32604)>>>2]; + f8= page[(r28+-32596)>>>2]; + f7= page[(r28+-32608)>>>2]; + f9= page[(r28+-32600)>>>2]; + { 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= page[(r28+-32588)>>>2]; + { 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= page[(r28+-32592)>>>2]; + { 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= page[(r28+-32580)>>>2]; + { 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= page[(r28+-32584)>>>2]; + { 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= page[(r28+-32572)>>>2]; + { 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= page[(r28+-32576)>>>2]; + { 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= page[(r28+-32564)>>>2]; + { 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= page[(r28+-32568)>>>2]; + { 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= page[(r28+-32548)>>>2]; + { 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= page[(r28+-32556)>>>2]; + f9= page[(r28+-32552)>>>2]; + f7= page[(r28+-32560)>>>2]; + { 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= page[(r28+-32540)>>>2]; + { 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= page[(r28+-32544)>>>2]; + { 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= page[(r28+-32532)>>>2]; + { 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= page[(r28+-32536)>>>2]; + { 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= page[(r28+-32524)>>>2]; + { 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= page[(r28+-32528)>>>2]; + { 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) { + pc=0x432e8; + continue; + } + { 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 + -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; - } + r5 = r5 + 13160; + r6 = r6 + 13128; + 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= page[(r4+4)>>>2]; + f7= page[(r4+0)>>>2]; + { 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= page[(r5+4)>>>2]; + f3= page[(r5+0)>>>2]; + { 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 = 0x39ad0; - run_39a00(); - return; + if(r17 < 0) { + pc=0x432d0; + continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; f0 = r3; - r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; f1 = r2; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x39a00: - pc = 0x39a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_39a00() throws ExecutionException { /* 0x39a00 - 0x39c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x39a00: - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x39858; - run_39800(); - return; + case 0x43200: + if(r5 == r0) { + pc=0x43058; + continue; } - 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]; + case 0x43208: + { 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 0x4320c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; 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; + case 0x43224: + f4= page[(r28+-32644)>>>2]; + f2= page[(r28+-32636)>>>2]; + f5= page[(r28+-32648)>>>2]; + f3= page[(r28+-32640)>>>2]; + { 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)) { + pc=0x430a0; + 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= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x39a60: - /* Next insn is delay slot */ - r31 = 0x39a68; - pc = 0x39e00; - run_39e00(); - return; - case 0x39a68: + case 0x43260: + r31=0x43268; + pc=0x43600; + continue; + case 0x43268: r2 = 16371 << 16; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39afc; + if(r2 == r0) { + pc=0x432fc; continue; } r2 = 16358 << 16; r16 = r16 < r2 ? 1 : 0; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x39b58; + if(r16 == r0) { + pc=0x43358; continue; } - 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; + f2= page[(r28+-32636)>>>2]; + { 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= page[(r28+-32640)>>>2]; + 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= page[(r28+-32628)>>>2]; + f5= page[(r28+-32632)>>>2]; + { 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; } + pc=0x430a4; continue; - case 0x39ad0: + case 0x432bc: + f0= page[(r28+-32652)>>>2]; + f1= page[(r28+-32656)>>>2]; + pc=0x4320c; + continue; + case 0x432d0: r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; - /* Next insn is delay slot */ - pc = 0x39a0c; + pc=0x4320c; continue; - 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; + case 0x432e8: + { 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; } + pc=0x4320c; continue; - case 0x39afc: + case 0x432fc: r2 = 16387 << 16; r2 = r2 | 32768; r16 = r16 < r2 ? 1 : 0; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x39b3c; + if(r16 == r0) { + pc=0x4333c; continue; } - 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; - case 0x39b3c: - f2 = readPages[(r28 + -32612) >>> 12][((r28 + -32612) >>> 2) & 0x3ff]; + f2= page[(r28+-32620)>>>2]; + f6= page[(r28+-32636)>>>2]; + f3= page[(r28+-32624)>>>2]; + f7= page[(r28+-32640)>>>2]; + { 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; } + pc=0x430a4; + continue; + case 0x4333c: + f2= page[(r28+-32612)>>>2]; 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]; + f3= page[(r28+-32616)>>>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; } + pc=0x430a4; + continue; + case 0x43358: + f2= page[(r28+-32636)>>>2]; 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_39c00() throws ExecutionException { /* 0x39c00 - 0x39e00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x39c00: + f3= page[(r28+-32640)>>>2]; + { 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; } + pc=0x430a4; + continue; + case 0x43400: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -35757,164 +47622,122 @@ 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 = 0x39cbc; + page[(r29+44)>>>2] = r31; + if(r3 != r0) { + pc=0x434bc; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x39c60; + if(r2 != r0) { + pc=0x43460; 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 0x39c48: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x43448: + r31= page[(r29+44)>>>2]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x39c60: + case 0x43460: r6 = r29 + 24; - /* Next insn is delay slot */ - r31 = 0x39c6c; - pc = 0x3c600; - run_3c600(); - return; - case 0x39c6c: + r31=0x4346c; + pc=0x45e00; + run_45800(); return; + case 0x4346c: r2 = r2 & 3; r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x39d34; + if(r2 == r3) { + pc=0x43534; continue; } r4 = r0 + 2; - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x39cf0; + if(r2 == r4) { + pc=0x434f0; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x39d58; + if(r2 == r0) { + pc=0x43558; 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 = 0x39cac; - pc = 0x3e200; - run_3e200(); - return; - case 0x39cac: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + page[(r29+16)>>>2] = r3; + r31=0x434ac; + pc=0x47a00; + run_47800(); return; + case 0x434ac: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc = 0x39c48; + pc=0x43448; continue; - case 0x39cbc: + case 0x434bc: f14 = r0; f15 = r0; - /* Next insn is delay slot */ - r31 = 0x39cd0; - pc = 0x3d000; - run_3d000(); - return; - case 0x39cd0: + r31=0x434d0; + pc=0x46800; + run_46800(); return; + case 0x434d0: r3 = f0; r2 = f1; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x434f0: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + r31=0x43508; + pc=0x46800; + run_46800(); return; + case 0x43508: r5 = f0; r4 = f1; r3 = r5 + r0; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x43534: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + page[(r29+16)>>>2] = r2; + r31=0x43550; + pc=0x47a00; + run_47800(); return; + case 0x43550: + pc=0x43508; continue; - 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: + case 0x43558: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + r31=0x43570; + pc=0x46800; + run_46800(); return; + case 0x43570: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc = 0x39c48; + pc=0x43448; continue; - 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: + case 0x43600: r3 = f12; r4 = f13; r5 = 32767 << 16; @@ -35922,24 +47745,20 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r5 & r4; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a000: - pc = 0x3a000; + case 0x43800: + pc=0x43800; 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_3a000() throws ExecutionException { /* 0x3a000 - 0x3a200 */ + private final void run_43800() throws ExecutionException { /* 0x43800 - 0x44000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3a000: + for(;;) { + switch(pc) { + case 0x43800: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -35948,165 +47767,123 @@ 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 = 0x3a0d4; + page[(r29+44)>>>2] = r31; + if(r3 != r0) { + pc=0x438d4; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a060; + if(r2 != r0) { + pc=0x43860; 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 0x3a048: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x43848: + r31= page[(r29+44)>>>2]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a060: + case 0x43860: r6 = r29 + 24; - /* Next insn is delay slot */ - r31 = 0x3a06c; - pc = 0x3c600; - run_3c600(); - return; - case 0x3a06c: + r31=0x4386c; + pc=0x45e00; + run_45800(); return; + case 0x4386c: r2 = r2 & 3; r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x3a12c; + if(r2 == r3) { + pc=0x4392c; continue; } r4 = r0 + 2; - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x3a108; + if(r2 == r4) { + pc=0x43908; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3a154; + if(r2 == r0) { + pc=0x43954; 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 = 0x3a0a8; - pc = 0x3d000; - run_3d000(); - return; - case 0x3a0a8: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + r31=0x438a8; + pc=0x46800; + run_46800(); return; + case 0x438a8: r5 = f0; r4 = f1; r3 = r5 + r0; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a0d4: + case 0x438d4: f14 = r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r0; + page[(r29+16)>>>2] = r0; f15 = r0; - /* Next insn is delay slot */ - r31 = 0x3a0e8; - pc = 0x3e200; - run_3e200(); - return; - case 0x3a0e8: + r31=0x438e8; + pc=0x47a00; + run_47800(); return; + case 0x438e8: r3 = f0; r2 = f1; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x43908: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + page[(r29+16)>>>2] = r3; + r31=0x43924; + pc=0x47a00; + run_47800(); return; + case 0x43924: + pc=0x438a8; continue; - 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: + case 0x4392c: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + r31=0x43944; + pc=0x46800; + run_46800(); return; + case 0x43944: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc = 0x3a048; + pc=0x43848; continue; - 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: + case 0x43954: + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + page[(r29+16)>>>2] = r3; + r31=0x43970; + pc=0x47a00; + run_47800(); return; + case 0x43970: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc = 0x3a048; + pc=0x43848; continue; - case 0x3a200: - pc = 0x3a200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3a200() throws ExecutionException { /* 0x3a200 - 0x3a400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3a200: + case 0x43a00: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -36115,1066 +47892,777 @@ 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 = 0x3a298; + page[(r29+44)>>>2] = r31; + if(r3 != r0) { + pc=0x43a98; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a250; + if(r2 != r0) { + pc=0x43a50; 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= page[(r29+44)>>>2]; + { 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; + pc=r31; return; - case 0x3a250: + case 0x43a50: r6 = r29 + 24; - /* Next insn is delay slot */ - r31 = 0x3a25c; - pc = 0x3c600; - run_3c600(); - return; - case 0x3a25c: + r31=0x43a5c; + pc=0x45e00; + run_45800(); return; + case 0x43a5c: r2 = r2 & 1; - f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f12= page[(r29+28)>>>2]; + f14= page[(r29+36)>>>2]; 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 = 0x3a288; - pc = 0x3e400; - run_3e400(); - return; - case 0x3a288: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f13= page[(r29+24)>>>2]; + f15= page[(r29+32)>>>2]; + page[(r29+16)>>>2] = r2; + r31=0x43a88; + pc=0x47c00; + run_47800(); return; + case 0x43a88: + r31= page[(r29+44)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a298: + case 0x43a98: f14 = r0; r2 = r0 + 1; f15 = r0; - 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]; + page[(r29+16)>>>2] = r2; + r31=0x43ab0; + pc=0x47c00; + run_47800(); return; + case 0x43ab0: + r31= page[(r29+44)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a400: - pc = 0x3a400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3a400() throws ExecutionException { /* 0x3a400 - 0x3a600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3a400: + case 0x43c00: 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; + page[(r29+76)>>>2] = f22; + page[(r29+72)>>>2] = f23; + page[(r29+68)>>>2] = f20; + page[(r29+64)>>>2] = f21; + page[(r29+60)>>>2] = r31; f20 = f12; f21 = f13; - /* Next insn is delay slot */ - r31 = 0x3a424; - pc = 0x3ae00; - run_3ae00(); - return; - case 0x3a424: - r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + r31=0x43c24; + pc=0x44600; + run_44000(); return; + case 0x43c24: + r3= page[(r28+-31560)>>>2]; r2 = r0 + -1; f22 = f0; f23 = f1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x3a44c; + if(r3 == r2) { + pc=0x43c4c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3a444; - pc = 0x3ee00; - run_3ee00(); - return; - case 0x3a444: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a470; + r31=0x43c44; + pc=0x48600; + run_48000(); return; + case 0x43c44: + if(r2 != r0) { + pc=0x43c70; continue; } - case 0x3a44c: - f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + case 0x43c4c: + f20= page[(r29+68)>>>2]; 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= page[(r29+60)>>>2]; + f22= page[(r29+76)>>>2]; + f21= page[(r29+64)>>>2]; + f23= page[(r29+72)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a470: + case 0x43c70: f12 = f20; f13 = f21; - /* 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; + r31=0x43c7c; + pc=0x43600; + run_43000(); return; + case 0x43c7c: + f2= page[(r28+-32516)>>>2]; + f3= page[(r28+-32520)>>>2]; + 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)) { + pc=0x43c4c; continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - r4 = 5 << 16; + page[(r29+16)>>>2] = r2; + r4 = 6 << 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 = r2 + 13192; + r4 = r4 + -4072; + page[(r29+20)>>>2] = r2; + page[(r29+48)>>>2] = r0; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + page[(r29+28)>>>2] = f20; + page[(r29+24)>>>2] = f21; + r31=0x43cd4; + pc=0x48a00; + run_48800(); return; + case 0x43cd4: + r3= page[(r28+-31560)>>>2]; 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 = 0x3a538; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(r3 == r2) { + pc=0x43d38; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x3a4f8; - pc = 0x3f000; - run_3f000(); - return; - case 0x3a4f8: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3a538; + r31=0x43cf8; + pc=0x48800; + run_48800(); return; + case 0x43cf8: + if(r2 == r0) { + pc=0x43d38; continue; } - case 0x3a500: - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a550; + case 0x43d00: + r2= page[(r29+48)>>>2]; + if(r2 != r0) { + pc=0x43d50; continue; } - 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]; + case 0x43d10: + f0= page[(r29+44)>>>2]; + f22= page[(r29+76)>>>2]; + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + f1= page[(r29+40)>>>2]; + f23= page[(r29+72)>>>2]; + f21= page[(r29+64)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a538: - /* Next insn is delay slot */ - r31 = 0x3a540; - pc = 0x40000; - run_40000(); - return; - case 0x3a540: + case 0x43d38: + r31=0x43d40; + pc=0x49800; + run_49800(); return; + case 0x43d40: r3 = r0 + 33; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x3a500; + page[(r2+0)>>>2] = r3; + pc=0x43d00; continue; - case 0x3a550: - /* Next insn is delay slot */ - r31 = 0x3a558; - pc = 0x40000; - run_40000(); - return; - 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; + case 0x43d50: + r31=0x43d58; + pc=0x49800; + run_49800(); return; + case 0x43d58: + r3= page[(r29+48)>>>2]; + page[(r2+0)>>>2] = r3; + pc=0x43d10; continue; - 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: + case 0x43e00: 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; + page[(r29+76)>>>2] = f22; + page[(r29+72)>>>2] = f23; + page[(r29+68)>>>2] = f20; + page[(r29+64)>>>2] = f21; + page[(r29+60)>>>2] = r31; f20 = f12; f21 = f13; - /* Next insn is delay slot */ - r31 = 0x3a624; - pc = 0x3b400; - run_3b400(); - return; - case 0x3a624: - r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + r31=0x43e24; + pc=0x44c00; + run_44800(); return; + case 0x43e24: + r3= page[(r28+-31560)>>>2]; r2 = r0 + -1; f22 = f0; f23 = f1; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x3a64c; + if(r3 == r2) { + pc=0x43e4c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3a644; - pc = 0x3ee00; - run_3ee00(); - return; - case 0x3a644: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a670; + r31=0x43e44; + pc=0x48600; + run_48000(); return; + case 0x43e44: + if(r2 != r0) { + pc=0x43e70; continue; } - case 0x3a64c: - f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + case 0x43e4c: + f20= page[(r29+68)>>>2]; 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= page[(r29+60)>>>2]; + f22= page[(r29+76)>>>2]; + f21= page[(r29+64)>>>2]; + f23= page[(r29+72)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a670: + case 0x43e70: f12 = f20; f13 = f21; - /* 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; + r31=0x43e7c; + pc=0x43600; + run_43000(); return; + case 0x43e7c: + f2= page[(r28+-32508)>>>2]; + f3= page[(r28+-32512)>>>2]; + 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)) { + pc=0x43e4c; continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - r4 = 5 << 16; + page[(r29+16)>>>2] = r2; + r4 = 6 << 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 = r2 + 13200; + r4 = r4 + -4072; + page[(r29+20)>>>2] = r2; + page[(r29+48)>>>2] = r0; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + page[(r29+28)>>>2] = f20; + page[(r29+24)>>>2] = f21; + r31=0x43ed4; + pc=0x48a00; + run_48800(); return; + case 0x43ed4: + r3= page[(r28+-31560)>>>2]; 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 = 0x3a738; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(r3 == r2) { + pc=0x43f38; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x3a6f8; - pc = 0x3f000; - run_3f000(); - return; - case 0x3a6f8: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3a738; + r31=0x43ef8; + pc=0x48800; + run_48800(); return; + case 0x43ef8: + if(r2 == r0) { + pc=0x43f38; continue; } - case 0x3a700: - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a750; + case 0x43f00: + r2= page[(r29+48)>>>2]; + if(r2 != r0) { + pc=0x43f50; continue; } - 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]; + case 0x43f10: + f0= page[(r29+44)>>>2]; + f22= page[(r29+76)>>>2]; + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + f1= page[(r29+40)>>>2]; + f23= page[(r29+72)>>>2]; + f21= page[(r29+64)>>>2]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a738: - /* Next insn is delay slot */ - r31 = 0x3a740; - pc = 0x40000; - run_40000(); - return; - case 0x3a740: + case 0x43f38: + r31=0x43f40; + pc=0x49800; + run_49800(); return; + case 0x43f40: r3 = r0 + 33; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x3a700; + page[(r2+0)>>>2] = r3; + pc=0x43f00; continue; - case 0x3a750: - /* Next insn is delay slot */ - r31 = 0x3a758; - pc = 0x40000; - run_40000(); - return; - 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; + case 0x43f50: + r31=0x43f58; + pc=0x49800; + run_49800(); return; + case 0x43f58: + r3= page[(r29+48)>>>2]; + page[(r2+0)>>>2] = r3; + pc=0x43f10; continue; - case 0x3a800: - pc = 0x3a800; + 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_3a800() throws ExecutionException { /* 0x3a800 - 0x3aa00 */ + private final void run_44000() throws ExecutionException { /* 0x44000 - 0x44800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3a800: + for(;;) { + switch(pc) { + case 0x44000: 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; + page[(r29+56)>>>2] = r16; + page[(r29+84)>>>2] = f24; + page[(r29+80)>>>2] = f25; + page[(r29+76)>>>2] = f22; + page[(r29+72)>>>2] = f23; + page[(r29+68)>>>2] = f20; + page[(r29+64)>>>2] = f21; + page[(r29+60)>>>2] = r31; + page[(r29+92)>>>2] = f26; + page[(r29+88)>>>2] = f27; f24 = f12; f25 = f13; f20 = f14; f21 = f15; - /* Next insn is delay slot */ - r31 = 0x3a83c; - pc = 0x3ba00; - run_3ba00(); - return; - case 0x3a83c: - r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + r31=0x4403c; + pc=0x45200; + run_45000(); return; + case 0x4403c: + r2= page[(r28+-31560)>>>2]; r16 = r0 + -1; f22 = f0; f23 = f1; - if (r2 == r16) { - /* Next insn is delay slot */ - pc = 0x3a864; + if(r2 == r16) { + pc=0x44064; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3a85c; - pc = 0x3ee00; - run_3ee00(); - return; - case 0x3a85c: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a89c; + r31=0x4405c; + pc=0x48600; + run_48000(); return; + case 0x4405c: + if(r2 != r0) { + pc=0x4409c; continue; } - case 0x3a864: + case 0x44064: f0 = f22; f1 = f23; - 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]; + case 0x44068: + f26= page[(r29+92)>>>2]; + f24= page[(r29+84)>>>2]; + f22= page[(r29+76)>>>2]; + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + r16= page[(r29+56)>>>2]; + f27= page[(r29+88)>>>2]; + f25= page[(r29+80)>>>2]; + f23= page[(r29+72)>>>2]; + f21= page[(r29+64)>>>2]; r29 = r29 + 96; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3a89c: + case 0x4409c: f12 = f24; f13 = f25; - /* Next insn is delay slot */ - r31 = 0x3a8a8; - pc = 0x3ee00; - run_3ee00(); - return; - case 0x3a8a8: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3a96c; + r31=0x440a8; + pc=0x48600; + run_48000(); return; + case 0x440a8: + if(r2 != r0) { + pc=0x4416c; 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 = 0x3a864; + 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)) { + pc=0x44064; continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - f0 = readPages[(r28 + -32500) >>> 12][((r28 + -32500) >>> 2) & 0x3ff]; + page[(r29+16)>>>2] = r2; + f0= page[(r28+-32500)>>>2]; 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; + r2 = r2 + 13208; + f1= page[(r28+-32504)>>>2]; + page[(r29+20)>>>2] = r2; + r2= page[(r28+-31560)>>>2]; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(r2 == r16) { + pc=0x44158; continue; } r3 = r0 + 2; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x3a958; + if(r2 == r3) { + pc=0x44158; continue; } - case 0x3a920: + case 0x44120: r4 = r29 + 16; - /* 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 0x3a934: - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3a958; + r31=0x4412c; + pc=0x48800; + run_48800(); return; + case 0x4412c: + if(r2 == r0) { + pc=0x44350; continue; } - 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; + case 0x44134: + r2= page[(r29+48)>>>2]; + if(r2 == r0) { + pc=0x44158; + continue; + } + case 0x44144: + r31=0x4414c; + pc=0x49800; + run_49800(); return; + case 0x4414c: + r3= page[(r29+48)>>>2]; + page[(r2+0)>>>2] = r3; + case 0x44158: + f0= page[(r29+44)>>>2]; + f1= page[(r29+40)>>>2]; + pc=0x44068; continue; - case 0x3a96c: + case 0x4416c: 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 = 0x3a9f8; + 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)) { + pc=0x441f8; 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 = 0x3aac0; - run_3aa00(); - 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)) { + pc=0x442c0; + continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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; + r2 = r2 + 13208; + page[(r29+20)>>>2] = r2; + r2= page[(r28+-31560)>>>2]; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + page[(r29+44)>>>2] = f26; + page[(r29+40)>>>2] = f27; + if(r2 == r0) { + pc=0x44120; continue; } - 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; + f0= page[(r28+-32500)>>>2]; + f1= page[(r28+-32504)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + pc=0x44158; continue; - case 0x3a9f8: + case 0x441f8: f12 = f22; f13 = f23; - /* Next insn is delay slot */ - r31 = 0x3aa04; - pc = 0x3e800; - run_3e800(); - return; - case 0x3aa00: - pc = 0x3aa00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3aa00() throws ExecutionException { /* 0x3aa00 - 0x3ac00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3aa00: - case 0x3aa04: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3ab68; + r31=0x44204; + pc=0x48000; + run_48000(); return; + case 0x44204: + if(r2 == r0) { + pc=0x44368; continue; } - case 0x3aa0c: + case 0x4420c: 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 = 0x3a864; - run_3a800(); - 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)) { + pc=0x44064; + continue; } f12 = f24; f13 = f25; - /* 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; + r31=0x44238; + pc=0x48000; + run_48000(); return; + case 0x44238: + if(r2 == r0) { + pc=0x44064; + continue; } f12 = f20; f13 = f21; - /* 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; + r31=0x4424c; + pc=0x48000; + run_48000(); return; + case 0x4424c: + if(r2 == r0) { + pc=0x44064; + continue; } r2 = r0 + 4; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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 = r2 + 13208; + r3= page[(r28+-31560)>>>2]; + page[(r29+20)>>>2] = 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 = 0x3ac7c; - run_3ac00(); - return; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + page[(r29+44)>>>2] = f26; + page[(r29+40)>>>2] = f27; + if(r3 == r2) { + pc=0x4447c; + continue; } - case 0x3aa94: + case 0x44294: r4 = r29 + 16; - /* 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; + r31=0x442a0; + pc=0x48800; + run_48800(); return; + case 0x442a0: + if(r2 == r0) { + pc=0x4447c; + continue; } - case 0x3aaa8: - r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3a958; - run_3a800(); - return; + case 0x442a8: + r2= page[(r29+48)>>>2]; + if(r2 == r0) { + pc=0x44158; + continue; } - /* Next insn is delay slot */ - pc = 0x3a944; - run_3a800(); - return; - case 0x3aac0: + pc=0x44144; + continue; + case 0x442c0: f12 = f20; f13 = f21; - /* 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; + r31=0x442cc; + pc=0x48000; + run_48000(); return; + case 0x442cc: + if(r2 == r0) { + pc=0x44064; + 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 = 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)) { + pc=0x44064; + continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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 + -32492) >>> 12][((r28 + -32492) >>> 2) & 0x3ff]; - r3 = r0 + 2; - 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; + r2 = r2 + 13208; + page[(r29+20)>>>2] = r2; + r2= page[(r28+-31560)>>>2]; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + if(r2 == r0) { + pc=0x4440c; continue; } - case 0x3ab38: - /* Next insn is delay slot */ - r31 = 0x3ab40; - pc = 0x40000; - run_40000(); - return; - case 0x3ab40: + f0= page[(r28+-32492)>>>2]; + r3 = r0 + 2; + f1= page[(r28+-32496)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(r2 != r3) { + pc=0x443f0; + continue; + } + case 0x44338: + r31=0x44340; + pc=0x49800; + run_49800(); return; + case 0x44340: r3 = r0 + 33; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x3aaa8; + page[(r2+0)>>>2] = r3; + pc=0x442a8; continue; - case 0x3ab50: - /* Next insn is delay slot */ - r31 = 0x3ab58; - pc = 0x40000; - run_40000(); - return; - case 0x3ab58: + case 0x44350: + r31=0x44358; + pc=0x49800; + run_49800(); return; + case 0x44358: r3 = r0 + 33; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x3a934; - run_3a800(); - return; - case 0x3ab68: + page[(r2+0)>>>2] = r3; + pc=0x44134; + continue; + case 0x44368: f12 = f24; f13 = f25; - /* Next insn is delay slot */ - r31 = 0x3ab74; - pc = 0x3e800; - run_3e800(); - return; - case 0x3ab74: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3aa0c; + r31=0x44374; + pc=0x48000; + run_48000(); return; + case 0x44374: + if(r2 == r0) { + pc=0x4420c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3ab88; - pc = 0x3e800; - run_3e800(); - return; - case 0x3ab88: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3aa0c; + r31=0x44388; + pc=0x48000; + run_48000(); return; + case 0x44388: + if(r2 == r0) { + pc=0x4420c; continue; } f12 = f22; f13 = f23; - /* 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; + r31=0x4439c; + pc=0x48600; + run_48000(); return; + case 0x4439c: + if(r2 != r0) { + pc=0x4441c; + continue; } r2 = r0 + 1; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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 = 0x3ab38; + r2 = r2 + 13208; + page[(r29+20)>>>2] = r2; + r2= page[(r28+-31560)>>>2]; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + if(r2 == r0) { + pc=0x4440c; continue; } - case 0x3abf0: + { 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; + page[(r29+44)>>>2] = f26; + page[(r29+40)>>>2] = f27; + if(r2 == r3) { + pc=0x44338; + continue; + } + case 0x443f0: r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x3abfc; - pc = 0x3f000; - run_3f000(); - return; - case 0x3abfc: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3aaa8; + r31=0x443fc; + pc=0x48800; + run_48800(); return; + case 0x443fc: + if(r2 != r0) { + pc=0x442a8; continue; } - case 0x3ac00: - pc = 0x3ac00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ac00() throws ExecutionException { /* 0x3ac00 - 0x3ae00 */ - int addr, tmp; - 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: + pc=0x44338; + continue; + case 0x4440c: + page[(r29+44)>>>2] = f26; + page[(r29+40)>>>2] = f27; + pc=0x443f0; + continue; + case 0x4441c: r2 = r0 + 3; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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; + r2 = r2 + 13208; + page[(r29+20)>>>2] = r2; + r2= page[(r28+-31560)>>>2]; + page[(r29+48)>>>2] = r0; + page[(r29+28)>>>2] = f24; + page[(r29+24)>>>2] = f25; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + if(r2 != r0) { + pc=0x44494; continue; } - 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; + f0= page[(r28+-32484)>>>2]; + fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); + f1= page[(r28+-32488)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(((fcsr&0x800000)!=0) == (1!=0)) { + pc=0x44508; continue; } - case 0x3ac70: + case 0x44470: r3 = r0 + 2; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x3aa94; - run_3aa00(); - return; + if(r2 != r3) { + pc=0x44294; + continue; } - case 0x3ac7c: - /* Next insn is delay slot */ - r31 = 0x3ac84; - pc = 0x40000; - run_40000(); - return; - case 0x3ac84: + case 0x4447c: + r31=0x44484; + pc=0x49800; + run_49800(); return; + case 0x44484: 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; + page[(r2+0)>>>2] = r3; + pc=0x442a8; + continue; + case 0x44494: + f0= page[(r28+-32460)>>>2]; + fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); + f1= page[(r28+-32464)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + if(((fcsr&0x800000)!=0) == (0!=0)) { + pc=0x44470; 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; - } + f0= page[(r28+-32476)>>>2]; + f1= page[(r28+-32480)>>>2]; + { 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; + r31=0x444d4; + pc=0x48c00; + run_48800(); return; + case 0x444d4: + 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)) { + pc=0x444fc; 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; + f0= page[(r28+-32492)>>>2]; + f1= page[(r28+-32496)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + case 0x444fc: + r2= page[(r28+-31560)>>>2]; + pc=0x44470; 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; - } + case 0x44508: + f0= page[(r28+-32476)>>>2]; + f1= page[(r28+-32480)>>>2]; + { 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; + r31=0x44528; + pc=0x48c00; + run_48800(); return; + case 0x44528: + 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)) { + pc=0x444fc; 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; + f0= page[(r28+-32468)>>>2]; + r2= page[(r28+-31560)>>>2]; + f1= page[(r28+-32472)>>>2]; + page[(r29+44)>>>2] = f0; + page[(r29+40)>>>2] = f1; + pc=0x44470; continue; - case 0x3ae00: - pc = 0x3ae00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ae00() throws ExecutionException { /* 0x3ae00 - 0x3b000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ae00: + case 0x44600: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -37183,1480 +48671,597 @@ 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 = 0x3ae94; + page[(r29+20)>>>2] = r31; + page[(r29+44)>>>2] = f24; + page[(r29+40)>>>2] = f25; + page[(r29+36)>>>2] = f22; + page[(r29+32)>>>2] = f23; + page[(r29+28)>>>2] = f20; + page[(r29+24)>>>2] = f21; + if(r4 != r0) { + pc=0x44694; continue; } r5 = f12; r2 = r2 - r3; r2 = r2 | r5; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3b024; - run_3b000(); - return; + if(r2 != r0) { + pc=0x44824; + run_44800(); return; } - if (r6 <= 0) { - /* Next insn is delay slot */ - pc = 0x3b16c; - run_3b000(); - return; + if(r6 <= 0) { + pc=0x4496c; + run_44800(); return; } f0 = r0; f1 = r0; - 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]; + case 0x4466c: + f24= page[(r29+44)>>>2]; + f22= page[(r29+36)>>>2]; + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f25= page[(r29+40)>>>2]; + f23= page[(r29+32)>>>2]; + f21= page[(r29+24)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ae94: + case 0x44694: r3 = 16352 << 16; r3 = r2 < r3 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3afe0; + if(r3 != r0) { + pc=0x447e0; continue; } - if (r6 < 0) { - /* Next insn is delay slot */ - pc = 0x3b180; - run_3b000(); - return; + if(r6 < 0) { + pc=0x44980; + run_44800(); return; } - 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; - } + f22= page[(r28+-32356)>>>2]; + f0= page[(r28+-32340)>>>2]; + f23= page[(r28+-32360)>>>2]; + f1= page[(r28+-32344)>>>2]; + { 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 = 0x3aed0; - pc = 0x3cc00; - run_3cc00(); - return; - 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]; + r31=0x446d0; + pc=0x46400; + run_46000(); return; + case 0x446d0: + f12= page[(r28+-32436)>>>2]; + f4= page[(r28+-32428)>>>2]; + f13= page[(r28+-32440)>>>2]; + f5= page[(r28+-32432)>>>2]; + { 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= page[(r28+-32380)>>>2]; 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]; + f7= page[(r28+-32384)>>>2]; + 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= page[(r28+-32420)>>>2]; + { 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= page[(r28+-32424)>>>2]; 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; - } + f24= page[(r29+44)>>>2]; + 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= page[(r28+-32412)>>>2]; + { 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= page[(r28+-32416)>>>2]; + r31= page[(r29+20)>>>2]; + f25= page[(r29+40)>>>2]; + { 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= page[(r28+-32404)>>>2]; + { 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= page[(r28+-32408)>>>2]; + { 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= page[(r28+-32396)>>>2]; + { 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= page[(r28+-32400)>>>2]; + { 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= page[(r28+-32388)>>>2]; + { 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= page[(r28+-32392)>>>2]; + { 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= page[(r28+-32372)>>>2]; + { 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= page[(r28+-32376)>>>2]; + { 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= page[(r28+-32364)>>>2]; + { 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= page[(r28+-32368)>>>2]; + { 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= page[(r29+28)>>>2]; + f21= page[(r29+24)>>>2]; + { 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= page[(r29+36)>>>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; } + f23= page[(r29+32)>>>2]; + { 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; + pc=r31; return; - case 0x3afe0: + case 0x447e0: r3 = 15456 << 16; r3 = r3 + 1; r2 = r2 < r3 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3b054; - run_3b000(); - return; + if(r2 == r0) { + pc=0x44854; + run_44800(); 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 0x3b000: - pc = 0x3b000; + f24= page[(r29+44)>>>2]; + f22= page[(r29+36)>>>2]; + f20= page[(r29+28)>>>2]; + case 0x44800: + pc=0x44800; 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_3b000() throws ExecutionException { /* 0x3b000 - 0x3b200 */ + private final void run_44800() throws ExecutionException { /* 0x44800 - 0x45000 */ int addr, tmp; - 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]; + for(;;) { + switch(pc) { + case 0x44800: + r31= page[(r29+20)>>>2]; + f0= page[(r28+-32444)>>>2]; + f25= page[(r29+40)>>>2]; + f23= page[(r29+32)>>>2]; + f21= page[(r29+24)>>>2]; + f1= page[(r28+-32448)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; - } + case 0x44824: + f24= page[(r29+44)>>>2]; + f22= page[(r29+36)>>>2]; + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + { 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= page[(r29+40)>>>2]; + f23= page[(r29+32)>>>2]; + f21= page[(r29+24)>>>2]; + { 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; + pc=r31; return; - 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; + case 0x44854: + { 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= page[(r28+-32436)>>>2]; + f4= page[(r28+-32428)>>>2]; + f1= page[(r28+-32440)>>>2]; + f5= page[(r28+-32432)>>>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; } + f6= page[(r28+-32380)>>>2]; + f24= page[(r29+44)>>>2]; + f7= page[(r28+-32384)>>>2]; + f22= page[(r29+36)>>>2]; + { 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= page[(r28+-32420)>>>2]; + { 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= page[(r28+-32424)>>>2]; + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f25= page[(r29+40)>>>2]; + { 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= page[(r28+-32412)>>>2]; + { 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= page[(r28+-32416)>>>2]; + f23= page[(r29+32)>>>2]; + f21= page[(r29+24)>>>2]; + { 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= page[(r28+-32404)>>>2]; + { 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= page[(r28+-32408)>>>2]; + { 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= page[(r28+-32396)>>>2]; + { 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= page[(r28+-32400)>>>2]; + { 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= page[(r28+-32388)>>>2]; + { 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= page[(r28+-32392)>>>2]; + { 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= page[(r28+-32372)>>>2]; + { 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= page[(r28+-32376)>>>2]; + { 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= page[(r28+-32364)>>>2]; + { 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= page[(r28+-32368)>>>2]; + { 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= page[(r28+-32356)>>>2]; + f5= page[(r28+-32360)>>>2]; + { 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= page[(r28+-32348)>>>2]; + f3= page[(r28+-32352)>>>2]; + { 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= page[(r28+-32444)>>>2]; + f1= page[(r28+-32448)>>>2]; + 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; } + pc=r31; return; - 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]; + case 0x4496c: + f0= page[(r28+-32452)>>>2]; + f1= page[(r28+-32456)>>>2]; + pc=0x4466c; + run_44000(); return; + case 0x44980: + f24= page[(r28+-32356)>>>2]; + f0= page[(r28+-32340)>>>2]; + f25= page[(r28+-32360)>>>2]; + f1= page[(r28+-32344)>>>2]; + { 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= page[(r28+-32436)>>>2]; + { 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= page[(r28+-32440)>>>2]; + f0= page[(r28+-32428)>>>2]; + f2= page[(r28+-32404)>>>2]; + f1= page[(r28+-32432)>>>2]; + { 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= page[(r28+-32408)>>>2]; 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 + -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)); - } - /* NOT REACHED */ - } - } - - private final void run_3b200() throws ExecutionException { /* 0x3b200 - 0x3b400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3b200: - /* Next insn is delay slot */ - r31 = 0x3b208; - pc = 0x3cc00; - run_3cc00(); - return; - 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_3b400() throws ExecutionException { /* 0x3b400 - 0x3b600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3b400: + 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= page[(r28+-32420)>>>2]; + { 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= page[(r28+-32424)>>>2]; + { 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= page[(r28+-32412)>>>2]; + { 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= page[(r28+-32416)>>>2]; + { 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= page[(r28+-32396)>>>2]; + { 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= page[(r28+-32400)>>>2]; + { 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; } + r31=0x44a08; + pc=0x46400; + run_46000(); return; + case 0x44a08: + f12= page[(r28+-32388)>>>2]; + f2= page[(r28+-32380)>>>2]; + f13= page[(r28+-32392)>>>2]; + f3= page[(r28+-32384)>>>2]; + { 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= page[(r28+-32372)>>>2]; + { 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= page[(r28+-32376)>>>2]; + { 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= page[(r28+-32364)>>>2]; + { 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= page[(r28+-32368)>>>2]; + { 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= page[(r28+-32348)>>>2]; + { 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= page[(r28+-32352)>>>2]; + f12= page[(r28+-32452)>>>2]; + f13= page[(r28+-32456)>>>2]; + { 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; } + pc=0x4466c; + run_44000(); return; + case 0x44c00: r29 = r29 + -56; r2 = f13; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+20)>>>2] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + page[(r29+24)>>>2] = 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 = 0x3b4a8; + page[(r29+28)>>>2] = r31; + page[(r29+52)>>>2] = f24; + page[(r29+48)>>>2] = f25; + page[(r29+44)>>>2] = f22; + page[(r29+40)>>>2] = f23; + page[(r29+36)>>>2] = f20; + page[(r29+32)>>>2] = f21; + if(r3 != r0) { + pc=0x44ca8; continue; } r5 = f12; r2 = r16 - r2; r2 = r2 | r5; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3b4fc; + if(r2 == r0) { + pc=0x44cfc; 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 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]; + case 0x44c70: + f24= page[(r29+52)>>>2]; + f22= page[(r29+44)>>>2]; + f20= page[(r29+36)>>>2]; + r31= page[(r29+28)>>>2]; 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= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + f25= page[(r29+48)>>>2]; + f23= page[(r29+40)>>>2]; + f21= page[(r29+32)>>>2]; f1 = r2; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3b4a8: + case 0x44ca8: r2 = 16352 << 16; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3b538; + if(r2 == r0) { + pc=0x44d38; continue; } r2 = 15936 << 16; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3b6e8; - run_3b600(); - return; + if(r2 == r0) { + pc=0x44ee8; + continue; } - 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; + f0= page[(r28+-32316)>>>2]; + f22= page[(r28+-32308)>>>2]; + f1= page[(r28+-32320)>>>2]; + f23= page[(r28+-32312)>>>2]; + { 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)) { + pc=0x44d44; continue; } r3 = f12; r2 = f13; - /* Next insn is delay slot */ - pc = 0x3b470; + pc=0x44c70; continue; - 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; - } + case 0x44cfc: + f0= page[(r28+-32332)>>>2]; + f1= page[(r28+-32336)>>>2]; + { 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= page[(r28+-32324)>>>2]; + f1= page[(r28+-32328)>>>2]; + { 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 = 0x3b470; + pc=0x44c70; continue; - 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]; + case 0x44d38: + f22= page[(r28+-32308)>>>2]; + f23= page[(r28+-32312)>>>2]; + case 0x44d44: + r31=0x44d4c; + pc=0x43600; + run_43000(); return; + case 0x44d4c: + f2= page[(r28+-32220)>>>2]; + { 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= page[(r28+-32224)>>>2]; + f24= page[(r28+-32300)>>>2]; + { 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= page[(r28+-32304)>>>2]; + f0= page[(r28+-32292)>>>2]; + f2= page[(r28+-32268)>>>2]; + f1= page[(r28+-32296)>>>2]; + { 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= page[(r28+-32272)>>>2]; + f4= page[(r28+-32260)>>>2]; f12 = f20; f13 = f21; - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_3b600() throws ExecutionException { /* 0x3b600 - 0x3b800 */ - int addr, tmp; - 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: + f5= page[(r28+-32264)>>>2]; + { 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= page[(r28+-32284)>>>2]; + { 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= page[(r28+-32288)>>>2]; + { 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= page[(r28+-32276)>>>2]; + { 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= page[(r28+-32280)>>>2]; + { 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= page[(r28+-32252)>>>2]; + { 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= page[(r28+-32256)>>>2]; + { 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= page[(r28+-32244)>>>2]; + { 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= page[(r28+-32248)>>>2]; + { 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= page[(r28+-32236)>>>2]; + { 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= page[(r28+-32240)>>>2]; + { 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= page[(r28+-32228)>>>2]; + { 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= page[(r28+-32232)>>>2]; + { 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; } + r31=0x44e18; + pc=0x46400; + run_46000(); return; + case 0x44e18: r2 = 16367 << 16; r2 = r2 + 13107; r16 = r16 < r2 ? 1 : 0; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x3b674; + if(r16 != r0) { + pc=0x44e74; 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 + -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; - } + } + { 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= page[(r28+-32324)>>>2]; + f2= page[(r28+-32332)>>>2]; + f5= page[(r28+-32328)>>>2]; + f3= page[(r28+-32336)>>>2]; + { 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 0x3b65c: - if (r17 <= 0) { - /* Next insn is delay slot */ - pc = 0x3b7f0; + case 0x44e5c: + if(r17 <= 0) { + pc=0x44ff0; continue; } r3 = r5 + r0; r2 = r4 + r0; - /* 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; - } + pc=0x44c70; + continue; + case 0x44e74: + { 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 + -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; - } + 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= page[(r28+-32324)>>>2]; + { 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= page[(r28+-32328)>>>2]; + { 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= page[(r28+-32212)>>>2]; + f5= page[(r28+-32216)>>>2]; + { 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 = 0x3b65c; + pc=0x44e5c; continue; - 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; - } + case 0x44ee8: + { 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= page[(r28+-32300)>>>2]; + f3= page[(r28+-32304)>>>2]; + { 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= page[(r28+-32292)>>>2]; + f3= page[(r28+-32296)>>>2]; + { 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= page[(r28+-32284)>>>2]; + f3= page[(r28+-32288)>>>2]; + { 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= page[(r28+-32276)>>>2]; + f3= page[(r28+-32280)>>>2]; + { 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= page[(r28+-32268)>>>2]; + f3= page[(r28+-32272)>>>2]; + { 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= page[(r28+-32260)>>>2]; + f3= page[(r28+-32264)>>>2]; + { 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= page[(r28+-32244)>>>2]; + { 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= page[(r28+-32252)>>>2]; + f5= page[(r28+-32248)>>>2]; + f3= page[(r28+-32256)>>>2]; + { 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= page[(r28+-32236)>>>2]; + { 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= page[(r28+-32240)>>>2]; + { 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= page[(r28+-32228)>>>2]; + { 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= page[(r28+-32232)>>>2]; + { 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= page[(r28+-32308)>>>2]; + f3= page[(r28+-32312)>>>2]; + { 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 = 0x3b470; - run_3b400(); - return; - case 0x3b7f0: + pc=0x44c70; + continue; + case 0x44ff0: r6 = 32768 << 16; r2 = r4 ^ r6; r3 = r5 + r0; - /* Next insn is delay slot */ - pc = 0x3b470; - run_3b400(); + pc=0x44c70; + continue; + case 0x45000: + pc=0x45000; return; - case 0x3b800: - pc = 0x3b800; - 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_45000() throws ExecutionException { /* 0x45000 - 0x45800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3b800: - case 0x3ba00: - pc = 0x3ba00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ba00() throws ExecutionException { /* 0x3ba00 - 0x3bc00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ba00: + for(;;) { + switch(pc) { + case 0x45000: + case 0x45200: r2 = f15; r4 = 32767 << 16; r29 = r29 + -72; r3 = f14; r4 = r4 | 65535; - writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + page[(r29+44)>>>2] = 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; + page[(r29+36)>>>2] = r19; + page[(r29+32)>>>2] = r18; + page[(r29+68)>>>2] = f20; + page[(r29+64)>>>2] = f21; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+40)>>>2] = r20; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; f20 = f12; f21 = f13; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = f14; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = f15; + page[(r29+20)>>>2] = f14; + page[(r29+16)>>>2] = f15; r19 = f12; r18 = f13; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x3bac0; + if(r5 == r0) { + pc=0x452c0; continue; } r22 = r4 & r18; @@ -38664,464 +49269,334 @@ 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 = 0x3baac; + if(r5 == r0) { + pc=0x452ac; continue; } r23 = r19 + r0; r30 = r2 + r0; r6 = r3 + r0; - if (r22 == r4) { - /* Next insn is delay slot */ - pc = 0x3bbe0; + if(r22 == r4) { + pc=0x453e0; continue; } - case 0x3ba98: + case 0x45298: r4 = 32752 << 16; r5 = r4 + 1; r5 = r21 < r5 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x3bb4c; + if(r5 != r0) { + pc=0x4534c; continue; } - case 0x3baac: + case 0x452ac: r4 = 49168 << 16; r22 = r22 + r4; r22 = r22 | r19; - if (r22 != r0) { - /* Next insn is delay slot */ - pc = 0x3bb08; + if(r22 != r0) { + pc=0x45308; continue; } - 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]; + case 0x452c0: + f0= page[(r28+-32204)>>>2]; + f1= page[(r28+-32208)>>>2]; + case 0x452cc: + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + f21= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x45308: + f20= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + f21= page[(r29+64)>>>2]; + r4 = 6 << 16; + r4 = r4 + -4072; r29 = r29 + 72; - /* 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; + pc=0x48a00; + run_48800(); return; + case 0x4534c: + if(r21 == r4) { + pc=0x45478; + continue; } - case 0x3bb54: - if (r16 < 0) { - /* Next insn is delay slot */ - pc = 0x3bccc; - run_3bc00(); - return; + case 0x45354: + if(r16 < 0) { + pc=0x454cc; + continue; } - case 0x3bb5c: + case 0x4535c: r20 = r0 + r0; - case 0x3bb60: - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x3bbf4; + case 0x45360: + if(r6 != r0) { + pc=0x453f4; continue; } r2 = 32752 << 16; - if (r21 == r2) { - /* Next insn is delay slot */ - pc = 0x3bd88; - run_3bc00(); - return; + if(r21 == r2) { + pc=0x45588; + continue; } - case 0x3bb74: + case 0x45374: r2 = 16368 << 16; - if (r21 == r2) { - /* Next insn is delay slot */ - pc = 0x3bd28; - run_3bc00(); - return; + if(r21 == r2) { + pc=0x45528; + continue; } r2 = 16384 << 16; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x3c2d8; - run_3c200(); - return; + if(r30 == r2) { + pc=0x45ad8; + run_45800(); return; } r2 = 16352 << 16; - if (r30 != r2) { - /* Next insn is delay slot */ - pc = 0x3bbf4; + if(r30 != r2) { + pc=0x453f4; continue; } - if (r16 < 0) { - /* Next insn is delay slot */ - pc = 0x3bbf4; + if(r16 < 0) { + pc=0x453f4; 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= page[(r29+68)>>>2]; + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + f21= page[(r29+64)>>>2]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc = 0x3cc00; - run_3cc00(); - return; - case 0x3bbe0: - if (r19 != r0) { - /* Next insn is delay slot */ - pc = 0x3baac; + pc=0x46400; + run_46000(); return; + case 0x453e0: + if(r19 != r0) { + pc=0x452ac; continue; } - /* Next insn is delay slot */ - pc = 0x3ba98; + pc=0x45298; continue; - case 0x3bbf0: + case 0x453f0: r20 = r0 + r0; - case 0x3bbf4: + case 0x453f4: f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3bc00; - pc = 0x39e00; - run_39e00(); - 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: + r31=0x45400; + pc=0x43600; + run_43000(); return; + case 0x45400: r3 = f0; r2 = f1; - if (r23 == r0) { - /* Next insn is delay slot */ - pc = 0x3bc88; + if(r23 == r0) { + pc=0x45488; continue; } - case 0x3bc10: + case 0x45410: r18 = r18 >>> 31; r18 = r18 + -1; r4 = r20 | r18; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3bdd4; + if(r4 == r0) { + pc=0x455d4; continue; } r4 = 16864 << 16; r4 = r4 + 1; r4 = r21 < r4 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3bde4; + if(r4 != r0) { + pc=0x455e4; continue; } r4 = 17392 << 16; r4 = r4 + 1; r21 = r21 < r4 ? 1 : 0; - if (r21 != r0) { - /* Next insn is delay slot */ - pc = 0x3c380; - run_3c200(); - return; + if(r21 != r0) { + pc=0x45b80; + run_45800(); return; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x3bd64; + if(r22 == r0) { + pc=0x45564; continue; } - case 0x3bc5c: - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x3bd6c; + case 0x4545c: + if(r30 < 0) { + pc=0x4556c; continue; } - case 0x3bc64: + case 0x45464: f0 = r0; f1 = r0; - /* 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; + pc=0x452cc; + continue; + case 0x45478: + if(r6 == r0) { + pc=0x45354; + continue; } - /* Next insn is delay slot */ - pc = 0x3baac; - run_3ba00(); - return; - case 0x3bc88: - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x3bca8; + pc=0x452ac; + continue; + case 0x45488: + if(r22 == r0) { + pc=0x454a8; continue; } r5 = 16383 << 16; r5 = r5 | 65535; r5 = r5 & r18; r4 = 16368 << 16; - if (r5 != r4) { - /* Next insn is delay slot */ - pc = 0x3bc10; + if(r5 != r4) { + pc=0x45410; continue; } - case 0x3bca8: - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x3bd3c; + case 0x454a8: + if(r30 < 0) { + pc=0x4553c; continue; } - case 0x3bcb0: - if (r16 < 0) { - /* Next insn is delay slot */ - pc = 0x3c2a0; - run_3c200(); - return; + case 0x454b0: + if(r16 < 0) { + pc=0x45aa0; + run_45800(); return; } - case 0x3bcb8: + case 0x454b8: f0 = r3; f1 = r2; - /* Next insn is delay slot */ - pc = 0x3bacc; - run_3ba00(); - return; - case 0x3bccc: + pc=0x452cc; + continue; + case 0x454cc: r4 = 17216 << 16; r4 = r21 < r4 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3bdc8; + if(r4 == r0) { + pc=0x455c8; continue; } r4 = 16368 << 16; r4 = r21 < r4 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3bb5c; - run_3ba00(); - return; + if(r4 != r0) { + pc=0x4535c; + continue; } r4 = r21 >> 20; r5 = r4 < 1044 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x3c4bc; - run_3c400(); - return; + if(r5 != r0) { + pc=0x45cbc; + run_45800(); return; } r2 = r0 + 1075; r4 = r2 - r4; - r2 = r3 >>> (r4 & 0x1f); - r4 = r2 << (r4 & 0x1f); - if (r4 != r6) { - /* Next insn is delay slot */ - pc = 0x3bb5c; - run_3ba00(); - return; + r2 = r3 >>> (r4&0x1f); + r4 = r2 << (r4&0x1f); + if(r4 != r6) { + pc=0x4535c; + continue; } r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; - /* 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; + pc=0x45360; + continue; + case 0x45528: + if(r30 < 0) { + pc=0x45c5c; + run_45800(); return; } f0 = f20; f1 = f21; - /* Next insn is delay slot */ - pc = 0x3bacc; - run_3ba00(); - return; - case 0x3bd3c: + pc=0x452cc; + continue; + case 0x4553c: f2 = r3; - f0 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; + f0= page[(r28+-32204)>>>2]; f3 = r2; - 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; - } + f1= page[(r28+-32208)>>>2]; + { 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 = 0x3bcb0; + pc=0x454b0; continue; - case 0x3bd64: - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x3bc64; + case 0x45564: + if(r30 <= 0) { + pc=0x45464; continue; } - 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: + case 0x4556c: + f0= page[(r28+-32188)>>>2]; + f1= page[(r28+-32192)>>>2]; + { 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; } + pc=0x452cc; + continue; + case 0x45588: r2 = 49168 << 16; r2 = r22 + r2; r2 = r2 | r19; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3bac0; - run_3ba00(); - return; + if(r2 == r0) { + pc=0x452c0; + continue; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; - if (r22 != r0) { - /* Next insn is delay slot */ - pc = 0x3c358; - run_3c200(); - return; + if(r22 != r0) { + pc=0x45b58; + run_45800(); return; } - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x3bc64; + if(r30 < 0) { + pc=0x45464; 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 = 0x3bacc; - run_3ba00(); - return; - case 0x3bdc8: + f0= page[(r29+20)>>>2]; + f1= page[(r29+16)>>>2]; + pc=0x452cc; + continue; + case 0x455c8: r20 = r0 + 2; - /* 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: + pc=0x45360; + continue; + case 0x455d4: + { 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; } + pc=0x452cc; + continue; + case 0x455e4: r4 = 16 << 16; r4 = r22 < r4 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3c450; - run_3c400(); - return; + if(r4 == r0) { + pc=0x45c50; + run_45800(); return; } f4 = r3; - f0 = readPages[(r28 + -32132) >>> 12][((r28 + -32132) >>> 2) & 0x3ff]; + f0= page[(r28+-32132)>>>2]; f5 = r2; - case 0x3be00: - pc = 0x3be00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3be00() throws ExecutionException { /* 0x3be00 - 0x3c000 */ - int addr, tmp; - 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; - } + f1= page[(r28+-32136)>>>2]; + 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 0x3be18: + case 0x45618: r8 = r22 >> 20; r8 = r8 + -1023; r8 = r8 + r4; @@ -39133,72 +49608,48 @@ 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 = 0x3c440; - run_3c400(); - return; + if(r4 != r0) { + pc=0x45c40; + run_45800(); return; } r4 = 11 << 16; r4 = r4 | 46714; r22 = r22 < r4 ? 1 : 0; - if (r22 != r0) { - /* Next insn is delay slot */ - pc = 0x3c50c; - run_3c400(); - return; + if(r22 != r0) { + pc=0x45d0c; + run_45800(); return; } r4 = 65520 << 16; r8 = r8 + 1; r10 = r10 + r4; r11 = r0 + r0; r9 = r0 + r0; - case 0x3be74: + case 0x45674: r4 = 6 << 16; r9 = r9 << 3; - r4 = r4 + -28392; + r4 = r4 + 13248; r4 = r9 + r4; - f14 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + f14= page[(r4+4)>>>2]; f16 = r3; - f15 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + f15= page[(r4+0)>>>2]; f17 = r10; - 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; - } + f12= page[(r28+-32204)>>>2]; + { 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= page[(r28+-32208)>>>2]; + { 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 + -32052) >>> 12][((r28 + -32052) >>> 2) & 0x3ff]; + f18= page[(r28+-32052)>>>2]; 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; - } + f19= page[(r28+-32056)>>>2]; + r2 = r2 + 13216; + 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; @@ -39206,460 +49657,163 @@ 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 + -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; - } + 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= page[(r28+-32076)>>>2]; + { 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= page[(r28+-32116)>>>2]; + f17= page[(r28+-32080)>>>2]; + f11= page[(r28+-32120)>>>2]; + { 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= page[(r28+-32124)>>>2]; + { 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= page[(r28+-32128)>>>2]; + { 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= page[(r28+-32108)>>>2]; + { 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= page[(r28+-32112)>>>2]; + { 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= page[(r28+-32100)>>>2]; + { 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= page[(r28+-32104)>>>2]; + { 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= page[(r28+-32092)>>>2]; + { 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= page[(r28+-32096)>>>2]; + { 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= page[(r28+-32084)>>>2]; + f9= page[(r28+-32088)>>>2]; + { 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 + -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; + 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= page[(r28+-32060)>>>2]; + { 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= page[(r28+-32064)>>>2]; + { 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= page[(r2+4)>>>2]; + f3= page[(r2+0)>>>2]; + 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 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_3c000() throws ExecutionException { /* 0x3c000 - 0x3c200 */ + private final void run_45800() throws ExecutionException { /* 0x45800 - 0x46000 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x45800: + 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 + 13232; r4 = f1; - f0 = readPages[(r28 + -32068) >>> 12][((r28 + -32068) >>> 2) & 0x3ff]; + f0= page[(r28+-32068)>>>2]; f11 = r4; - 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; - } + f1= page[(r28+-32072)>>>2]; + { 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= page[(r9+4)>>>2]; + f3= page[(r9+0)>>>2]; + { 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 0x3c088: + 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 0x45888: r20 = r20 + -1; r18 = r20 | r18; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x3c34c; - run_3c200(); - return; + if(r18 != r0) { + pc=0x45b4c; + continue; } - f20 = readPages[(r28 + -32196) >>> 12][((r28 + -32196) >>> 2) & 0x3ff]; - f21 = readPages[(r28 + -32200) >>> 12][((r28 + -32200) >>> 2) & 0x3ff]; - case 0x3c0a4: + f20= page[(r28+-32196)>>>2]; + f21= page[(r28+-32200)>>>2]; + case 0x458a4: r5 = r0 + r0; - r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4= page[(r29+16)>>>2]; f0 = r5; - f2 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f2= page[(r29+20)>>>2]; 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= page[(r29+16)>>>2]; + 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 = 0x3c2e4; - run_3c200(); - return; + if(r5 != r0) { + pc=0x45ae4; + continue; } r4 = r2 - r4; r4 = r4 | r3; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3c478; - run_3c400(); - return; + if(r4 != r0) { + pc=0x45c78; + continue; } - 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; + f2= page[(r28+-32044)>>>2]; + { 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= page[(r28+-32048)>>>2]; + { 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)) { + pc=0x45c78; + continue; } r5 = r2 + r0; - case 0x3c128: + case 0x45928: 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; @@ -39669,769 +49823,353 @@ 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 = 0x3c530; - run_3c400(); - return; + r6 = r3 >> (r8&0x1f); + if(r7 < 0) { + pc=0x45d30; + continue; } - 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: + case 0x45980: + { 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 0x4598c: r3 = r0 + r0; r2 = f1; f0 = r3; - f4 = readPages[(r28 + -32028) >>> 12][((r28 + -32028) >>> 2) & 0x3ff]; + f4= page[(r28+-32028)>>>2]; f1 = r2; - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_3c200() throws ExecutionException { /* 0x3c200 - 0x3c400 */ - int addr, tmp; - 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; - } + f2= page[(r28+-32020)>>>2]; + { 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= page[(r28+-32024)>>>2]; + { 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= page[(r28+-32012)>>>2]; + f5= page[(r28+-32032)>>>2]; + f9= page[(r28+-32016)>>>2]; + { 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= page[(r28+-31996)>>>2]; + f7= page[(r28+-32000)>>>2]; + { 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= page[(r28+-32004)>>>2]; + { 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= page[(r28+-32008)>>>2]; + { 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; } + f6= page[(r28+-31988)>>>2]; + { 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= page[(r28+-31992)>>>2]; + { 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= page[(r28+-31980)>>>2]; + { 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= page[(r28+-31984)>>>2]; + { 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= page[(r28+-31972)>>>2]; + { 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= page[(r28+-31976)>>>2]; + { 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= page[(r28+-31964)>>>2]; + { 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= page[(r28+-31968)>>>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; } + { 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 = 0x3c51c; - run_3c400(); - return; + if(r3 <= 0) { + pc=0x45d1c; + continue; } 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 = 0x3bacc; - run_3ba00(); - return; - case 0x3c2a0: + 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; } + pc=0x452cc; + run_45000(); return; + case 0x45aa0: r4 = 49168 << 16; r4 = r22 + r4; r4 = r20 | r4; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3c498; - run_3c400(); - return; + if(r4 != r0) { + pc=0x45c98; + continue; } 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 = 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: + 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; } + pc=0x452cc; + run_45000(); return; + case 0x45ad8: + { 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; } + pc=0x452cc; + run_45000(); return; + case 0x45ae4: 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 = 0x3c4e8; - run_3c400(); - return; + if(r4 != r0) { + pc=0x45ce8; + continue; } r4 = 16239 << 16; r4 = r4 + 13312; r4 = r4 + r2; r4 = r4 | r3; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3c32c; + if(r4 != r0) { + pc=0x45b2c; 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; } - 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: + { 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)) { + pc=0x45928; + continue; + } + case 0x45b2c: + f2= page[(r28+-32036)>>>2]; + f3= page[(r28+-32040)>>>2]; + { 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; } + pc=0x452cc; + run_45000(); return; + case 0x45b4c: f20 = f12; f21 = f13; - /* 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; + pc=0x458a4; + continue; + case 0x45b58: + if(r30 >= 0) { + pc=0x45464; + run_45000(); return; } - r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3= page[(r29+20)>>>2]; + r5= page[(r29+16)>>>2]; r4 = 32768 << 16; f0 = r3; r2 = r5 ^ r4; f1 = r2; - /* Next insn is delay slot */ - pc = 0x3bacc; - run_3ba00(); - return; - case 0x3c380: + pc=0x452cc; + run_45000(); return; + case 0x45b80: r4 = 16367 << 16; r4 = r4 | 65535; r5 = r22 < r4 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x3bc5c; - run_3bc00(); - return; + if(r5 != r0) { + pc=0x4545c; + run_45000(); return; } r4 = r4 + 2; r22 = r22 < r4 ? 1 : 0; - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x3bd64; - run_3bc00(); - return; + if(r22 == r0) { + pc=0x45564; + run_45000(); return; } - f12 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; + f12= page[(r28+-32204)>>>2]; f10 = r3; - f13 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; + f13= page[(r28+-32208)>>>2]; f11 = r2; - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_3c400() throws ExecutionException { /* 0x3c400 - 0x3c600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3c400: - f8 = readPages[(r28 + -32140) >>> 12][((r28 + -32140) >>> 2) & 0x3ff]; + f0= page[(r28+-32164)>>>2]; + { 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= page[(r28+-32168)>>>2]; + f2= page[(r28+-32156)>>>2]; + { 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= page[(r28+-32160)>>>2]; + { 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= page[(r28+-32180)>>>2]; + f4= page[(r28+-32172)>>>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; } + f7= page[(r28+-32184)>>>2]; + { 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= page[(r28+-32148)>>>2]; + f5= page[(r28+-32176)>>>2]; + f1= page[(r28+-32152)>>>2]; + { 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; } + f8= page[(r28+-32140)>>>2]; r5 = r0 + r0; - 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; - } + f9= page[(r28+-32144)>>>2]; + { 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 = 0x3c088; - run_3c000(); - return; - case 0x3c440: + 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; } + pc=0x45888; + continue; + case 0x45c40: r11 = r0 + r0; r9 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3be74; - run_3be00(); - return; - case 0x3c450: + pc=0x45674; + run_45000(); return; + case 0x45c50: r4 = r0 + r0; - /* 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: + pc=0x45618; + run_45000(); return; + case 0x45c5c: + f0= page[(r28+-32204)>>>2]; + f1= page[(r28+-32208)>>>2]; + { 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; } + pc=0x452cc; + run_45000(); return; + case 0x45c78: + f2= page[(r28+-32188)>>>2]; + f3= page[(r28+-32192)>>>2]; + { 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; } + pc=0x452cc; + run_45000(); return; + case 0x45c98: r4 = r0 + 1; - if (r20 != r4) { - /* Next insn is delay slot */ - pc = 0x3bcb8; - run_3bc00(); - return; + if(r20 != r4) { + pc=0x454b8; + run_45000(); return; } r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; - /* 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; + pc=0x452cc; + run_45000(); return; + case 0x45cbc: + if(r6 != r0) { + pc=0x453f0; + run_45000(); return; } r2 = r0 + 1043; r4 = r2 - r4; - r2 = r21 >> (r4 & 0x1f); - r4 = r2 << (r4 & 0x1f); - if (r4 == r21) { - /* Next insn is delay slot */ - pc = 0x3c53c; + r2 = r21 >> (r4&0x1f); + r4 = r2 << (r4&0x1f); + if(r4 == r21) { + pc=0x45d3c; continue; } r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3bb74; - run_3ba00(); - return; - case 0x3c4e8: + pc=0x45374; + run_45000(); return; + case 0x45ce8: r4 = 16352 << 16; r4 = r4 + 1; r4 = r5 < r4 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3c128; - run_3c000(); - return; + if(r4 == r0) { + pc=0x45928; + continue; } r4 = r0 + r0; r6 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3c18c; - run_3c000(); - return; - case 0x3c50c: + pc=0x4598c; + continue; + case 0x45d0c: r11 = 4 << 16; r9 = r0 + 1; - /* 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: + pc=0x45674; + run_45000(); return; + case 0x45d1c: + r31=0x45d24; + pc=0x49000; + run_49000(); return; + case 0x45d24: + { 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; } + pc=0x452cc; + run_45000(); return; + case 0x45d30: r6 = r0 - r6; - /* Next insn is delay slot */ - pc = 0x3c180; - run_3c000(); - return; - case 0x3c53c: + pc=0x45980; + continue; + case 0x45d3c: r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; - /* Next insn is delay slot */ - pc = 0x3bb74; - run_3ba00(); - return; - case 0x3c600: - pc = 0x3c600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3c600() throws ExecutionException { /* 0x3c600 - 0x3c800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3c600: + pc=0x45374; + run_45000(); return; + case 0x45e00: r29 = r29 + -64; r2 = f13; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r18; + page[(r29+56)>>>2] = r18; r18 = 32767 << 16; r18 = r18 | 65535; r18 = r18 & r2; - writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r17; + page[(r29+52)>>>2] = 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; + page[(r29+48)>>>2] = r16; + page[(r29+60)>>>2] = r31; r16 = r6 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3c82c; - run_3c800(); - return; + if(r2 != r0) { + pc=0x4602c; + run_46000(); return; } r2 = 16386 << 16; r2 = r2 | 55676; r2 = r18 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3c6c8; + if(r2 == r0) { + pc=0x45ec8; continue; } - 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; + f2= page[(r28+-31956)>>>2]; + f3= page[(r28+-31960)>>>2]; + if(r17 <= 0) { + pc=0x46290; + run_46000(); 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 = 0x3c878; - run_3c800(); - 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) { + pc=0x46078; + run_46000(); return; } - 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; + f2= page[(r28+-31948)>>>2]; + f3= page[(r28+-31952)>>>2]; + case 0x45e8c: + { 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= page[(r29+60)>>>2]; + { 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= page[(r29+56)>>>2]; + { 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= page[(r29+52)>>>2]; + page[(r16+4)>>>2] = f4; + page[(r16+0)>>>2] = f5; + page[(r16+12)>>>2] = f2; + page[(r16+8)>>>2] = f3; r2 = r0 + 1; - r16 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r16= page[(r29+48)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3c6c8: + case 0x45ec8: r2 = 16697 << 16; r2 = r2 + 8700; r2 = r18 < r2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3c894; - run_3c800(); - return; + if(r2 != r0) { + pc=0x46094; + run_46000(); return; } r2 = 32752 << 16; r2 = r18 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3c85c; - run_3c800(); - return; + if(r2 == r0) { + pc=0x4605c; + run_46000(); return; } r9 = f12; r4 = r0 + r0; @@ -40449,342 +50187,197 @@ 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 + -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; - } + fcsr = r2; + { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r29+28)>>>2] = f0; + page[(r29+24)>>>2] = 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= page[(r28+-31892)>>>2]; + f3= page[(r28+-31896)>>>2]; + { 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; } + page[(r29+36)>>>2] = 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; + page[(r29+32)>>>2] = 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 = 0x3cadc; - run_3ca00(); - return; + fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); + page[(r29+44)>>>2] = f4; + page[(r29+40)>>>2] = f5; + if(((fcsr&0x800000)!=0) == (0!=0)) { + pc=0x462dc; + run_46000(); 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; + 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)) { + pc=0x462e8; + run_46000(); return; } r7 = r0 + 1; - case 0x3c7d8: + case 0x45fd8: r2 = r0 + 2; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = r2; r2 = 6 << 16; - r2 = r2 + -28248; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = r2 + 13392; + page[(r29+20)>>>2] = r2; r4 = r29 + 24; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x3c7fc; - pc = 0x3d400; - run_3d400(); - return; - case 0x3c7fc: - if (r17 >= 0) { - /* Next insn is delay slot */ - pc = 0x3c840; - run_3c800(); - return; + r31=0x45ffc; + pc=0x46c00; + run_46800(); return; + case 0x45ffc: + if(r17 >= 0) { + pc=0x46040; + run_46000(); return; } - case 0x3c800: - pc = 0x3c800; + 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_3c800() throws ExecutionException { /* 0x3c800 - 0x3ca00 */ + private final void run_46000() throws ExecutionException { /* 0x46000 - 0x46800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3c800: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x46000: + r4= page[(r16+0)>>>2]; r3 = 32768 << 16; r4 = r4 ^ r3; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; - r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r4; + r4= page[(r16+8)>>>2]; r2 = r0 - r2; r3 = r4 ^ r3; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x3c840; + page[(r16+8)>>>2] = r3; + pc=0x46040; continue; - 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; + case 0x4602c: + page[(r6+4)>>>2] = f12; + page[(r6+0)>>>2] = f13; + page[(r6+12)>>>2] = r0; + page[(r6+8)>>>2] = r0; r2 = r0 + r0; - 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]; + case 0x46040: + r31= page[(r29+60)>>>2]; + r18= page[(r29+56)>>>2]; + r17= page[(r29+52)>>>2]; + r16= page[(r29+48)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x4605c: + { 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; } + page[(r6+12)>>>2] = f0; + page[(r6+8)>>>2] = f1; + page[(r6+4)>>>2] = f0; + page[(r6+0)>>>2] = f1; + pc=0x46040; continue; - 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; - } + case 0x46078: + f4= page[(r28+-31940)>>>2]; + f2= page[(r28+-31932)>>>2]; + f5= page[(r28+-31944)>>>2]; + f3= page[(r28+-31936)>>>2]; + { 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; } + pc=0x45e8c; + run_45800(); return; + case 0x46094: + r31=0x4609c; + pc=0x43600; + run_43000(); return; + case 0x4609c: + f2= page[(r28+-31924)>>>2]; + f4= page[(r28+-31916)>>>2]; + f3= page[(r28+-31928)>>>2]; + f5= page[(r28+-31920)>>>2]; + { 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 + -31956) >>> 12][((r28 + -31956) >>> 2) & 0x3ff]; + f4= page[(r28+-31956)>>>2]; r3 = r2 < 32 ? 1 : 0; - 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; + f5= page[(r28+-31960)>>>2]; + { 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= page[(r28+-31948)>>>2]; + f5= page[(r28+-31952)>>>2]; + { 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) { + pc=0x461a8; continue; } r4 = r2 + -1; r3 = 6 << 16; r4 = r4 << 2; - r3 = r3 + -28376; + r3 = r3 + 13264; r3 = r4 + r3; - r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; - if (r3 == r18) { - /* Next insn is delay slot */ - pc = 0x3c9a8; + r3= page[(r3+0)>>>2]; + if(r3 == r18) { + pc=0x461a8; 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 0x3c950: + page[(r16+4)>>>2] = r5; + page[(r16+0)>>>2] = r4; + case 0x46150: 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 = 0x3c840; + page[(r16+12)>>>2] = r7; + page[(r16+8)>>>2] = r6; + if(r17 >= 0) { + pc=0x46040; 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; + page[(r16+0)>>>2] = r4; + page[(r16+4)>>>2] = r5; + page[(r16+8)>>>2] = r3; + page[(r16+12)>>>2] = r7; r2 = r0 - r2; - /* Next insn is delay slot */ - pc = 0x3c840; + pc=0x46040; continue; - 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; - } + case 0x461a8: + { 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; @@ -40792,256 +50385,113 @@ 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 = 0x3c950; + page[(r16+4)>>>2] = r5; + page[(r16+0)>>>2] = r4; + if(r3 != r0) { + pc=0x46150; continue; } - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_3ca00() throws ExecutionException { /* 0x3ca00 - 0x3cc00 */ - int addr, tmp; - 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; - } + f4= page[(r28+-31940)>>>2]; + f5= page[(r28+-31944)>>>2]; + { 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= page[(r28+-31932)>>>2]; + f1= page[(r28+-31936)>>>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; } + { 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 = 0x3cb10; + page[(r16+4)>>>2] = r5; + page[(r16+0)>>>2] = r4; + if(r18 != r0) { + pc=0x46310; continue; } - 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; - } + f4= page[(r28+-31908)>>>2]; + f5= page[(r28+-31912)>>>2]; + { 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= page[(r28+-31900)>>>2]; + f7= page[(r28+-31904)>>>2]; + { 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 = 0x3c950; - run_3c800(); - return; - case 0x3ca90: + page[(r16+4)>>>2] = r5; + page[(r16+0)>>>2] = r4; + pc=0x46150; + continue; + case 0x46290: 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 = 0x3caf4; + 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) { + pc=0x462f4; continue; } - 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 = 0x3c7d8; - run_3c600(); - return; - case 0x3cae8: - r7 = r0 + 2; - /* 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; + f2= page[(r28+-31948)>>>2]; + f3= page[(r28+-31952)>>>2]; + case 0x462b4: + { 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; } + page[(r16+4)>>>2] = 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; } + page[(r16+0)>>>2] = f5; + page[(r16+12)>>>2] = f2; + page[(r16+8)>>>2] = f3; + pc=0x46040; continue; - case 0x3cb10: + case 0x462dc: + r7 = r0 + 3; + pc=0x45fd8; + run_45800(); return; + case 0x462e8: + r7 = r0 + 2; + pc=0x45fd8; + run_45800(); return; + case 0x462f4: + f4= page[(r28+-31940)>>>2]; + f2= page[(r28+-31932)>>>2]; + f5= page[(r28+-31944)>>>2]; + f3= page[(r28+-31936)>>>2]; + { 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; } + pc=0x462b4; + continue; + case 0x46310: f0 = f6; f1 = f7; - /* Next insn is delay slot */ - pc = 0x3c950; - run_3c800(); - return; - case 0x3cc00: - pc = 0x3cc00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3cc00() throws ExecutionException { /* 0x3cc00 - 0x3ce00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3cc00: + pc=0x46150; + continue; + case 0x46400: 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 = 0x3ce88; - run_3ce00(); - return; + if(r7 == r6) { + pc=0x46688; + continue; } - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x3cddc; + if(r2 <= 0) { + pc=0x465dc; continue; } r2 = r2 >> 20; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3ce14; - run_3ce00(); - return; + if(r2 == r0) { + pc=0x46614; + continue; } r3 = 15 << 16; r3 = r3 | 65535; @@ -41050,12 +50500,11 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3cdc4; + if(r3 != r0) { + pc=0x465c4; continue; } - case 0x3cc58: + case 0x46458: r4 = r4 << 1; r14 = r2 >> 1; r2 = r5 >>> 31; @@ -41065,27 +50514,25 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r0 + r0; r5 = r0 + r0; r4 = 32 << 16; - case 0x3cc7c: + case 0x4647c: r7 = r5 + r4; r8 = r2 < r7 ? 1 : 0; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x3cc98; + if(r8 != r0) { + pc=0x46498; continue; } r5 = r7 + r4; r2 = r2 - r7; r9 = r9 + r4; - case 0x3cc98: + case 0x46498: 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 = 0x3cc7c; + if(r6 != r0) { + pc=0x4647c; continue; } r7 = r0 + 32; @@ -41093,187 +50540,151 @@ public final class AcmeCrossAssembler extends UnixRuntime { r10 = r0 + r0; r4 = 32768 << 16; r12 = 32768 << 16; - case 0x3cccc: + case 0x464cc: r8 = r5 < r2 ? 1 : 0; r6 = r4 + r10; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x3cda4; + if(r8 == r0) { + pc=0x465a4; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - case 0x3cce0: + case 0x464e0: r13 = r6 & r12; r10 = r6 + r4; - if (r13 == r12) { - /* Next insn is delay slot */ - pc = 0x3cd8c; + if(r13 == r12) { + pc=0x4658c; continue; } - case 0x3ccf0: + case 0x464f0: r13 = r5 + r0; - case 0x3ccf4: + case 0x464f4: r2 = r2 - r5; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x3cd04; + if(r8 == r0) { + pc=0x46504; continue; } r2 = r2 + -1; - case 0x3cd04: + case 0x46504: r3 = r3 - r6; r11 = r11 + r4; r5 = r13 + r0; - case 0x3cd10: + case 0x46510: 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 = 0x3cccc; + if(r7 != r0) { + pc=0x464cc; continue; } r2 = r2 | r3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3cd50; + if(r2 == r0) { + pc=0x46550; continue; } r2 = r0 + -1; - if (r11 == r2) { - /* Next insn is delay slot */ - pc = 0x3cea4; - run_3ce00(); - return; + if(r11 == r2) { + pc=0x466a4; + continue; } r2 = r11 & 1; r11 = r2 + r11; - case 0x3cd50: + case 0x46550: r11 = r11 >>> 1; - case 0x3cd54: + case 0x46554: r4 = r9 >> 1; r2 = 16352 << 16; r9 = r9 & 1; r4 = r4 + r2; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x3cd74; + if(r9 == r0) { + pc=0x46574; continue; } r2 = 32768 << 16; r11 = r11 | r2; - case 0x3cd74: + case 0x46574: r14 = r14 << 20; f0 = r11; r2 = r14 + r4; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3cd8c: + case 0x4658c: r13 = r10 & r12; - if (r13 != r0) { - /* Next insn is delay slot */ - pc = 0x3ccf0; + if(r13 != r0) { + pc=0x464f0; continue; } r13 = r5 + 1; - /* Next insn is delay slot */ - pc = 0x3ccf4; + pc=0x464f4; continue; - case 0x3cda4: - if (r2 != r5) { - /* Next insn is delay slot */ - pc = 0x3cd10; + case 0x465a4: + if(r2 != r5) { + pc=0x46510; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x3cce0; + if(r8 == r0) { + pc=0x464e0; continue; } r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x3cd10; + pc=0x46510; continue; - case 0x3cdc4: + case 0x465c4: r3 = r5 >>> 31; r4 = r4 << 1; r4 = r4 + r3; r5 = r5 << 1; - /* Next insn is delay slot */ - pc = 0x3cc58; + pc=0x46458; continue; - case 0x3cddc: + case 0x465dc: r6 = 32767 << 16; r6 = r6 | 65535; r2 = r6 & r2; r2 = r2 | r3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3ce98; - run_3ce00(); - return; + if(r2 == r0) { + pc=0x46698; + continue; } - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3cec8; - run_3ce00(); - return; + if(r4 != r0) { + pc=0x466c8; + continue; } r2 = r0 + r0; - case 0x3ce00: - pc = 0x3ce00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ce00() throws ExecutionException { /* 0x3ce00 - 0x3d000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ce00: + case 0x46600: r4 = r5 >>> 11; r2 = r2 + -21; r5 = r5 << 21; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3ce00; + if(r4 == r0) { + pc=0x46600; continue; } - case 0x3ce14: + case 0x46614: r3 = 16 << 16; r3 = r4 & r3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3ceb4; + if(r3 != r0) { + pc=0x466b4; continue; } r7 = 16 << 16; - case 0x3ce28: + case 0x46628: r4 = r4 << 1; r6 = r4 & r7; r3 = r3 + 1; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x3ce28; + if(r6 == r0) { + pc=0x46628; continue; } r7 = r0 + 1; r6 = r0 + 32; r7 = r7 - r3; r6 = r6 - r3; - case 0x3ce4c: - r6 = r5 >>> (r6 & 0x1f); - r5 = r5 << (r3 & 0x1f); + case 0x4664c: + r6 = r5 >>> (r6&0x1f); + r5 = r5 << (r3&0x1f); r3 = 15 << 16; r3 = r3 | 65535; r2 = r2 + r7; @@ -41283,92 +50694,58 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x3cc58; - run_3cc00(); - return; + if(r3 == r0) { + pc=0x46458; + continue; } - /* Next insn is delay slot */ - pc = 0x3cdc4; - run_3cc00(); + pc=0x465c4; + continue; + case 0x46688: + { 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; } + pc=r31; return; - 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: + case 0x46698: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3cea4: + case 0x466a4: r9 = r9 + 1; r11 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3cd54; - run_3cc00(); - return; - case 0x3ceb4: + pc=0x46554; + continue; + case 0x466b4: r6 = r0 + 32; r7 = r0 + 1; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3ce4c; + pc=0x4664c; continue; - 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; + case 0x466c8: + { 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; } + pc=r31; return; - case 0x3d000: - pc = 0x3d000; + 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_3d000() throws ExecutionException { /* 0x3d000 - 0x3d200 */ + private final void run_46800() throws ExecutionException { /* 0x46800 - 0x47000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3d000: + for(;;) { + switch(pc) { + case 0x46800: 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 = 0x3d100; + if(r3 == r0) { + pc=0x46900; continue; } r4 = fcsr; @@ -41376,461 +50753,183 @@ 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 = 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; + if(r2 == r0) { + pc=0x46a20; + continue; + } + { 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= page[(r28+-31860)>>>2]; + f4= page[(r28+-31852)>>>2]; + f3= page[(r28+-31864)>>>2]; + f5= page[(r28+-31856)>>>2]; + { 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= page[(r28+-31844)>>>2]; + { 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= page[(r28+-31848)>>>2]; + { 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= page[(r28+-31836)>>>2]; + { 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= page[(r28+-31840)>>>2]; + { 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= page[(r28+-31828)>>>2]; + { 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= page[(r28+-31832)>>>2]; + { 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= page[(r28+-31820)>>>2]; + { 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= page[(r28+-31824)>>>2]; + { 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 0x468c8: + f4= page[(r28+-31812)>>>2]; + { 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= page[(r28+-31816)>>>2]; + { 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= page[(r28+-31868)>>>2]; + { 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= page[(r28+-31872)>>>2]; + { 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; } + pc=r31; return; - 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; - } + case 0x46900: + { 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= page[(r28+-31860)>>>2]; + f4= page[(r28+-31852)>>>2]; + f3= page[(r28+-31864)>>>2]; + f5= page[(r28+-31856)>>>2]; + { 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 + -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; + 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= page[(r28+-31844)>>>2]; + { 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= page[(r28+-31848)>>>2]; + { 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= page[(r28+-31836)>>>2]; + { 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= page[(r28+-31840)>>>2]; + { 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= page[(r28+-31828)>>>2]; + { 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= page[(r28+-31832)>>>2]; + { 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= page[(r28+-31820)>>>2]; + { 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= page[(r28+-31824)>>>2]; + { 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) { + pc=0x468c8; continue; } r3 = 16361 << 16; r3 = r3 + 1; r3 = r2 < r3 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x3d1e4; + if(r3 == r0) { + pc=0x469e4; continue; } - 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; - } + f6= page[(r28+-31812)>>>2]; + { 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= page[(r28+-31816)>>>2]; + 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 + -31868) >>> 12][((r28 + -31868) >>> 2) & 0x3ff]; + f8= page[(r28+-31868)>>>2]; r4 = r2 + r3; f5 = r4; - 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; + f9= page[(r28+-31872)>>>2]; + { 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; } + pc=r31; return; - 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; + case 0x469e4: + f6= page[(r28+-31812)>>>2]; + { 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= page[(r28+-31816)>>>2]; + { 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= page[(r28+-31876)>>>2]; + f8= page[(r28+-31884)>>>2]; + f5= page[(r28+-31880)>>>2]; + { 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= page[(r28+-31888)>>>2]; + { 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; } + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3d200() throws ExecutionException { /* 0x3d200 - 0x3d400 */ - int addr, tmp; - 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; + case 0x46a20: + f0= page[(r28+-31868)>>>2]; + f1= page[(r28+-31872)>>>2]; + pc=r31; return; - 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 0x3d400: - pc = 0x3d400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3d400() throws ExecutionException { /* 0x3d400 - 0x3d600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3d400: + case 0x46c00: r29 = r29 + -688; - r2 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; + r2= page[(r29+704)>>>2]; r9 = r6 + -3; r3 = r2 << 2; r2 = 6 << 16; - r2 = r2 + -27920; + r2 = r2 + 13720; r2 = r3 + r2; - writePages[(r29 + 608) >>> 12][((r29 + 608) >>> 2) & 0x3ff] = r18; - r18 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + page[(r29+608)>>>2] = r18; + r18= page[(r2+0)>>>2]; r2 = r0 + 24; - if (r2 != r0) { - /* Next insn is delay slot */ - hi = r9 % r2; - lo = r9 / r2; - pc = 0x3d434; + if(r2 != r0) { + hi = r9%r2; lo = r9/r2; + pc=0x46c34; continue; } - hi = r9 % r2; - lo = r9 / r2; + hi = r9%r2; lo = r9/r2; throw new ExecutionException("Break"); - 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; + case 0x46c34: + page[(r29+628)>>>2] = r23; + page[(r29+612)>>>2] = r19; + page[(r29+604)>>>2] = r17; + page[(r29+636)>>>2] = r31; + page[(r29+632)>>>2] = r30; + page[(r29+624)>>>2] = r22; + page[(r29+620)>>>2] = r21; + page[(r29+616)>>>2] = r20; + page[(r29+600)>>>2] = r16; + page[(r29+684)>>>2] = f30; + page[(r29+680)>>>2] = f31; + page[(r29+676)>>>2] = f28; + page[(r29+672)>>>2] = f29; + page[(r29+668)>>>2] = f26; + page[(r29+664)>>>2] = f27; + page[(r29+660)>>>2] = f24; + page[(r29+656)>>>2] = f25; + page[(r29+652)>>>2] = f22; + page[(r29+648)>>>2] = f23; + page[(r29+644)>>>2] = f20; + page[(r29+640)>>>2] = f21; r17 = r4 + r0; r23 = r5 + r0; r19 = r7 + -1; r9 = lo; - if (r9 < 0) { - /* Next insn is delay slot */ - pc = 0x3e060; - run_3e000(); - return; + if(r9 < 0) { + pc=0x47860; + run_47800(); return; } - case 0x3d4a0: + case 0x46ca0: r2 = ~(r0 | r9); r3 = r2 << 3; r2 = r2 << 5; @@ -41838,46 +50937,37 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r19 + r18; r30 = r30 + r6; r2 = r9 - r19; - if (r5 < 0) { - /* Next insn is delay slot */ - pc = 0x3d50c; + if(r5 < 0) { + pc=0x46d0c; continue; } - r6 = readPages[(r29 + 708) >>> 12][((r29 + 708) >>> 2) & 0x3ff]; + r6= page[(r29+708)>>>2]; r4 = r2 << 2; r5 = r2 + r5; r3 = r29 + 336; r4 = r6 + r4; r5 = r5 + 1; - case 0x3d4dc: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3dca8; - run_3dc00(); - return; + case 0x46cdc: + if(r2 < 0) { + pc=0x474a8; + run_47000(); return; } - f2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; { - long l = Double.doubleToLongBits(((double) f2)); - f1 = (int) (l >>> 32); - f0 = (int) l; - } - case 0x3d4f0: + f2= page[(r4+0)>>>2]; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x46cf0: r2 = r2 + 1; - writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = f0; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = f1; + page[(r3+4)>>>2] = f0; + page[(r3+0)>>>2] = f1; r4 = r4 + 4; r3 = r3 + 8; - if (r2 != r5) { - /* Next insn is delay slot */ - pc = 0x3d4dc; + if(r2 != r5) { + pc=0x46cdc; continue; } - case 0x3d50c: - if (r18 < 0) { - /* Next insn is delay slot */ - pc = 0x3e144; - run_3e000(); - return; + case 0x46d0c: + if(r18 < 0) { + pc=0x47944; + run_47800(); return; } r16 = r7 << 3; r8 = r18 + 1; @@ -41886,112 +50976,76 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r0 + r0; r21 = r29 + 16; r6 = r6 + 328; - case 0x3d530: - if (r19 < 0) { - /* Next insn is delay slot */ - pc = 0x3dd38; - run_3dc00(); - return; + case 0x46d30: + if(r19 < 0) { + pc=0x47538; + run_47000(); return; } f0 = r0; r3 = r6 + r5; f1 = r0; r2 = r0 + r0; - case 0x3d548: + case 0x46d48: 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 = 0x3d548; + f2= page[(r3+4)>>>2]; + f4= page[(r4+4)>>>2]; + f3= page[(r3+0)>>>2]; + f5= page[(r4+0)>>>2]; + 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) { + pc=0x46d48; 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 = 0x3d530; + page[(r2+4)>>>2] = f0; + page[(r2+0)>>>2] = f1; + if(r5 != r8) { + pc=0x46d30; continue; } - case 0x3d58c: + case 0x46d8c: r2 = r29 + 492; r20 = r18 << 2; - writePages[(r29 + 576) >>> 12][((r29 + 576) >>> 2) & 0x3ff] = r2; + page[(r29+576)>>>2] = r2; r20 = r2 + r20; r2 = r18 + -1; r2 = r2 << 2; r2 = r21 + 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; + f28= page[(r28+-31788)>>>2]; + f30= page[(r28+-31780)>>>2]; + f20= page[(r28+-31764)>>>2]; + f24= page[(r28+-31804)>>>2]; + f22= page[(r28+-31796)>>>2]; + page[(r29+584)>>>2] = r2; r2 = r18 + -2; r2 = r2 << 2; - 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]; + f29= page[(r28+-31792)>>>2]; + f31= page[(r28+-31784)>>>2]; + f21= page[(r28+-31768)>>>2]; + f25= page[(r28+-31808)>>>2]; + f23= page[(r28+-31800)>>>2]; r22 = r18 + r0; r8 = r18 << 3; - writePages[(r29 + 588) >>> 12][((r29 + 588) >>> 2) & 0x3ff] = r2; - case 0x3d5e8: + page[(r29+588)>>>2] = r2; + case 0x46de8: 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 = 0x3d698; - run_3d600(); - return; + f12= page[(r8+4)>>>2]; + f13= page[(r8+0)>>>2]; + if(r22 <= 0) { + pc=0x46e98; + continue; } - case 0x3d600: - pc = 0x3d600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3d600() throws ExecutionException { /* 0x3d600 - 0x3d800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3d600: r2 = r22 + -1; r2 = r2 << 3; r3 = r29 + 496; r2 = r21 + r2; r4 = r29 + 8; - 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; - } + case 0x46e14: + { 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; @@ -41999,186 +51053,101 @@ 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 = 0x3d614; + f12= page[(r2+12)>>>2]; + page[(r3+-4)>>>2] = f2; + f13= page[(r2+8)>>>2]; + { 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) { + pc=0x46e14; continue; } - case 0x3d698: + case 0x46e98: r6 = r30 + r0; - 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; - } + page[(r29+592)>>>2] = r9; + r31=0x46ea8; + pc=0x49000; + run_49000(); return; + case 0x46ea8: + { 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 = 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; - } + r31=0x46eb8; + pc=0x48200; + run_48000(); return; + case 0x46eb8: + { 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= page[(r29+592)>>>2]; + { 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 = 0x3dcbc; - run_3dc00(); - return; + page[(r29+580)>>>2] = 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) { + pc=0x474bc; + run_47000(); return; } r3 = r22 + -1; r3 = r3 << 2; r3 = r21 + r3; - r2 = readPages[(r3 + 480) >>> 12][((r3 + 480) >>> 2) & 0x3ff]; + r2= page[(r3+480)>>>2]; 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= page[(r29+580)>>>2]; + 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 0x3d740: - if (r4 <= 0) { - /* Next insn is delay slot */ - pc = 0x3d814; - run_3d800(); - return; + page[(r29+580)>>>2] = r7; + page[(r3+480)>>>2] = r2; + r4 = r2 >> (r4&0x1f); + case 0x46f40: + if(r4 <= 0) { + pc=0x47014; + run_47000(); return; } - r2 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; + r2= page[(r29+580)>>>2]; r2 = r2 + 1; - writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = r2; - if (r22 <= 0) { - /* Next insn is delay slot */ - pc = 0x3dd78; - run_3dc00(); - return; + page[(r29+580)>>>2] = r2; + if(r22 <= 0) { + pc=0x47578; + run_47000(); return; } - case 0x3d760: + case 0x46f60: r2 = r29 + 496; r6 = r22 << 2; r7 = 255 << 16; @@ -42186,563 +51155,391 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r0 + r0; r7 = r7 | 65535; r8 = 256 << 16; - /* Next insn is delay slot */ - pc = 0x3d7a4; + pc=0x46fa4; continue; - case 0x3d784: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x3d798; + case 0x46f84: + if(r3 == r0) { + pc=0x46f98; continue; } r3 = r8 - r3; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + page[(r2+0)>>>2] = r3; r5 = r0 + 1; - case 0x3d798: + case 0x46f98: r2 = r2 + 4; - if (r2 == r6) { - /* Next insn is delay slot */ - pc = 0x3d7c8; + if(r2 == r6) { + pc=0x46fc8; continue; } - case 0x3d7a4: - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x3d784; + case 0x46fa4: + r3= page[(r2+0)>>>2]; + if(r5 == r0) { + pc=0x46f84; continue; } r3 = r7 - r3; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + page[(r2+0)>>>2] = r3; r2 = r2 + 4; r5 = r0 + 1; - if (r2 != r6) { - /* Next insn is delay slot */ - pc = 0x3d7a4; + if(r2 != r6) { + pc=0x46fa4; continue; } - case 0x3d7c8: - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x3d808; - run_3d800(); - return; + case 0x46fc8: + if(r30 <= 0) { + pc=0x47008; + run_47000(); return; } r2 = r0 + 1; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x3dce4; - run_3dc00(); - return; + if(r30 == r2) { + pc=0x474e4; + run_47000(); return; } r2 = r0 + 2; - if (r30 != r2) { - /* Next insn is delay slot */ - pc = 0x3d808; - run_3d800(); - return; + if(r30 != r2) { + pc=0x47008; + run_47000(); return; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r6 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; + r6= page[(r2+480)>>>2]; r3 = 63 << 16; r3 = r3 | 65535; - case 0x3d800: - pc = 0x3d800; + case 0x47000: + pc=0x47000; 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_47000() throws ExecutionException { /* 0x47000 - 0x47800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3d800: + for(;;) { + switch(pc) { + case 0x47000: r3 = r6 & r3; - writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = r3; - case 0x3d808: + page[(r2+480)>>>2] = r3; + case 0x47008: r2 = r0 + 2; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x3d9b0; + if(r4 == r2) { + pc=0x471b0; continue; } - case 0x3d814: + case 0x47014: 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 = 0x3d9f8; + 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)) { + pc=0x471f8; continue; } - case 0x3d834: + case 0x47034: r5 = r22 + -1; r2 = r5 < r18 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3d870; + if(r2 != r0) { + pc=0x47070; continue; } r3 = r29 + 496; r7 = r5 << 2; r2 = r3 + r7; r3 = r0 + r0; - case 0x3d854: - r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + case 0x47054: + r6= page[(r2+0)>>>2]; r2 = r2 + -4; r3 = r3 | r6; - if (r2 != r20) { - /* Next insn is delay slot */ - pc = 0x3d854; + if(r2 != r20) { + pc=0x47054; continue; } - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3e010; - run_3e000(); - return; + if(r3 != r0) { + pc=0x47810; + run_47800(); 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; + case 0x47070: + r4= page[(r29+584)>>>2]; + r2= page[(r4+480)>>>2]; + if(r2 != r0) { + pc=0x47804; + run_47800(); return; } - r7 = readPages[(r29 + 588) >>> 12][((r29 + 588) >>> 2) & 0x3ff]; + r7= page[(r29+588)>>>2]; r5 = r29 + 496; r2 = r5 + r7; r3 = r0 + 1; - case 0x3d898: + case 0x47098: r2 = r2 + -4; - r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r4= page[(r2+4)>>>2]; r3 = r3 + 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3d898; + if(r4 == r0) { + pc=0x47098; continue; } - case 0x3d8ac: + case 0x470ac: r2 = r22 + 1; r22 = r22 + r3; r3 = r22 < r2 ? 1 : 0; r8 = r22 << 3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3d5e8; - run_3d400(); - return; + if(r3 != r0) { + pc=0x46de8; + run_46800(); return; } r5 = r2 + r9; - r3 = readPages[(r29 + 708) >>> 12][((r29 + 708) >>> 2) & 0x3ff]; + r3= page[(r29+708)>>>2]; r5 = r5 << 2; r5 = r3 + r5; r7 = r19 + r2; - f2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + f2= page[(r5+0)>>>2]; 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 = 0x3d984; + page[(r7+4)>>>2] = f0; + page[(r7+0)>>>2] = f1; + if(r19 < 0) { + pc=0x47184; continue; } - case 0x3d910: + case 0x47110: f0 = r0; r3 = r7 + r0; f1 = r0; r2 = r0 + r0; - case 0x3d920: + case 0x47120: 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 = 0x3d920; + f2= page[(r3+4)>>>2]; + f4= page[(r10+4)>>>2]; + f3= page[(r3+0)>>>2]; + f5= page[(r10+0)>>>2]; + 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) { + pc=0x47120; continue; } - writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = f0; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = f1; + page[(r4+4)>>>2] = f0; + page[(r4+0)>>>2] = f1; r4 = r4 + 8; r5 = r5 + 4; r7 = r7 + 8; - if (r4 == r6) { - /* Next insn is delay slot */ - pc = 0x3d5e8; - run_3d400(); - return; + if(r4 == r6) { + pc=0x46de8; + run_46800(); return; } - 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; + case 0x47168: + f2= page[(r5+0)>>>2]; + { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + page[(r7+4)>>>2] = f0; + page[(r7+0)>>>2] = f1; + if(r19 >= 0) { + pc=0x47110; continue; } - case 0x3d984: + case 0x47184: 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; + page[(r4+-4)>>>2] = f0; + page[(r4+-8)>>>2] = f1; r7 = r7 + 8; - if (r4 != r6) { - /* Next insn is delay slot */ - pc = 0x3d968; + if(r4 != r6) { + pc=0x47168; continue; } - /* 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; + pc=0x46de8; + run_46800(); return; + case 0x471b0: + { 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) { + pc=0x47014; 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 = 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; - } + page[(r29+596)>>>2] = r4; + page[(r29+592)>>>2] = r9; + r31=0x471d4; + pc=0x49000; + run_49000(); return; + case 0x471d4: + { 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= page[(r29+592)>>>2]; 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 = 0x3d834; + r4= page[(r29+596)>>>2]; + 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)) { + pc=0x47034; continue; } - case 0x3d9f8: + case 0x471f8: f12 = f26; f13 = f27; r6 = r0 - r30; - case 0x3da00: - pc = 0x3da00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3da00() throws ExecutionException { /* 0x3da00 - 0x3dc00 */ - int addr, tmp; - 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; + page[(r29+596)>>>2] = r4; + r31=0x4720c; + pc=0x49000; + run_49000(); return; + case 0x4720c: + f2= page[(r28+-31796)>>>2]; + r4= page[(r29+596)>>>2]; + f3= page[(r28+-31800)>>>2]; + 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)) { + pc=0x4786c; + run_47800(); return; } - f4 = readPages[(r28 + -31804) >>> 12][((r28 + -31804) >>> 2) & 0x3ff]; + f4= page[(r28+-31804)>>>2]; r5 = r22 + 1; - 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; - } + f5= page[(r28+-31808)>>>2]; + 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; + page[(r2+480)>>>2] = f2; r2 = r5 << 2; r2 = r21 + r2; - writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = f4; - case 0x3dab4: + page[(r2+480)>>>2] = f4; + case 0x472b4: 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 = 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; + page[(r29+596)>>>2] = r4; + page[(r29+592)>>>2] = r5; + r31=0x472cc; + pc=0x49000; + run_49000(); return; + case 0x472cc: + r5= page[(r29+592)>>>2]; + r4= page[(r29+596)>>>2]; + if(r5 < 0) { + pc=0x473b4; continue; } - f4 = readPages[(r28 + -31804) >>> 12][((r28 + -31804) >>> 2) & 0x3ff]; + f4= page[(r28+-31804)>>>2]; r3 = r29 + 496; r2 = r5 << 2; r9 = r5 << 3; - f5 = readPages[(r28 + -31808) >>> 12][((r28 + -31808) >>> 2) & 0x3ff]; + f5= page[(r28+-31808)>>>2]; r2 = r3 + r2; r3 = r21 + r9; - 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; - } + case 0x472f8: + f6= page[(r2+0)>>>2]; + r7= page[(r29+576)>>>2]; + { 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 = 0x3daf8; + page[(r3+12)>>>2] = f2; + page[(r3+8)>>>2] = f3; + if(r2 != r7) { + pc=0x472f8; continue; } r9 = r21 + r9; r11 = r5 + 1; r8 = r0 + r0; r10 = 6 << 16; - case 0x3db34: - if (r18 < 0) { - /* Next insn is delay slot */ - pc = 0x3dd84; - run_3dc00(); - return; + case 0x47334: + if(r18 < 0) { + pc=0x47584; + continue; } f0 = r0; - r6 = r10 + -27984; + r6 = r10 + 13656; r3 = r9 + r0; f1 = r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3db6c; + pc=0x4736c; continue; - case 0x3db58: + case 0x47358: r7 = r8 < r2 ? 1 : 0; r6 = r6 + 8; r3 = r3 + 8; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x3db94; + if(r7 != r0) { + pc=0x47394; continue; } - 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; + case 0x4736c: + f4= page[(r6+4)>>>2]; + f2= page[(r3+4)>>>2]; + f5= page[(r6+0)>>>2]; + f3= page[(r3+0)>>>2]; + 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) { + pc=0x47358; continue; } - case 0x3db94: + case 0x47394: 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; + page[(r2+164)>>>2] = f0; + page[(r2+160)>>>2] = f1; r9 = r9 + -8; - if (r8 != r11) { - /* Next insn is delay slot */ - pc = 0x3db34; + if(r8 != r11) { + pc=0x47334; continue; } - case 0x3dbb4: - r3 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; + case 0x473b4: + r3= page[(r29+704)>>>2]; r2 = r3 < 3 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3de94; - run_3de00(); - return; + if(r2 == r0) { + pc=0x47694; + continue; } - if (r3 > 0) { - /* Next insn is delay slot */ - pc = 0x3ddb4; - run_3dc00(); - return; + if(r3 > 0) { + pc=0x475b4; + continue; } - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x3dc3c; - run_3dc00(); - return; + if(r3 != r0) { + pc=0x4743c; + continue; } - if (r5 < 0) { - /* Next insn is delay slot */ - pc = 0x3e134; - run_3e000(); - return; + if(r5 < 0) { + pc=0x47934; + run_47800(); return; } r2 = r29 + 176; r5 = r5 << 3; @@ -42750,193 +51547,141 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; - case 0x3dbf8: - f0 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + case 0x473f8: + f0= page[(r5+4)>>>2]; f2 = r3; - case 0x3dc00: - pc = 0x3dc00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3dc00() throws ExecutionException { /* 0x3dc00 - 0x3de00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3dc00: - f1 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + f1= page[(r5+0)>>>2]; 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 = 0x3dbf8; - run_3da00(); - return; + if(r5 != r6) { + pc=0x473f8; + continue; } - case 0x3dc20: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3e11c; - run_3e000(); - return; + case 0x47420: + if(r4 == r0) { + pc=0x4791c; + run_47800(); 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 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]; + page[(r23+4)>>>2] = r5; + page[(r23+0)>>>2] = r4; + case 0x4743c: + r3= page[(r29+580)>>>2]; + f30= page[(r29+684)>>>2]; + f28= page[(r29+676)>>>2]; + f26= page[(r29+668)>>>2]; + f24= page[(r29+660)>>>2]; + f22= page[(r29+652)>>>2]; + f20= page[(r29+644)>>>2]; + r31= page[(r29+636)>>>2]; + r30= page[(r29+632)>>>2]; + r23= page[(r29+628)>>>2]; + r22= page[(r29+624)>>>2]; + r21= page[(r29+620)>>>2]; + r20= page[(r29+616)>>>2]; + r19= page[(r29+612)>>>2]; + r18= page[(r29+608)>>>2]; + r17= page[(r29+604)>>>2]; + r16= page[(r29+600)>>>2]; + f31= page[(r29+680)>>>2]; + f29= page[(r29+672)>>>2]; + f27= page[(r29+664)>>>2]; + f25= page[(r29+656)>>>2]; + f23= page[(r29+648)>>>2]; + f21= page[(r29+640)>>>2]; r2 = r3 & 7; r29 = r29 + 688; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3dca8: + case 0x474a8: f0 = r0; f1 = r0; - /* Next insn is delay slot */ - pc = 0x3d4f0; - run_3d400(); - return; - case 0x3dcbc: - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x3dd0c; + pc=0x46cf0; + run_46800(); return; + case 0x474bc: + if(r30 != r0) { + pc=0x4750c; continue; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r4 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; + r4= page[(r2+480)>>>2]; r4 = r4 >> 23; - /* Next insn is delay slot */ - pc = 0x3d740; - run_3d600(); - return; - case 0x3dce4: + pc=0x46f40; + run_46800(); return; + case 0x474e4: r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r6 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; + r6= page[(r2+480)>>>2]; r3 = 127 << 16; r3 = r3 | 65535; r3 = r6 & r3; - 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; + page[(r2+480)>>>2] = r3; + pc=0x47008; + continue; + case 0x4750c: + f2= page[(r28+-31772)>>>2]; + f3= page[(r28+-31776)>>>2]; + 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)) { + pc=0x47560; continue; } r4 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3d814; - run_3d800(); - return; - case 0x3dd38: + pc=0x47014; + continue; + case 0x47538: 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 = 0x3d530; - run_3d400(); - return; + page[(r2+4)>>>2] = f0; + page[(r2+0)>>>2] = f1; + if(r5 != r8) { + pc=0x46d30; + run_46800(); return; } - /* Next insn is delay slot */ - pc = 0x3d58c; - run_3d400(); - return; - case 0x3dd60: - r2 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; + pc=0x46d8c; + run_46800(); return; + case 0x47560: + r2= page[(r29+580)>>>2]; r4 = r0 + 2; r2 = r2 + 1; - writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = r2; - if (r22 > 0) { - /* Next insn is delay slot */ - pc = 0x3d760; - run_3d600(); - return; + page[(r29+580)>>>2] = r2; + if(r22 > 0) { + pc=0x46f60; + run_46800(); return; } - case 0x3dd78: + case 0x47578: r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3d7c8; - run_3d600(); - return; - case 0x3dd84: + pc=0x46fc8; + run_46800(); return; + case 0x47584: 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; + page[(r2+164)>>>2] = f0; + page[(r2+160)>>>2] = f1; r9 = r9 + -8; - if (r8 != r11) { - /* Next insn is delay slot */ - pc = 0x3db34; - run_3da00(); - return; + if(r8 != r11) { + pc=0x47334; + continue; } - /* 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; + pc=0x473b4; + continue; + case 0x475b4: + if(r5 < 0) { + pc=0x4790c; + run_47800(); return; } r2 = r29 + 176; r6 = r5 << 3; @@ -42944,332 +51689,229 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; - case 0x3ddd4: - f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; + case 0x475d4: + f0= page[(r6+4)>>>2]; f2 = r3; - f1 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + f1= page[(r6+0)>>>2]; 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 = 0x3ddd4; + if(r6 != r7) { + pc=0x475d4; continue; } - case 0x3ddfc: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3dff4; - run_3de00(); - return; + case 0x475fc: + if(r4 == r0) { + pc=0x477f4; + continue; } - case 0x3de00: - pc = 0x3de00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3de00() throws ExecutionException { /* 0x3de00 - 0x3e000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3de00: r8 = 32768 << 16; r6 = r2 ^ r8; r7 = r3 + r0; - case 0x3de10: + case 0x47610: f2 = r3; - f0 = readPages[(r29 + 180) >>> 12][((r29 + 180) >>> 2) & 0x3ff]; + f0= page[(r29+180)>>>2]; 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= page[(r29+176)>>>2]; + page[(r23+4)>>>2] = 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; } + page[(r23+0)>>>2] = r6; r3 = f2; r2 = f3; - if (r5 <= 0) { - /* Next insn is delay slot */ - pc = 0x3de70; + if(r5 <= 0) { + pc=0x47670; continue; } r6 = r29 + 184; r5 = r5 << 3; r5 = r6 + r5; - case 0x3de48: - f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; + case 0x47648: + f0= page[(r6+4)>>>2]; f2 = r3; - f1 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + f1= page[(r6+0)>>>2]; 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 = 0x3de48; + if(r6 != r5) { + pc=0x47648; continue; } - case 0x3de70: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3e0ac; - run_3e000(); - return; + case 0x47670: + if(r4 == r0) { + pc=0x478ac; + run_47800(); 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 = 0x3dc3c; - run_3dc00(); - return; - case 0x3de94: - r7 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; + page[(r23+12)>>>2] = r5; + page[(r23+8)>>>2] = r4; + pc=0x4743c; + continue; + case 0x47694: + r7= page[(r29+704)>>>2]; r2 = r0 + 3; - if (r7 != r2) { - /* Next insn is delay slot */ - pc = 0x3dc3c; - run_3dc00(); - return; + if(r7 != r2) { + pc=0x4743c; + continue; } - if (r5 <= 0) { - /* Next insn is delay slot */ - pc = 0x3e0fc; - run_3e000(); - return; + if(r5 <= 0) { + pc=0x478fc; + run_47800(); return; } r9 = r5 << 3; r2 = r21 + r9; - f0 = readPages[(r2 + 164) >>> 12][((r2 + 164) >>> 2) & 0x3ff]; + f0= page[(r2+164)>>>2]; r6 = r29 + 176; - f1 = readPages[(r2 + 160) >>> 12][((r2 + 160) >>> 2) & 0x3ff]; + f1= page[(r2+160)>>>2]; r2 = r5 + -1; r2 = r2 << 3; r2 = r6 + r2; r7 = r29 + 168; r3 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x3dee0; + pc=0x476e0; continue; - case 0x3dedc: + case 0x476dc: f0 = f2; f1 = f3; - case 0x3dee0: - f4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + case 0x476e0: + f4= page[(r3+4)>>>2]; 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 = 0x3dedc; + f5= page[(r3+8)>>>2]; + { 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; } + page[(r3+12)>>>2] = 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; } + page[(r3+8)>>>2] = f3; + page[(r3+20)>>>2] = f0; + page[(r3+16)>>>2] = f1; + if(r3 != r7) { + pc=0x476dc; continue; } r5 = r5 < 2 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x3e0fc; - run_3e000(); - return; + if(r5 != r0) { + pc=0x478fc; + run_47800(); 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 = 0x3df3c; + f0= page[(r21+164)>>>2]; + f1= page[(r21+160)>>>2]; + pc=0x4773c; continue; - case 0x3df38: + case 0x47738: f0 = f2; f1 = f3; - case 0x3df3c: - f4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + case 0x4773c: + f4= page[(r2+4)>>>2]; 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 = 0x3df38; + f5= page[(r2+8)>>>2]; + { 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; } + page[(r2+12)>>>2] = 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; } + page[(r2+8)>>>2] = f3; + page[(r2+20)>>>2] = f0; + page[(r2+16)>>>2] = f1; + if(r6 != r2) { + pc=0x47738; continue; } r9 = r6 + r9; r3 = r0 + r0; r6 = r6 + 8; r2 = r0 + r0; - case 0x3df80: - f0 = readPages[(r9 + 4) >>> 12][((r9 + 4) >>> 2) & 0x3ff]; + case 0x47780: + f0= page[(r9+4)>>>2]; f2 = r3; - f1 = readPages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff]; + f1= page[(r9+0)>>>2]; 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 = 0x3df80; + if(r9 != r6) { + pc=0x47780; continue; } - case 0x3dfa8: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3e0c4; - run_3e000(); - return; + case 0x477a8: + if(r4 == r0) { + pc=0x478c4; + run_47800(); return; } - r5 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r5= page[(r29+176)>>>2]; 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]; + page[(r23+0)>>>2] = r5; + r5= page[(r29+180)>>>2]; + page[(r23+20)>>>2] = r3; + page[(r23+4)>>>2] = r5; + r5= page[(r29+184)>>>2]; r5 = r5 ^ r4; - writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r5; - r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + page[(r23+8)>>>2] = r5; + r5= page[(r29+188)>>>2]; 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 = 0x3dc3c; - run_3dc00(); - return; - case 0x3dff4: + page[(r23+12)>>>2] = r5; + page[(r23+16)>>>2] = r4; + pc=0x4743c; + continue; + case 0x477f4: r7 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x3de10; + pc=0x47610; continue; - case 0x3e000: - pc = 0x3e000; + 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_3e000() throws ExecutionException { /* 0x3e000 - 0x3e200 */ + private final void run_47800() throws ExecutionException { /* 0x47800 - 0x48000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3e000: - case 0x3e004: + for(;;) { + switch(pc) { + case 0x47800: + case 0x47804: r3 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x3d8ac; - run_3d800(); - return; - case 0x3e010: + pc=0x470ac; + run_47000(); return; + case 0x47810: r7 = r21 + r7; - r2 = readPages[(r7 + 480) >>> 12][((r7 + 480) >>> 2) & 0x3ff]; + r2= page[(r7+480)>>>2]; r30 = r30 + -24; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x3dab4; - run_3da00(); - return; + if(r2 != r0) { + pc=0x472b4; + run_47000(); return; } r3 = r5 + -1; r2 = r3 << 2; r5 = r29 + 496; r2 = r5 + r2; - /* Next insn is delay slot */ - pc = 0x3e040; + pc=0x47840; continue; - case 0x3e03c: + case 0x4783c: r3 = r3 + -1; - case 0x3e040: + case 0x47840: r2 = r2 + -4; - r6 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r6= page[(r2+4)>>>2]; r5 = r3 + r0; r30 = r30 + -24; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x3e03c; + if(r6 == r0) { + pc=0x4783c; continue; } - /* Next insn is delay slot */ - pc = 0x3dab4; - run_3da00(); - return; - case 0x3e060: + pc=0x472b4; + run_47000(); return; + case 0x47860: r9 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3d4a0; - run_3d400(); - return; - case 0x3e06c: + pc=0x46ca0; + run_46800(); return; + case 0x4786c: r2 = r22 << 2; r2 = r21 + r2; r6 = fcsr; @@ -43277,115 +51919,73 @@ 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; + page[(r2+480)>>>2] = f2; r5 = r22 + r0; - /* Next insn is delay slot */ - pc = 0x3dab4; - run_3da00(); - return; - case 0x3e0ac: + pc=0x472b4; + run_47000(); return; + case 0x478ac: 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 = 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: + page[(r23+12)>>>2] = r5; + page[(r23+8)>>>2] = r4; + pc=0x4743c; + run_47000(); return; + case 0x478c4: + f0= page[(r29+180)>>>2]; + page[(r23+20)>>>2] = r3; + f1= page[(r29+176)>>>2]; + page[(r23+16)>>>2] = r2; + page[(r23+4)>>>2] = f0; + page[(r23+0)>>>2] = f1; + f0= page[(r29+188)>>>2]; + f1= page[(r29+184)>>>2]; + page[(r23+12)>>>2] = f0; + page[(r23+8)>>>2] = f1; + pc=0x4743c; + run_47000(); return; + case 0x478fc: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3dfa8; - run_3de00(); - return; - case 0x3e10c: + pc=0x477a8; + run_47000(); return; + case 0x4790c: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3ddfc; - run_3dc00(); - return; - case 0x3e11c: + pc=0x475fc; + run_47000(); return; + case 0x4791c: 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 = 0x3dc3c; - run_3dc00(); - return; - case 0x3e134: + page[(r23+4)>>>2] = r5; + page[(r23+0)>>>2] = r4; + pc=0x4743c; + run_47000(); return; + case 0x47934: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3dc20; - run_3dc00(); - return; - case 0x3e144: + pc=0x47420; + run_47000(); return; + case 0x47944: r16 = r7 << 3; r21 = r29 + 16; - /* Next insn is delay slot */ - pc = 0x3d58c; - run_3d400(); - return; - case 0x3e200: - pc = 0x3e200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3e200() throws ExecutionException { /* 0x3e200 - 0x3e400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3e200: + pc=0x46d8c; + run_46800(); return; + case 0x47a00: 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 = 0x3e258; + if(r2 == r0) { + pc=0x47a58; continue; } r4 = fcsr; @@ -43393,213 +51993,73 @@ 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 = 0x3e328; + if(r2 == r0) { + pc=0x47b28; continue; } - 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; + case 0x47a58: + { 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= page[(r28+-31756)>>>2]; + f8= page[(r28+-31748)>>>2]; + f7= page[(r28+-31760)>>>2]; + f9= page[(r28+-31752)>>>2]; + { 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= page[(r28+-31724)>>>2]; + r2= page[(r29+16)>>>2]; + f5= page[(r28+-31728)>>>2]; + { 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= page[(r28+-31740)>>>2]; + { 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= page[(r28+-31744)>>>2]; + { 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= page[(r28+-31732)>>>2]; + { 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= page[(r28+-31736)>>>2]; + { 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) { + pc=0x47b00; continue; } - 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; + f6= page[(r28+-31708)>>>2]; + { 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= page[(r28+-31712)>>>2]; + { 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= page[(r28+-31716)>>>2]; + f3= page[(r28+-31720)>>>2]; + { 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; } + pc=r31; return; - 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; + case 0x47b00: + { 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= page[(r28+-31716)>>>2]; + f9= page[(r28+-31720)>>>2]; + { 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; } + pc=r31; return; - case 0x3e328: + case 0x47b28: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3e400: - pc = 0x3e400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3e400() throws ExecutionException { /* 0x3e400 - 0x3e600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3e400: + case 0x47c00: r2 = f13; r10 = 32767 << 16; r10 = r10 | 65535; @@ -43608,13 +52068,12 @@ 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; + page[(r29+20)>>>2] = r31; r5 = f14; r4 = f15; r6 = r2 + r0; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x3e4cc; + if(r8 == r0) { + pc=0x47ccc; continue; } f12 = r3; @@ -43624,567 +52083,242 @@ 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 = 0x3e524; + if(r8 != r0) { + pc=0x47d24; continue; } - r5 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r5= page[(r29+40)>>>2]; r10 = r10 | r3; r4 = r5 + 1; r10 = r10 | r4; - if (r10 == r0) { - /* Next insn is delay slot */ - pc = 0x3e768; - run_3e600(); - return; + if(r10 == r0) { + pc=0x47f68; + continue; } - r6 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r6= page[(r29+40)>>>2]; r4 = r0 + 1; - if (r6 == r4) { - /* Next insn is delay slot */ - pc = 0x3e7b4; - run_3e600(); - return; + if(r6 == r4) { + pc=0x47fb4; + continue; } - f0 = readPages[(r28 + -31692) >>> 12][((r28 + -31692) >>> 2) & 0x3ff]; + f0= page[(r28+-31692)>>>2]; f2 = r3; - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - f1 = readPages[(r28 + -31696) >>> 12][((r28 + -31696) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; + f1= page[(r28+-31696)>>>2]; 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; } + pc=r31; return; - case 0x3e4cc: + case 0x47ccc: r8 = 16357 << 16; r8 = r8 | 37928; r8 = r10 < r8 ? 1 : 0; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x3e524; + if(r8 != r0) { + pc=0x47d24; continue; } - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3e78c; - run_3e600(); - return; + if(r2 < 0) { + pc=0x47f8c; + continue; } - case 0x3e4e8: + case 0x47ce8: f4 = r3; - f0 = readPages[(r28 + -31684) >>> 12][((r28 + -31684) >>> 2) & 0x3ff]; + f0= page[(r28+-31684)>>>2]; f5 = r2; - 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]; + f1= page[(r28+-31688)>>>2]; + 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= page[(r28+-31676)>>>2]; f11 = r4; - 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; - } + f1= page[(r28+-31680)>>>2]; + 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 0x3e524: + case 0x47d24: 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 + -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)); - } - /* NOT REACHED */ - } - } - - private final void run_3e600() throws ExecutionException { /* 0x3e600 - 0x3e800 */ - int addr, tmp; - 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; - } + f8= page[(r28+-31660)>>>2]; + f10= page[(r28+-31612)>>>2]; + f9= page[(r28+-31664)>>>2]; + { 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= page[(r28+-31668)>>>2]; + f11= page[(r28+-31616)>>>2]; + f5= page[(r28+-31672)>>>2]; + { 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= page[(r28+-31652)>>>2]; + { 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= page[(r28+-31656)>>>2]; + { 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= page[(r28+-31644)>>>2]; + { 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= page[(r28+-31648)>>>2]; + { 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= page[(r28+-31636)>>>2]; + { 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= page[(r28+-31640)>>>2]; + { 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= page[(r28+-31628)>>>2]; + { 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= page[(r28+-31632)>>>2]; + { 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= page[(r28+-31620)>>>2]; + f9= page[(r28+-31624)>>>2]; + { 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= page[(r28+-31604)>>>2]; + { 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= page[(r28+-31608)>>>2]; + { 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= page[(r28+-31596)>>>2]; + { 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= page[(r28+-31600)>>>2]; + { 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= page[(r28+-31588)>>>2]; + { 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= page[(r28+-31592)>>>2]; + { 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= page[(r28+-31580)>>>2]; + { 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= page[(r28+-31584)>>>2]; + { 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 + -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; - } + 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= page[(r28+-31572)>>>2]; + f3= page[(r28+-31576)>>>2]; + { 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 = 0x3e708; + 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) { + pc=0x47f08; continue; } - r5 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r5= page[(r29+40)>>>2]; r4 = r0 + 1; - if (r5 == r4) { - /* Next insn is delay slot */ - pc = 0x3e7a8; + if(r5 == r4) { + pc=0x47fa8; continue; } - f0 = readPages[(r28 + -31692) >>> 12][((r28 + -31692) >>> 2) & 0x3ff]; + f0= page[(r28+-31692)>>>2]; r4 = f5; - 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; - } + f1= page[(r28+-31696)>>>2]; + 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 + -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]; + 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= page[(r28+-31700)>>>2]; + { 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= page[(r28+-31704)>>>2]; 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 0x3e6f8: - 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 0x47ef8: + r31= page[(r29+20)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; - } + case 0x47f08: + f2= page[(r29+40)>>>2]; + 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= page[(r29+20)>>>2]; + { 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; } + pc=r31; return; - 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; + case 0x47f68: + r31=0x47f70; + pc=0x43600; + run_43000(); return; + case 0x47f70: + f4= page[(r28+-31700)>>>2]; + f5= page[(r28+-31704)>>>2]; + { 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; } + pc=0x47ef8; continue; - case 0x3e78c: + case 0x47f8c: r11 = 32768 << 16; r8 = r2 ^ r11; r2 = r8 + r0; r8 = r4 ^ r11; r4 = r8 + r0; - /* Next insn is delay slot */ - pc = 0x3e4e8; - run_3e400(); - return; - case 0x3e7a8: + pc=0x47ce8; + continue; + case 0x47fa8: f0 = f4; f1 = f5; - /* Next insn is delay slot */ - pc = 0x3e6f8; + pc=0x47ef8; continue; - case 0x3e7b4: + case 0x47fb4: f0 = r3; f1 = r2; - /* Next insn is delay slot */ - pc = 0x3e6f8; + pc=0x47ef8; continue; - case 0x3e800: - pc = 0x3e800; + 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_3e800() throws ExecutionException { /* 0x3e800 - 0x3ea00 */ + private final void run_48000() throws ExecutionException { /* 0x48000 - 0x48800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3e800: + for(;;) { + switch(pc) { + case 0x48000: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -44192,24 +52326,9 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 32784 << 16; r2 = r2 + r3; r2 = r2 >>> 31; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ea00: - pc = 0x3ea00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ea00() throws ExecutionException { /* 0x3ea00 - 0x3ec00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ea00: + case 0x48200: r2 = f13; r3 = f12; r5 = r2 >> 20; @@ -44219,352 +52338,228 @@ public final class AcmeCrossAssembler extends UnixRuntime { r8 = r2 + r0; r9 = r2 + r0; r6 = r3 + r0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x3eaac; + if(r7 == r0) { + pc=0x482ac; continue; } - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x3eb40; + if(r4 < 0) { + pc=0x48340; 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 = 0x3eac4; + if(r7 == r0) { + pc=0x482c4; continue; } - 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= page[(r28+-31564)>>>2]; + f1= page[(r28+-31568)>>>2]; + { 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 = 0x3ea98; + 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)) { + pc=0x48298; continue; } - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3eb98; + if(r2 < 0) { + pc=0x48398; continue; } - case 0x3ea8c: + case 0x4828c: r8 = ~(r0 | r5); r8 = r9 & r8; r6 = r0 + r0; - case 0x3ea98: + case 0x48298: f0 = r6; f1 = r8; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3eaac: + case 0x482ac: r7 = r4 < 52 ? 1 : 0; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x3ead0; + if(r7 != r0) { + pc=0x482d0; continue; } r2 = r0 + 1024; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x3eb8c; + if(r4 == r2) { + pc=0x4838c; continue; } - case 0x3eac4: + case 0x482c4: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ead0: + case 0x482d0: 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 = 0x3eac4; + if(r10 == r0) { + pc=0x482c4; continue; } - 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= page[(r28+-31564)>>>2]; + f1= page[(r28+-31568)>>>2]; + { 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 = 0x3ea98; + 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)) { + pc=0x48298; continue; } - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3ebac; + if(r2 < 0) { + pc=0x483ac; continue; } - case 0x3eb24: + case 0x48324: r7 = ~(r0 | r7); r6 = r6 & r7; f0 = r6; r8 = r9 + r0; f1 = r8; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; - } + case 0x48340: + f0= page[(r28+-31564)>>>2]; + f1= page[(r28+-31568)>>>2]; + { 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 = 0x3ea98; + 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)) { + pc=0x48298; continue; } - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x3ebe4; + if(r2 < 0) { + pc=0x483e4; continue; } r6 = r0 + r0; r8 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3ea98; + pc=0x48298; continue; - 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; + case 0x4838c: + { 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; } + pc=r31; return; - case 0x3eb98: + case 0x48398: r9 = 16 << 16; - r4 = r9 >> (r4 & 0x1f); + r4 = r9 >> (r4&0x1f); r9 = r4 + r2; - /* Next insn is delay slot */ - pc = 0x3ea8c; + pc=0x4828c; continue; - case 0x3ebac: + case 0x483ac: r8 = r0 + 20; - if (r4 == r8) { - /* Next insn is delay slot */ - pc = 0x3ebd8; + if(r4 == r8) { + pc=0x483d8; 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 = 0x3eb24; + if(r4 == r0) { + pc=0x48324; continue; } - case 0x3ebd8: + case 0x483d8: r9 = r2 + 1; - /* Next insn is delay slot */ - pc = 0x3eb24; + pc=0x48324; continue; - case 0x3ebe4: + case 0x483e4: r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; r6 = r0 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3ea98; + if(r2 == r0) { + pc=0x48298; continue; } - case 0x3ec00: - pc = 0x3ec00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ec00() throws ExecutionException { /* 0x3ec00 - 0x3ee00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ec00: r8 = 49136 << 16; - /* Next insn is delay slot */ - pc = 0x3ea98; - run_3ea00(); - return; - case 0x3ee00: - pc = 0x3ee00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3ee00() throws ExecutionException { /* 0x3ee00 - 0x3f000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3ee00: + pc=0x48298; + continue; + case 0x48600: r4 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r3 = r3 & r4; r5 = f12; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x3ee40; + if(r3 == r0) { + pc=0x48640; 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 = 0x3ee54; + if(r2 == r0) { + pc=0x48654; continue; } r2 = r0 + 4; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ee40: - r2 = (r5 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + case 0x48640: + r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 3; r2 = r3 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ee54: + case 0x48654: r2 = 16 << 16; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3ee70; + if(r2 == r0) { + pc=0x48670; continue; } r2 = r0 + 3; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ee70: + case 0x48670: r2 = 32752 << 16; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x3ee88; + if(r3 == r2) { + pc=0x48688; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3ee88: - r2 = (r5 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; - /* Next insn is delay slot */ - pc = r31; + case 0x48688: + r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + pc=r31; return; - case 0x3f000: - pc = 0x3f000; + case 0x48800: + pc=0x48800; 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_48800() throws ExecutionException { /* 0x48800 - 0x49000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3f000: + for(;;) { + switch(pc) { + case 0x48800: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3f200: - pc = 0x3f200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3f200() throws ExecutionException { /* 0x3f200 - 0x3f400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3f200: + case 0x48a00: r3 = r0 + r0; f0 = r3; r2 = 32760 << 16; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3f400: - pc = 0x3f400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3f400() throws ExecutionException { /* 0x3f400 - 0x3f600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3f400: + case 0x48c00: r2 = f13; r29 = r29 + -8; r5 = r2 >> 20; @@ -44574,133 +52569,108 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = f12; r9 = r2 + r0; r6 = r2 >>> 31; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x3f490; + if(r7 == r0) { + pc=0x48c90; continue; } - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x3f544; + if(r4 < 0) { + pc=0x48d44; 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 = 0x3f4a8; + if(r7 == r0) { + pc=0x48ca8; continue; } r5 = r5 >>> 1; r7 = r5 & r2; r7 = r7 | r3; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x3f5f4; + if(r7 == r0) { + pc=0x48df4; continue; } r7 = r0 + 19; - if (r4 == r7) { - /* Next insn is delay slot */ - pc = 0x3f60c; - run_3f600(); - return; + if(r4 == r7) { + pc=0x48e0c; + continue; } r8 = r0 + r0; - case 0x3f474: + case 0x48c74: 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 = 0x3f4f8; + pc=0x48cf8; continue; - case 0x3f490: + case 0x48c90: r7 = r4 < 52 ? 1 : 0; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x3f4b8; + if(r7 != r0) { + pc=0x48cb8; continue; } r2 = r0 + 1024; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x3f600; - run_3f600(); - return; + if(r4 == r2) { + pc=0x48e00; + continue; } - case 0x3f4a8: + case 0x48ca8: f0 = f12; f1 = f13; - case 0x3f4ac: + case 0x48cac: r29 = r29 + 8; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3f4b8: + case 0x48cb8: 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 = 0x3f4a8; + if(r7 == r0) { + pc=0x48ca8; continue; } r4 = r4 >>> 1; r7 = r4 & r3; r8 = r3 + r0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x3f4f8; + if(r7 == r0) { + pc=0x48cf8; continue; } r4 = ~(r0 | r4); r2 = 16384 << 16; r8 = r4 & r3; - r5 = r2 >> (r5 & 0x1f); + r5 = r2 >> (r5&0x1f); r8 = r8 | r5; - case 0x3f4f8: + case 0x48cf8: r2 = 6 << 16; r6 = r6 << 3; - r2 = r2 + -27904; + r2 = r2 + 13736; r6 = r6 + r2; f2 = r8; - f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; + f0= page[(r6+4)>>>2]; 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= page[(r6+0)>>>2]; + { 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; } + page[(r29+4)>>>2] = f2; + page[(r29+0)>>>2] = f3; + f12= page[(r29+4)>>>2]; + f13= page[(r29+0)>>>2]; + 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; } + pc=r31; return; - case 0x3f544: + case 0x48d44: r7 = 32767 << 16; r7 = r7 | 65535; r4 = r7 & r2; r4 = r4 | r3; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x3f4a8; + if(r4 == r0) { + pc=0x48ca8; continue; } r4 = 15 << 16; @@ -44718,89 +52688,51 @@ public final class AcmeCrossAssembler extends UnixRuntime { r2 = 6 << 16; r3 = r6 << 3; r5 = f12; - r2 = r2 + -27904; + r2 = r2 + 13736; r2 = r3 + r2; - f0 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f0= page[(r2+4)>>>2]; f2 = r5; - f1 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + f1= page[(r2+0)>>>2]; 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; } + page[(r29+4)>>>2] = f2; + page[(r29+0)>>>2] = f3; + f2= page[(r29+4)>>>2]; + f3= page[(r29+0)>>>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; } r4 = f1; r3 = f0; r4 = r7 & r4; f0 = r3; r2 = r6 | r4; f1 = r2; - /* Next insn is delay slot */ - pc = 0x3f4ac; + pc=0x48cac; continue; - case 0x3f5f4: + case 0x48df4: r8 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x3f4f8; + pc=0x48cf8; continue; - case 0x3f600: - pc = 0x3f600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3f600() throws ExecutionException { /* 0x3f600 - 0x3f800 */ - int addr, tmp; - 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: + case 0x48e00: + { 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; } + pc=0x48cac; + continue; + case 0x48e0c: r8 = 32768 << 16; - /* Next insn is delay slot */ - pc = 0x3f474; - run_3f400(); + pc=0x48c74; + continue; + case 0x49000: + pc=0x49000; return; - case 0x3f800: - pc = 0x3f800; - 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_3f800() throws ExecutionException { /* 0x3f800 - 0x3fa00 */ + private final void run_49000() throws ExecutionException { /* 0x49000 - 0x49800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x3f800: + for(;;) { + switch(pc) { + case 0x49000: r2 = f13; r5 = 32752 << 16; r4 = r5 & r2; @@ -44808,39 +52740,31 @@ 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; + page[(r29+20)>>>2] = r31; + page[(r29+28)>>>2] = f20; + page[(r29+24)>>>2] = f21; r3 = f12; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x3f8c8; + if(r4 != r0) { + pc=0x490c8; continue; } r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3f928; + if(r2 == r0) { + pc=0x49128; continue; } - f0 = readPages[(r28 + -31548) >>> 12][((r28 + -31548) >>> 2) & 0x3ff]; + f0= page[(r28+-31548)>>>2]; r4 = 65535 << 16; - 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; - } + f1= page[(r28+-31552)>>>2]; + 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 = 0x3f944; + if(r4 != r0) { + pc=0x49144; continue; } r4 = r5 & r2; @@ -44849,54 +52773,42 @@ 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 = 0x3f8e8; + if(r2 != r0) { + pc=0x490e8; continue; } - case 0x3f88c: - f20 = readPages[(r28 + -31532) >>> 12][((r28 + -31532) >>> 2) & 0x3ff]; - f21 = readPages[(r28 + -31536) >>> 12][((r28 + -31536) >>> 2) & 0x3ff]; + case 0x4908c: + f20= page[(r28+-31532)>>>2]; + f21= page[(r28+-31536)>>>2]; f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3f8a8; - pc = 0x3fc00; - run_3fc00(); - return; - 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]; + r31=0x490a8; + pc=0x49400; + continue; + case 0x490a8: + { 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= page[(r29+20)>>>2]; + f20= page[(r29+28)>>>2]; + f21= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3f8c8: + case 0x490c8: r8 = r2 + r0; r2 = r0 + 2047; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x3f9ac; + if(r4 == r2) { + pc=0x491ac; continue; } r7 = r4 + r6; r2 = r7 < 2047 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3f88c; + if(r2 == r0) { + pc=0x4908c; continue; } - case 0x3f8e8: - if (r7 <= 0) { - /* Next insn is delay slot */ - pc = 0x3f968; + case 0x490e8: + if(r7 <= 0) { + pc=0x49168; continue; } r3 = f14; @@ -44907,88 +52819,64 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r7 | r8; f1 = r2; - 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]; + case 0x49110: + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f21= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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]; + case 0x49128: + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f21= page[(r29+24)>>>2]; f0 = f12; f1 = f13; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; - } + case 0x49144: + f0= page[(r28+-31540)>>>2]; + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f1= page[(r28+-31544)>>>2]; + f21= page[(r29+24)>>>2]; + { 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; + pc=r31; return; - case 0x3f968: + case 0x49168: r2 = r7 < -53 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x3f9c8; + if(r2 == r0) { + pc=0x491c8; continue; } r2 = r0 | 50001; r6 = r6 < r2 ? 1 : 0; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x3f88c; + if(r6 == r0) { + pc=0x4908c; continue; } - f20 = readPages[(r28 + -31540) >>> 12][((r28 + -31540) >>> 2) & 0x3ff]; - f21 = readPages[(r28 + -31544) >>> 12][((r28 + -31544) >>> 2) & 0x3ff]; + f20= page[(r28+-31540)>>>2]; + f21= page[(r28+-31544)>>>2]; f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31 = 0x3f9a0; - pc = 0x3fc00; - run_3fc00(); - return; - 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; + r31=0x491a0; + pc=0x49400; 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; - } + case 0x491a0: + { 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; } + pc=0x49110; + continue; + case 0x491ac: + f20= page[(r29+28)>>>2]; + r31= page[(r29+20)>>>2]; + f21= page[(r29+24)>>>2]; + { 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; + pc=r31; return; - case 0x3f9c8: + case 0x491c8: r5 = f14; r2 = 32783 << 16; r7 = r7 + 54; @@ -44996,49 +52884,14 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r7 << 20; r8 = r8 & r2; f2 = r5; - f0 = readPages[(r28 + -31524) >>> 12][((r28 + -31524) >>> 2) & 0x3ff]; + f0= page[(r28+-31524)>>>2]; r4 = r7 | r8; f3 = r4; - 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; + f1= page[(r28+-31528)>>>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; } + pc=0x49110; continue; - case 0x3fa00: - pc = 0x3fa00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3fa00() throws ExecutionException { /* 0x3fa00 - 0x3fc00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3fa00: - 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: + case 0x49400: r6 = f15; r5 = 32768 << 16; r6 = r5 & r6; @@ -45050,7107 +52903,5360 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r6 | r4; f1 = r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x3fe00: - pc = 0x3fe00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_3fe00() throws ExecutionException { /* 0x3fe00 - 0x40000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x3fe00: + case 0x49600: r5 = r4 + r0; r6 = r0 + r0; r4 = r0 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4dc00; - run_4dc00(); + pc=0x57400; + run_57000(); return; + case 0x49800: + pc=0x49800; return; - case 0x40000: - pc = 0x40000; - 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_40000() throws ExecutionException { /* 0x40000 - 0x40200 */ + private final void run_49800() throws ExecutionException { /* 0x49800 - 0x4a000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x40000: - r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x49800: + r2= page[(r28+-31512)>>>2]; + pc=r31; 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: + case 0x49a00: r29 = r29 + -24; r5 = r0 + r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + page[(r29+16)>>>2] = r16; + page[(r29+20)>>>2] = r31; r16 = r4 + r0; - /* 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; + r31=0x49a1c; + pc=0x57600; + run_57000(); return; + case 0x49a1c: + r4= page[(r28+-31516)>>>2]; + r2= page[(r4+60)>>>2]; + if(r2 == r0) { + pc=0x49a3c; continue; } - /* Next insn is delay slot */ - pc = r2; - r31 = 0x4023c; + pc=r2; + r31=0x49a3c; return; - case 0x4023c: + case 0x49a3c: r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x40248; - pc = 0x4d600; - run_4d600(); - return; - 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_40400() throws ExecutionException { /* 0x40400 - 0x40600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x40400: + r31=0x49a48; + pc=0x56e00; + run_56800(); return; + case 0x49a48: + case 0x49c00: 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; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; r16 = r5 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4044c; + if(r5 == r0) { + pc=0x49c4c; continue; } r17 = r4 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4043c; + if(r4 == r0) { + pc=0x49c3c; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x40538; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x49d38; continue; } - 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 */ + case 0x49c3c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4046c; + if(r2 != r0) { + pc=0x49c6c; continue; } - 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]; + case 0x49c4c: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4046c: + case 0x49c6c: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4047c; - pc = 0x40c00; - run_40c00(); - return; - case 0x4047c: - r3 = readPages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff]; + r31=0x49c7c; + pc=0x4a400; + run_4a000(); return; + case 0x49c7c: + r3= page[(r16+44)>>>2]; r18 = r2 + r0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x404a4; + if(r3 == r0) { + pc=0x49ca4; continue; } - r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r5= page[(r16+28)>>>2]; r4 = r17 + r0; - /* Next insn is delay slot */ - pc = r3; - r31 = 0x4049c; + pc=r3; + r31=0x49c9c; return; - case 0x4049c: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x40548; + case 0x49c9c: + if(r2 < 0) { + pc=0x49d48; continue; } - case 0x404a4: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x49ca4: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 128; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x40554; + if(r2 != r0) { + pc=0x49d54; continue; } - case 0x404b8: - r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x404e4; + case 0x49cb8: + r5= page[(r16+48)>>>2]; + if(r5 == r0) { + pc=0x49ce4; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x404e0; + if(r5 == r2) { + pc=0x49ce0; continue; } r4 = r17 + r0; - /* 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; + r31=0x49ce0; + pc=0x4c400; + run_4c000(); return; + case 0x49ce0: + page[(r16+48)>>>2] = r0; + case 0x49ce4: + r5= page[(r16+68)>>>2]; + if(r5 == r0) { + pc=0x49d04; continue; } r4 = r17 + r0; - /* 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]; + r31=0x49d00; + pc=0x4c400; + run_4c000(); return; + case 0x49d00: + page[(r16+68)>>>2] = r0; + case 0x49d04: + r31=0x49d0c; + pc=0x4b000; + run_4b000(); return; + case 0x49d0c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r31=0x49d18; + pc=0x4b200; + run_4b000(); return; + case 0x49d18: + r31= page[(r29+28)>>>2]; 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= page[(r29+20)>>>2]; + r18= page[(r29+24)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x40538: - /* Next insn is delay slot */ - r31 = 0x40540; - pc = 0x41400; - run_41400(); - return; - case 0x40540: - /* Next insn is delay slot */ - pc = 0x4043c; + case 0x49d38: + r31=0x49d40; + pc=0x4ac00; + run_4a800(); return; + case 0x49d40: + pc=0x49c3c; continue; - case 0x40548: + case 0x49d48: r18 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x404a4; + pc=0x49ca4; continue; - case 0x40554: - r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x49d54: + r5= page[(r16+16)>>>2]; r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x40564; - pc = 0x42c00; - run_42c00(); - return; - case 0x40564: - /* Next insn is delay slot */ - pc = 0x404b8; + r31=0x49d64; + pc=0x4c400; + run_4c000(); return; + case 0x49d64: + pc=0x49cb8; continue; - case 0x40600: - pc = 0x40600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_40600() throws ExecutionException { /* 0x40600 - 0x40800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x40600: + case 0x49e00: r5 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x40400; - run_40400(); + r4= page[(r28+-31512)>>>2]; + pc=0x49c00; + continue; + case 0x4a000: + pc=0x4a000; return; - case 0x40800: - pc = 0x40800; - 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_40800() throws ExecutionException { /* 0x40800 - 0x40a00 */ + private final void run_4a000() throws ExecutionException { /* 0x4a000 - 0x4a800 */ int addr, tmp; - 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 */ + for(;;) { + switch(pc) { + case 0x4a000: + addr=r5+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; 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; + page[(r29+32)>>>2] = r19; + page[(r29+24)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+28)>>>2] = r18; + page[(r29+20)>>>2] = r16; r19 = r4 + r0; r17 = r5 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x40940; + if(r3 != r0) { + pc=0x4a140; continue; } - r3 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r3= page[(r5+4)>>>2]; 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 = 0x409f4; + addr=r5+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + if(r3 <= 0) { + pc=0x4a1f4; continue; } - case 0x40844: - r3 = readPages[(r17 + 40) >>> 12][((r17 + 40) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4091c; + case 0x4a044: + r3= page[(r17+40)>>>2]; + if(r3 == r0) { + pc=0x4a11c; 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 = 0x40a0c; - run_40a00(); - return; + r16= page[(r19+0)>>>2]; + page[(r19+0)>>>2] = r0; + if(r4 == r0) { + pc=0x4a20c; + continue; } - r6 = readPages[(r17 + 80) >>> 12][((r17 + 80) >>> 2) & 0x3ff]; - case 0x40870: + r6= page[(r17+80)>>>2]; + case 0x4a070: r2 = r2 & 4; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x408a4; + if(r2 == r0) { + pc=0x4a0a4; continue; } - r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2= page[(r17+4)>>>2]; r6 = r6 - r2; - r2 = readPages[(r17 + 48) >>> 12][((r17 + 48) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x408a4; + r2= page[(r17+48)>>>2]; + if(r2 == r0) { + pc=0x4a0a4; continue; } - r2 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + r2= page[(r17+60)>>>2]; r6 = r6 - r2; - case 0x408a4: - r5 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; + case 0x4a0a4: + r5= page[(r17+28)>>>2]; r4 = r19 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc = r3; - r31 = 0x408b8; + pc=r3; + r31=0x4a0b8; return; - case 0x408b8: + case 0x4a0b8: r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x40a44; - run_40a00(); - return; + if(r2 == r3) { + pc=0x4a244; + continue; } - case 0x408c4: - addr = r17 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4a0c4: + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r4 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r4= page[(r17+16)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = 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 = 0x40ac8; - run_40a00(); - return; + page[(r17+4)>>>2] = r0; + page[(r17+0)>>>2] = r4; + if(r3 != r0) { + pc=0x4a2c8; + continue; } - 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; + case 0x4a0f0: + r5= page[(r17+48)>>>2]; + page[(r19+0)>>>2] = r16; + if(r5 == r0) { + pc=0x4a11c; continue; } r2 = r17 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x40918; + if(r5 == r2) { + pc=0x4a118; continue; } r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x40918; - pc = 0x42c00; - run_42c00(); - return; - case 0x40918: - writePages[(r17 + 48) >>> 12][((r17 + 48) >>> 2) & 0x3ff] = r0; - case 0x4091c: + r31=0x4a118; + pc=0x4c400; + run_4c000(); return; + case 0x4a118: + page[(r17+48)>>>2] = r0; + case 0x4a11c: 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]; + case 0x4a120: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x40940: - r18 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x4091c; + case 0x4a140: + r18= page[(r5+16)>>>2]; + if(r18 == r0) { + pc=0x4a11c; continue; } - r16 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r16= page[(r5+0)>>>2]; r2 = r2 & 3; r16 = r16 - r18; - writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r18; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x409e8; + page[(r5+0)>>>2] = r18; + if(r2 != r0) { + pc=0x4a1e8; continue; } - 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; + r2= page[(r5+20)>>>2]; + case 0x4a170: + page[(r17+8)>>>2] = r2; + if(r16 > 0) { + pc=0x4a194; continue; } - /* Next insn is delay slot */ - pc = 0x4091c; + pc=0x4a11c; continue; - case 0x40984: + case 0x4a184: r16 = r16 - r2; r18 = r18 + r2; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x4091c; + if(r16 <= 0) { + pc=0x4a11c; continue; } - case 0x40994: - r2 = readPages[(r17 + 36) >>> 12][((r17 + 36) >>> 2) & 0x3ff]; - r5 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; + case 0x4a194: + r2= page[(r17+36)>>>2]; + r5= page[(r17+28)>>>2]; r4 = r19 + r0; r6 = r18 + r0; r7 = r16 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x409b0; + pc=r2; + r31=0x4a1b0; return; - case 0x409b0: - if (r2 > 0) { - /* Next insn is delay slot */ - pc = 0x40984; + case 0x4a1b0: + if(r2 > 0) { + pc=0x4a184; continue; } - case 0x409b8: - addr = r17 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4a1b8: + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r31= page[(r29+36)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + -1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x409e8: + case 0x4a1e8: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x40970; + pc=0x4a170; continue; - case 0x409f4: - r3 = readPages[(r5 + 60) >>> 12][((r5 + 60) >>> 2) & 0x3ff]; - if (r3 > 0) { - /* Next insn is delay slot */ - pc = 0x40844; + case 0x4a1f4: + r3= page[(r5+60)>>>2]; + if(r3 > 0) { + pc=0x4a044; continue; } - case 0x40a00: - pc = 0x40a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_40a00() throws ExecutionException { /* 0x40a00 - 0x40c00 */ - int addr, tmp; - 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]; + pc=0x4a11c; + continue; + case 0x4a20c: + r5= page[(r17+28)>>>2]; r6 = r0 + r0; r4 = r19 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc = r3; - r31 = 0x40a24; + pc=r3; + r31=0x4a224; return; - case 0x40a24: + case 0x4a224: r6 = r2 + r0; r2 = r0 + -1; - if (r6 == r2) { - /* Next insn is delay slot */ - pc = 0x40a90; + if(r6 == r2) { + pc=0x4a290; continue; } - case 0x40a34: - addr = r17 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4a234: + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - 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; + r3= page[(r17+40)>>>2]; + pc=0x4a070; + continue; + case 0x4a244: + r3= page[(r19+0)>>>2]; + if(r3 == r0) { + pc=0x4a0c4; + continue; } r2 = r0 + 29; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x40a6c; + if(r3 == r2) { + pc=0x4a26c; continue; } r2 = r0 + 22; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x409b8; - run_40800(); - return; + if(r3 != r2) { + pc=0x4a1b8; + continue; } - case 0x40a6c: - addr = r17 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4a26c: + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r0; + page[(r17+4)>>>2] = 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 = 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; + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r17+16)>>>2]; + page[(r17+0)>>>2] = r2; + pc=0x4a0f0; + continue; + case 0x4a290: + r2= page[(r19+0)>>>2]; + if(r2 == r0) { + pc=0x4a234; continue; } r3 = r0 + 29; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x40ab8; + if(r2 == r3) { + pc=0x4a2b8; continue; } r3 = r0 + 22; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x409b8; - run_40800(); - return; + if(r2 != r3) { + pc=0x4a1b8; + continue; } - case 0x40ab8: - writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r16; + case 0x4a2b8: + page[(r19+0)>>>2] = r16; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x40920; - run_40800(); - return; - 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_40c00() throws ExecutionException { /* 0x40c00 - 0x40e00 */ - int addr, tmp; - 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; - r16 = r4 + r0; - 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 = 0x40c68; - continue; - } - 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 = 0x40c50; - continue; - } - 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 0x40c50: - 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 = 0x40800; - run_40800(); - return; - 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; + pc=0x4a120; continue; - case 0x40e00: - pc = 0x40e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_40e00() throws ExecutionException { /* 0x40e00 - 0x41000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x40e00: - r5 = r4 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x40e18; + case 0x4a2c8: + page[(r17+80)>>>2] = r2; + pc=0x4a0f0; + continue; + case 0x4a400: + r29 = r29 + -32; + page[(r29+24)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r16 = r4 + r0; + if(r4 == r0) { + pc=0x4a428; continue; } - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x40c00; - run_40c00(); + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x4a468; + continue; + } + case 0x4a428: + addr=r5+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; + r2 = tmp; + if(r2 != r0) { + pc=0x4a450; + continue; + } + r31= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; + r2 = r0 + r0; + r29 = r29 + 32; + pc=r31; return; - case 0x40e18: - r5 = 4 << 16; - r4 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; - r5 = r5 + 3072; - /* Next insn is delay slot */ - pc = 0x43a00; - run_43a00(); + case 0x4a450: + r31= page[(r29+28)>>>2]; + r4 = r16 + r0; + r16= page[(r29+24)>>>2]; + r29 = r29 + 32; + pc=0x4a000; + continue; + case 0x4a468: + page[(r29+16)>>>2] = r5; + r31=0x4a474; + pc=0x4ac00; + run_4a800(); return; + case 0x4a474: + r5= page[(r29+16)>>>2]; + pc=0x4a428; + continue; + case 0x4a600: + r5 = r4 + r0; + if(r4 == r0) { + pc=0x4a618; + continue; + } + r4= page[(r28+-31512)>>>2]; + pc=0x4a400; + continue; + case 0x4a618: + r5 = 5 << 16; + r4= page[(r28+-31516)>>>2]; + r5 = r5 + -23552; + pc=0x4d200; + run_4d000(); return; + case 0x4a800: + pc=0x4a800; return; - case 0x41000: - pc = 0x41000; - 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_41000() throws ExecutionException { /* 0x41000 - 0x41200 */ + private final void run_4a800() throws ExecutionException { /* 0x4a800 - 0x4b000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x41000: - r5 = 4 << 16; - r5 = r5 + 1536; - /* Next insn is delay slot */ - pc = 0x43800; - run_43800(); - return; - case 0x41200: - pc = 0x41200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_41200() throws ExecutionException { /* 0x41200 - 0x41400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x41200: + for(;;) { + switch(pc) { + case 0x4a800: + r5 = 5 << 16; + r5 = r5 + -25088; + pc=0x4d000; + run_4d000(); return; + case 0x4aa00: r29 = r29 + -32; r2 = r5 << 2; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + page[(r29+24)>>>2] = r18; r18 = r5 << 4; r18 = r18 - r2; r18 = r18 + r5; r18 = r18 << 3; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + page[(r29+20)>>>2] = 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 = 0x41238; - pc = 0x44a00; - run_44a00(); - return; - case 0x41238: + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + r31=0x4aa38; + pc=0x4e200; + run_4e000(); return; + case 0x4aa38: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x41264; + if(r2 == r0) { + pc=0x4aa64; 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; + page[(r2+0)>>>2] = r0; + page[(r2+4)>>>2] = r17; + page[(r2+8)>>>2] = r4; r5 = r0 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x41264; - pc = 0x4d7f0; - run_4d600(); - return; - case 0x41264: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31=0x4aa64; + pc=0x56ff0; + run_56800(); return; + case 0x4aa64: + r31= page[(r29+28)>>>2]; 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= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x41400: - pc = 0x41400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_41400() throws ExecutionException { /* 0x41400 - 0x41600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x41400: - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + case 0x4ac00: + r2= page[(r4+56)>>>2]; 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; + page[(r29+20)>>>2] = r17; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; r17 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4157c; + if(r2 != r0) { + pc=0x4ad7c; continue; } - r2 = 4 << 16; - r2 = r2 + 4096; - writePages[(r4 + 60) >>> 12][((r4 + 60) >>> 2) & 0x3ff] = r2; + r2 = 5 << 16; + r2 = r2 + -22528; + page[(r4+60)>>>2] = r2; r2 = r0 + 3; - r16 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; - writePages[(r4 + 740) >>> 12][((r4 + 740) >>> 2) & 0x3ff] = r2; + r16= page[(r4+4)>>>2]; + page[(r4+740)>>>2] = r2; r2 = r4 + 748; - writePages[(r4 + 744) >>> 12][((r4 + 744) >>> 2) & 0x3ff] = r2; + page[(r4+744)>>>2] = 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 + 30208; + r21 = 5 << 16; + r20 = 5 << 16; + r19 = 5 << 16; + r18 = 5 << 16; + page[(r4+56)>>>2] = r22; + page[(r4+736)>>>2] = r0; + r21 = r21 + 3584; r4 = r16 + 92; - 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; + r20 = r20 + 4096; + r19 = r19 + 4608; + r18 = r18 + 5120; + page[(r16+0)>>>2] = r0; + page[(r16+4)>>>2] = r0; + page[(r16+8)>>>2] = r0; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+100)>>>2] = r0; + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+16)>>>2] = r0; + page[(r16+20)>>>2] = r0; + page[(r16+24)>>>2] = r0; r5 = r0 + r0; r6 = r0 + 8; - /* 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]; + r31=0x4acbc; + pc=0x56ff0; + run_56800(); return; + case 0x4acbc: + page[(r16+28)>>>2] = r16; + page[(r16+32)>>>2] = r21; + page[(r16+36)>>>2] = r20; + page[(r16+40)>>>2] = r19; + page[(r16+44)>>>2] = r18; + r16= page[(r17+8)>>>2]; 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; + page[(r16+0)>>>2] = r0; + page[(r16+4)>>>2] = r0; + page[(r16+8)>>>2] = r0; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+100)>>>2] = r0; + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r22&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+16)>>>2] = r0; + page[(r16+20)>>>2] = r0; + page[(r16+24)>>>2] = r0; r5 = r0 + r0; r6 = r0 + 8; - /* 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]; + r31=0x4ad10; + pc=0x56ff0; + run_56800(); return; + case 0x4ad10: + page[(r16+28)>>>2] = r16; + page[(r16+32)>>>2] = r21; + page[(r16+36)>>>2] = r20; + page[(r16+40)>>>2] = r19; + page[(r16+44)>>>2] = r18; + r16= page[(r17+12)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = 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; + page[(r16+0)>>>2] = r0; + page[(r16+4)>>>2] = r0; + page[(r16+8)>>>2] = r0; + page[(r16+100)>>>2] = r0; + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+16)>>>2] = r0; + page[(r16+20)>>>2] = r0; + page[(r16+24)>>>2] = r0; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* 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]; + r31=0x4ad68; + pc=0x56ff0; + run_56800(); return; + case 0x4ad68: + page[(r16+28)>>>2] = r16; + page[(r16+32)>>>2] = r21; + page[(r16+36)>>>2] = r20; + page[(r16+40)>>>2] = r19; + page[(r16+44)>>>2] = r18; + case 0x4ad7c: + r31= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x41600: - pc = 0x41600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_41600() throws ExecutionException { /* 0x41600 - 0x41800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x41600: + case 0x4ae00: r29 = r29 + -40; - 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; + page[(r29+28)>>>2] = r18; + r18= page[(r28+-31516)>>>2]; + page[(r29+32)>>>2] = r19; + r2= page[(r18+56)>>>2]; + page[(r29+36)>>>2] = r31; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; r19 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x41700; + if(r2 == r0) { + pc=0x4af00; continue; } - case 0x4162c: + case 0x4ae2c: r18 = r18 + 736; r17 = r0 + -1; - case 0x41634: - r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; - r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + case 0x4ae34: + r2= page[(r18+4)>>>2]; + r16= page[(r18+8)>>>2]; r2 = r2 + -1; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x41660; + if(r2 >= 0) { + pc=0x4ae60; continue; } - /* Next insn is delay slot */ - pc = 0x416e4; + pc=0x4aee4; continue; - case 0x41650: + case 0x4ae50: r2 = r2 + -1; r16 = r16 + 104; - if (r2 == r17) { - /* Next insn is delay slot */ - pc = 0x416e4; + if(r2 == r17) { + pc=0x4aee4; continue; } - 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 */ + case 0x4ae60: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x41650; + if(r3 != r0) { + pc=0x4ae50; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+100)>>>2] = r0; + page[(r16+0)>>>2] = r0; + page[(r16+8)>>>2] = r0; + page[(r16+4)>>>2] = r0; + page[(r16+16)>>>2] = r0; + page[(r16+20)>>>2] = r0; + page[(r16+24)>>>2] = r0; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31 = 0x416b0; - pc = 0x4d7f0; - run_4d600(); - return; - 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; + r31=0x4aeb0; + pc=0x56ff0; + run_56800(); return; + case 0x4aeb0: + page[(r16+48)>>>2] = r0; + page[(r16+52)>>>2] = r0; + page[(r16+68)>>>2] = r0; + page[(r16+72)>>>2] = 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]; + case 0x4aec4: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x416e4: - r2 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x41714; + case 0x4aee4: + r2= page[(r18+0)>>>2]; + if(r2 == r0) { + pc=0x4af14; continue; } - case 0x416f4: + case 0x4aef4: r18 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x41634; + pc=0x4ae34; continue; - case 0x41700: + case 0x4af00: r4 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x4170c; - pc = 0x41400; - run_41400(); - return; - case 0x4170c: - /* Next insn is delay slot */ - pc = 0x4162c; + r31=0x4af0c; + pc=0x4ac00; continue; - case 0x41714: + case 0x4af0c: + pc=0x4ae2c; + continue; + case 0x4af14: r4 = r19 + r0; r5 = r0 + 4; - /* 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; + r31=0x4af24; + pc=0x4aa00; + continue; + case 0x4af24: + page[(r18+0)>>>2] = r2; + if(r2 != r0) { + pc=0x4aef4; continue; } r2 = r0 + 12; - writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r2; + page[(r19+0)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x416c4; + pc=0x4aec4; continue; - case 0x41800: - pc = 0x41800; + 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_41800() throws ExecutionException { /* 0x41800 - 0x41a00 */ + private final void run_4b000() throws ExecutionException { /* 0x4b000 - 0x4b800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x41800: - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x4b000: + pc=r31; return; - case 0x41a00: - pc = 0x41a00; + case 0x4b200: + pc=r31; 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: - /* Next insn is delay slot */ - pc = r31; - return; - 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: + case 0x4b400: r29 = r29 + -48; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + page[(r29+40)>>>2] = 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; + page[(r29+36)>>>2] = r18; + page[(r29+32)>>>2] = r17; + page[(r29+44)>>>2] = r31; + page[(r29+28)>>>2] = r16; r18 = r4 + r0; - /* Next insn is delay slot */ - r31 = 0x41c30; - pc = 0x50400; - run_50400(); - return; - case 0x41c30: + r31=0x4b430; + pc=0x59c00; + run_59800(); return; + case 0x4b430: r17 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x41cf4; + if(r2 == r0) { + pc=0x4b4f4; continue; } r4 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x41c48; - pc = 0x41600; - run_41600(); - return; - case 0x41c48: + r31=0x4b448; + pc=0x4ae00; + run_4a800(); return; + case 0x4b448: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x41cf4; + if(r2 == r0) { + pc=0x4b4f4; continue; } - r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r6= page[(r29+16)>>>2]; r4 = r18 + r0; r5 = r19 + r0; r7 = r0 + 438; - /* Next insn is delay slot */ - r31 = 0x41c6c; - pc = 0x4d610; - run_4d600(); - return; - case 0x41c6c: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x41ce0; + r31=0x4b46c; + pc=0x56e10; + run_56800(); return; + case 0x4b46c: + if(r2 < 0) { + pc=0x4b4e0; 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; + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r2 = 5 << 16; + r2 = r2 + 3584; + page[(r16+32)>>>2] = r2; + r2 = 5 << 16; + r2 = r2 + 4096; + page[(r16+36)>>>2] = r2; + r2 = 5 << 16; + r2 = r2 + 4608; + page[(r16+40)>>>2] = r2; + r2 = 5 << 16; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r17&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r2 = r2 + 5120; 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; + page[(r16+28)>>>2] = r16; + page[(r16+44)>>>2] = r2; + if(r17 != r0) { + pc=0x4b518; continue; } - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; 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= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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]; + case 0x4b4e0: + r31=0x4b4e8; + pc=0x4b000; + continue; + case 0x4b4e8: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r31=0x4b4f4; + pc=0x4b200; + continue; + case 0x4b4f4: + r31= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x41d18: + case 0x4b518: r4 = r18 + r0; r5 = r16 + r0; r6 = r0 + r0; r7 = r0 + 2; - /* Next insn is delay slot */ - r31 = 0x41d30; - pc = 0x43000; - run_43000(); - return; - case 0x41d30: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31=0x4b530; + pc=0x4c800; + run_4c800(); return; + case 0x4b530: + r31= page[(r29+44)>>>2]; 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= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x4b600: r2 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x41c00; - run_41c00(); + pc=0x4b400; + continue; + case 0x4b800: + pc=0x4b800; return; - case 0x42000: - pc = 0x42000; - 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_42000() throws ExecutionException { /* 0x42000 - 0x42200 */ + private final void run_4b800() throws ExecutionException { /* 0x4b800 - 0x4c000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x42000: + for(;;) { + switch(pc) { + case 0x4b800: r29 = r29 + -32; r2 = r4 + r0; - 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; + r4= page[(r28+-31512)>>>2]; + page[(r29+40)>>>2] = r6; + page[(r29+44)>>>2] = 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 = 0x42030; - pc = 0x4ae00; - run_4ae00(); - return; - case 0x42030: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + page[(r29+28)>>>2] = r31; + page[(r29+16)>>>2] = r7; + r31=0x4b830; + pc=0x54600; + run_54000(); return; + case 0x4b830: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42200: - pc = 0x42200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_42200() throws ExecutionException { /* 0x42200 - 0x42400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x42200: + case 0x4ba00: r29 = r29 + -32; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + page[(r29+24)>>>2] = r16; r16 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r4= page[(r28+-31512)>>>2]; + page[(r29+28)>>>2] = r31; r6 = r5 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4225c; + if(r4 == r0) { + pc=0x4ba5c; continue; } - r3 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x42244; + r3= page[(r4+56)>>>2]; + if(r3 != r0) { + pc=0x4ba44; continue; } - 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]; + page[(r29+16)>>>2] = r5; + r31=0x4ba3c; + pc=0x4ac00; + run_4a800(); return; + case 0x4ba3c: + r4= page[(r28+-31512)>>>2]; + r6= page[(r29+16)>>>2]; + case 0x4ba44: + r31= page[(r29+28)>>>2]; r5 = r16 + r0; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x45c00; - run_45c00(); - return; - case 0x4225c: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + pc=0x4f400; + run_4f000(); return; + case 0x4ba5c: + r31= page[(r29+28)>>>2]; r5 = r16 + r0; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16= page[(r29+24)>>>2]; r4 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x45c00; - run_45c00(); - return; - case 0x42400: - pc = 0x42400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_42400() throws ExecutionException { /* 0x42400 - 0x42600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x42400: { - long hilo = (long) (r7) * ((long) r6); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + pc=0x4f400; + run_4f000(); return; + case 0x4bc00: + { 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; + page[(r29+44)>>>2] = r21; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+24)>>>2] = r16; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = 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 = 0x42580; + r16= page[(r29+80)>>>2]; + if(r21 == r0) { + pc=0x4bd80; continue; } r20 = r4 + r0; r18 = r5 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x42468; + if(r4 == r0) { + pc=0x4bc68; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x426b8; - run_42600(); - return; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x4beb8; + continue; } - 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 */ + case 0x4bc68: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4249c; + if(r4 != r0) { + pc=0x4bc9c; continue; } - case 0x42480: - r4 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; + case 0x4bc80: + r4= page[(r16+100)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+100)>>>2] = r3; r2 = r2 & 65535; - case 0x4249c: - r17 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; - if (r17 < 0) { - /* Next insn is delay slot */ - pc = 0x425a8; + case 0x4bc9c: + r17= page[(r16+4)>>>2]; + if(r17 < 0) { + pc=0x4bda8; continue; } r2 = r2 & 2; r3 = r17 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x425c0; + if(r2 != r0) { + pc=0x4bdc0; continue; } - case 0x424bc: + case 0x4bcbc: r19 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x42508; + pc=0x4bd08; continue; - case 0x424c8: + case 0x4bcc8: r6 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x424d4; - pc = 0x4d7e0; - run_4d600(); - return; - case 0x424d4: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r31=0x4bcd4; + pc=0x56fe0; + run_56800(); return; + case 0x4bcd4: + r2= page[(r16+0)>>>2]; r4 = r20 + r0; r2 = r2 + r17; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = r2; r5 = r16 + r0; r18 = r18 + r17; r19 = r19 - r17; - /* Next insn is delay slot */ - r31 = 0x424f8; - pc = 0x46e00; - run_46e00(); - return; - case 0x424f8: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4258c; + r31=0x4bcf8; + pc=0x50600; + run_50000(); return; + case 0x4bcf8: + if(r2 != r0) { + pc=0x4bd8c; continue; } - r17 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; - case 0x42508: + r17= page[(r16+4)>>>2]; + case 0x4bd08: 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 = 0x424c8; + r5= page[(r16+0)>>>2]; + if(r3 != r0) { + pc=0x4bcc8; continue; } r6 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x42528; - pc = 0x4d7e0; - run_4d600(); - return; - case 0x42528: - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r31=0x4bd28; + pc=0x56fe0; + run_56800(); return; + case 0x4bd28: + r2= page[(r16+4)>>>2]; r2 = r2 - r19; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + page[(r16+4)>>>2] = r2; + r2= page[(r16+0)>>>2]; r19 = r2 + r19; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; - case 0x42548: + page[(r16+0)>>>2] = r19; + case 0x4bd48: 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]; + case 0x4bd4c: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42580: + case 0x4bd80: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4254c; + pc=0x4bd4c; continue; - case 0x4258c: + case 0x4bd8c: 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) { + if(r22!=0) { + hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc = 0x4259c; + pc=0x4bd9c; 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 0x4259c: + case 0x4bd9c: r2 = lo; - /* Next insn is delay slot */ - pc = 0x4254c; + pc=0x4bd4c; continue; - case 0x425a8: + case 0x4bda8: r2 = r2 & 2; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + page[(r16+4)>>>2] = r0; r3 = r0 + r0; r17 = r0 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x424bc; + if(r2 == r0) { + pc=0x4bcbc; continue; } - case 0x425c0: + case 0x4bdc0: r2 = ((r21 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r17 = r3 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x425d4; + if(r2 == r0) { + pc=0x4bdd4; continue; } r17 = r21 + r0; - case 0x425d4: - r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x4bdd4: + r5= page[(r16+0)>>>2]; r4 = r18 + r0; r6 = r17 + r0; - /* 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]; + r31=0x4bde8; + pc=0x56fe0; + run_56800(); return; + case 0x4bde8: + r19= page[(r16+0)>>>2]; + r2= page[(r16+4)>>>2]; + r5= page[(r16+48)>>>2]; r19 = r19 + r17; r2 = r2 - r17; r18 = r18 + r17; - 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: - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = r19; + page[(r16+4)>>>2] = r2; r17 = r21 - r17; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x426e0; + if(r5 == r0) { + pc=0x4bee0; continue; } - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x42548; - run_42400(); - return; + if(r17 == r0) { + pc=0x4bd48; + continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x42638; + if(r5 == r2) { + pc=0x4be38; continue; } r4 = r20 + r0; - /* 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; + r31=0x4be34; + pc=0x4c400; + run_4c000(); return; + case 0x4be34: + r19= page[(r16+0)>>>2]; + case 0x4be38: + page[(r16+48)>>>2] = r0; + case 0x4be3c: + r3= page[(r16+16)>>>2]; + r30= page[(r16+20)>>>2]; + page[(r29+16)>>>2] = r3; + pc=0x4be58; continue; - case 0x42650: - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x42548; - run_42400(); - return; + case 0x4be50: + if(r17 == r0) { + pc=0x4bd48; + continue; } - 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; + case 0x4be58: + page[(r16+16)>>>2] = r18; + page[(r16+20)>>>2] = r17; + page[(r16+0)>>>2] = r18; r4 = r20 + r0; r5 = r16 + r0; - /* 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; + r31=0x4be74; + pc=0x50600; + run_50000(); return; + case 0x4be74: + r4= page[(r16+4)>>>2]; + r3= page[(r29+16)>>>2]; + page[(r16+20)>>>2] = r30; + page[(r16+16)>>>2] = r3; + page[(r16+0)>>>2] = 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 = 0x42650; + page[(r16+4)>>>2] = r0; + if(r2 == r0) { + pc=0x4be50; 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) { + if(r22!=0) { + hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc = 0x426ac; + pc=0x4beac; 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 0x426ac: + case 0x4beac: r2 = lo; - /* 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 */ + pc=0x4bd4c; + continue; + case 0x4beb8: + r31=0x4bec0; + pc=0x4ac00; + run_4a800(); return; + case 0x4bec0: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4249c; - run_42400(); - return; - } - /* Next insn is delay slot */ - pc = 0x42480; - run_42400(); - return; - case 0x426e0: - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4263c; + if(r4 != r0) { + pc=0x4bc9c; continue; } - /* Next insn is delay slot */ - pc = 0x42548; - run_42400(); + pc=0x4bc80; + continue; + case 0x4bee0: + if(r17 != r0) { + pc=0x4be3c; + continue; + } + pc=0x4bd48; + continue; + case 0x4c000: + pc=0x4c000; return; - case 0x42800: - pc = 0x42800; - 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_42800() throws ExecutionException { /* 0x42800 - 0x42a00 */ + private final void run_4c000() throws ExecutionException { /* 0x4c000 - 0x4c800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x42800: + for(;;) { + switch(pc) { + case 0x4c000: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r5 = r8 + r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + page[(r29+16)>>>2] = r7; r6 = r3 + r0; r7 = r2 + r0; - 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]; + page[(r29+28)>>>2] = r31; + r31=0x4c030; + pc=0x4bc00; + run_4b800(); return; + case 0x4c030: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42a00: - pc = 0x42a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_42a00() throws ExecutionException { /* 0x42a00 - 0x42c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x42a00: + case 0x4c200: r29 = r29 + -40; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = 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; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; r20 = r5 + r0; - 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: + page[(r29+16)>>>2] = r16; + r18 = r18 + 25176; + r31=0x4c234; + pc=0x56fd0; + run_56800(); return; + case 0x4c234: r4 = r17 + r0; r16 = r2 + r0; - /* 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]; + r31=0x4c244; + pc=0x4ee00; + run_4e800(); return; + case 0x4c244: + r2= page[(r18+8)>>>2]; + r19= page[(r2+4)>>>2]; 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) { + if(r16!=0) { + hi = (int)((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); lo = (int)((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); } - pc = 0x42a70; + pc=0x4c270; 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 0x42a70: + case 0x4c270: r20 = lo; - r20 = r20 + -1; { - long hilo = (long) (r20) * ((long) 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 = 0x42ab4; + if(r16 != r0) { + pc=0x4c2b4; continue; } r4 = r17 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x42aa0; - pc = 0x4d710; - run_4d600(); - return; - case 0x42aa0: - r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r31=0x4c2a0; + pc=0x56f10; + run_56800(); return; + case 0x4c2a0: + r3= page[(r18+8)>>>2]; r3 = r3 + r19; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x42ae8; + if(r2 == r3) { + pc=0x4c2e8; continue; } - case 0x42ab4: + case 0x4c2b4: r4 = r17 + r0; - /* 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]; + r31=0x4c2c0; + pc=0x4f000; + run_4f000(); return; + case 0x4c2c0: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42ae8: + case 0x4c2e8: r4 = r17 + r0; r5 = r0 - r20; - /* Next insn is delay slot */ - r31 = 0x42af8; - pc = 0x4d710; - run_4d600(); - return; - case 0x42af8: + r31=0x4c2f8; + pc=0x56f10; + run_56800(); return; + case 0x4c2f8: r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x42b58; + if(r2 == r3) { + pc=0x4c358; continue; } - r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r2= page[(r18+8)>>>2]; r19 = r19 - r20; r19 = r19 | 1; - writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r19; + page[(r2+4)>>>2] = r19; r2 = 6 << 16; - r3 = readPages[(r2 + -10368) >>> 12][((r2 + -10368) >>> 2) & 0x3ff]; + r3= page[(r2+31280)>>>2]; r4 = r17 + r0; r20 = r3 - r20; - 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]; + page[(r2+31280)>>>2] = r20; + r31=0x4c330; + pc=0x4f000; + run_4f000(); return; + case 0x4c330: + r31= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r2 = r0 + 1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42b58: + case 0x4c358: r4 = r17 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x42b68; - pc = 0x4d710; - run_4d600(); - return; - case 0x42b68: - r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r31=0x4c368; + pc=0x56f10; + run_56800(); return; + case 0x4c368: + r3= page[(r18+8)>>>2]; r4 = r2 - r3; r5 = r4 < 16 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x42ab4; + if(r5 != r0) { + pc=0x4c2b4; continue; } - r5 = readPages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff]; + r5= page[(r28+-31508)>>>2]; r4 = r4 | 1; r2 = r2 - r5; 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; + page[(r5+31280)>>>2] = r2; + page[(r3+4)>>>2] = r4; + pc=0x4c2b4; continue; - case 0x42c00: - pc = 0x42c00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_42c00() throws ExecutionException { /* 0x42c00 - 0x42e00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x42c00: + case 0x4c400: 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; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r17; r16 = r5 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x42da0; + if(r5 == r0) { + pc=0x4c5a0; continue; } r17 = r4 + r0; - /* Next insn is delay slot */ - r31 = 0x42c28; - pc = 0x45600; - run_45600(); - return; - case 0x42c28: - r8 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; + r31=0x4c428; + pc=0x4ee00; + run_4e800(); return; + case 0x4c428: + r8= page[(r16+-4)>>>2]; r2 = r0 + -2; r6 = r16 + -8; r2 = r8 & r2; r3 = r6 + r2; - r5 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r5= page[(r3+4)>>>2]; r7 = 6 << 16; r4 = r0 + -4; - r7 = r7 + -16464; + r7 = r7 + 25176; r5 = r5 & r4; - r4 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; - if (r4 == r3) { - /* Next insn is delay slot */ - pc = 0x42e44; - run_42e00(); - return; + r4= page[(r7+8)>>>2]; + if(r4 == r3) { + pc=0x4c644; + continue; } r8 = r8 & 1; - writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r5; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x42d64; + page[(r3+4)>>>2] = r5; + if(r8 == r0) { + pc=0x4c564; continue; } r4 = r0 + r0; - case 0x42c74: + case 0x4c474: r8 = r3 + r5; - r8 = readPages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff]; + r8= page[(r8+4)>>>2]; r8 = r8 & 1; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x42cac; + if(r8 != r0) { + pc=0x4c4ac; continue; } r2 = r2 + r5; - r5 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x42e0c; - run_42e00(); - return; - } - 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; - r3 = r6 + r2; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x42d48; + r5= page[(r3+8)>>>2]; + if(r4 == r0) { + pc=0x4c60c; continue; } - r3 = (r2 & 0xffffffffL) < (512 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x42db8; + case 0x4c49c: + r3= page[(r3+12)>>>2]; + page[(r5+12)>>>2] = r3; + page[(r3+8)>>>2] = r5; + case 0x4c4ac: + r3 = r2 | 1; + page[(r6+4)>>>2] = r3; + r3 = r6 + r2; + page[(r3+0)>>>2] = r2; + if(r4 != r0) { + pc=0x4c548; + continue; + } + r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x4c5b8; continue; } r3 = r2 >>> 9; - r4 = (r3 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x42eb8; - run_42e00(); - return; + r4 = (r3&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4c6b8; + continue; } r4 = r2 >>> 6; r4 = r4 + 56; r8 = r4 << 1; - case 0x42cec: + case 0x4c4ec: r8 = r8 << 2; r8 = r7 + r8; - r3 = readPages[(r8 + 8) >>> 12][((r8 + 8) >>> 2) & 0x3ff]; - if (r3 == r8) { - /* Next insn is delay slot */ - pc = 0x42ed4; - run_42e00(); - return; + r3= page[(r8+8)>>>2]; + if(r3 == r8) { + pc=0x4c6d4; + continue; } r4 = r0 + -4; - case 0x42d08: - r5 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + case 0x4c508: + r5= page[(r3+4)>>>2]; r5 = r5 & r4; r5 = ((r2 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x42d30; + if(r5 == r0) { + pc=0x4c530; continue; } - r3 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; - if (r8 != r3) { - /* Next insn is delay slot */ - pc = 0x42d08; + r3= page[(r3+8)>>>2]; + if(r8 != r3) { + pc=0x4c508; continue; } - 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]; + case 0x4c530: + r2= page[(r3+12)>>>2]; + case 0x4c538: + page[(r6+12)>>>2] = r2; + page[(r6+8)>>>2] = r3; + page[(r2+8)>>>2] = r6; + page[(r3+12)>>>2] = r6; + case 0x4c548: + r31= page[(r29+28)>>>2]; + r16= page[(r29+20)>>>2]; r4 = r17 + r0; - r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x45800; - run_45800(); - return; - case 0x42d64: - r4 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; + pc=0x4f000; + run_4f000(); return; + case 0x4c564: + r4= page[(r16+-8)>>>2]; r8 = 6 << 16; r6 = r6 - r4; r2 = r2 + r4; - 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; + r4= page[(r6+8)>>>2]; + r8 = r8 + 25184; + if(r4 == r8) { + pc=0x4c6ac; + continue; } - 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= page[(r6+12)>>>2]; + page[(r4+12)>>>2] = r8; + page[(r8+8)>>>2] = r4; r4 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x42c74; + pc=0x4c474; continue; - 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]; + case 0x4c5a0: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x42db8: + case 0x4c5b8: 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= page[(r7+4)>>>2]; r2 = r2 << 3; r3 = r3 | r4; - writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r3; + page[(r7+4)>>>2] = 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= page[(r7+8)>>>2]; + r31= page[(r29+28)>>>2]; + r16= page[(r29+20)>>>2]; 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 0x42e00: - pc = 0x42e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_42e00() throws ExecutionException { /* 0x42e00 - 0x43000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x42e00: + r17= page[(r29+24)>>>2]; + page[(r6+12)>>>2] = r7; + page[(r6+8)>>>2] = r2; + page[(r7+8)>>>2] = r6; + page[(r2+12)>>>2] = r6; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x45800; - run_45800(); - return; - case 0x42e0c: + pc=0x4f000; + run_4f000(); return; + case 0x4c60c: 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; - r6 = r6 + r2; - 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 = 0x42e78; + r8 = r8 + 25184; + if(r5 != r8) { + pc=0x4c49c; continue; } - r3 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; + r3 = r2 | 1; + page[(r7+20)>>>2] = r6; + page[(r7+16)>>>2] = r6; + page[(r6+12)>>>2] = r5; + page[(r6+8)>>>2] = r5; + page[(r6+4)>>>2] = r3; + r6 = r6 + r2; + page[(r6+0)>>>2] = r2; + pc=0x4c548; + continue; + case 0x4c644: + r8 = r8 & 1; + r2 = r5 + r2; + if(r8 != r0) { + pc=0x4c678; + continue; + } + r3= page[(r16+-8)>>>2]; r6 = r6 - r3; - r4 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r4= page[(r6+8)>>>2]; 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 0x42e78: - r5 = readPages[(r28 + -31504) >>> 12][((r28 + -31504) >>> 2) & 0x3ff]; + r3= page[(r6+12)>>>2]; + page[(r4+12)>>>2] = r3; + page[(r3+8)>>>2] = r4; + case 0x4c678: + r5= page[(r28+-31504)>>>2]; 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 = 0x42d48; - run_42c00(); - return; + page[(r6+4)>>>2] = r3; + page[(r7+8)>>>2] = r6; + if(r2 != r0) { + pc=0x4c548; + continue; } - r5 = readPages[(r28 + -31276) >>> 12][((r28 + -31276) >>> 2) & 0x3ff]; + r5= page[(r28+-31276)>>>2]; r4 = r17 + r0; - /* 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: + r31=0x4c6a4; + pc=0x4c200; + continue; + case 0x4c6a4: + pc=0x4c548; + continue; + case 0x4c6ac: r4 = r0 + 1; - /* 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; + pc=0x4c474; + continue; + case 0x4c6b8: + r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4c6fc; continue; } r4 = r3 + 91; r8 = r4 << 1; - /* Next insn is delay slot */ - pc = 0x42cec; - run_42c00(); - return; - case 0x42ed4: + pc=0x4c4ec; + continue; + case 0x4c6d4: r2 = r0 + 1; r4 = r4 >> 2; - r4 = r2 << (r4 & 0x1f); - r2 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; + r4 = r2 << (r4&0x1f); + r2= page[(r7+4)>>>2]; r2 = r4 | r2; - writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r2; + page[(r7+4)>>>2] = r2; r2 = r3 + r0; - /* 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; + pc=0x4c538; + continue; + case 0x4c6fc: + r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4c71c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r8 = r4 << 1; - /* 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; + pc=0x4c4ec; + continue; + case 0x4c71c: + r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4c73c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r8 = r4 << 1; - /* 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; + pc=0x4c4ec; + continue; + case 0x4c73c: + r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4c75c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r8 = r4 << 1; - /* Next insn is delay slot */ - pc = 0x42cec; - run_42c00(); - return; - case 0x42f5c: + pc=0x4c4ec; + continue; + case 0x4c75c: r8 = r0 + 252; r4 = r0 + 126; - /* Next insn is delay slot */ - pc = 0x42cec; - run_42c00(); + pc=0x4c4ec; + continue; + case 0x4c800: + pc=0x4c800; return; - case 0x43000: - pc = 0x43000; - 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_4c800() throws ExecutionException { /* 0x4c800 - 0x4d000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x43000: + for(;;) { + switch(pc) { + case 0x4c800: 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; + page[(r29+104)>>>2] = r21; + page[(r29+92)>>>2] = r18; + page[(r29+88)>>>2] = r17; + page[(r29+84)>>>2] = r16; + page[(r29+116)>>>2] = r31; + page[(r29+112)>>>2] = r23; + page[(r29+108)>>>2] = r22; + page[(r29+100)>>>2] = r20; + page[(r29+96)>>>2] = r19; r17 = r4 + r0; r16 = r5 + r0; r21 = r6 + r0; r18 = r7 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x43050; + if(r4 == r0) { + pc=0x4c850; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x43230; - run_43200(); - return; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x4ca30; + continue; } - case 0x43050: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4c850: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x4324c; - run_43200(); - return; + if(r3 == r2) { + pc=0x4ca4c; + continue; } - case 0x43064: - r19 = readPages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff]; - if (r19 == r0) { - /* Next insn is delay slot */ - pc = 0x43588; - run_43400(); - return; + case 0x4c864: + r19= page[(r16+40)>>>2]; + if(r19 == r0) { + pc=0x4cd88; + continue; } r2 = r0 + 1; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x431c4; + if(r18 == r2) { + pc=0x4c9c4; continue; } r2 = r0 + 2; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x430d4; + if(r18 == r2) { + pc=0x4c8d4; continue; } - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x430d4; + if(r18 == r0) { + pc=0x4c8d4; continue; } r2 = r0 + 22; - writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; - case 0x4309c: + page[(r17+0)>>>2] = r2; + case 0x4c89c: r20 = r0 + -1; - case 0x430a0: - r31 = readPages[(r29 + 116) >>> 12][((r29 + 116) >>> 2) & 0x3ff]; + case 0x4c8a0: + r31= page[(r29+116)>>>2]; 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= page[(r29+112)>>>2]; + r22= page[(r29+108)>>>2]; + r21= page[(r29+104)>>>2]; + r20= page[(r29+100)>>>2]; + r19= page[(r29+96)>>>2]; + r18= page[(r29+92)>>>2]; + r17= page[(r29+88)>>>2]; + r16= page[(r29+84)>>>2]; r29 = r29 + 120; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x430d4: - r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x4c8d4: + r2= page[(r16+16)>>>2]; r22 = r0 + r0; r20 = r0 + r0; - case 0x430e0: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x43524; - run_43400(); - return; + case 0x4c8e0: + if(r2 == r0) { + pc=0x4cd24; + continue; } - 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 */ + case 0x4c8e8: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 65535; r4 = r2 & 2074; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x43124; + if(r4 != r0) { + pc=0x4c924; continue; } r2 = r2 & 1024; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x432b8; - run_43200(); - return; - } - r2 = 4 << 16; - r2 = r2 + 31232; - if (r19 == r2) { - /* Next insn is delay slot */ - pc = 0x43264; - run_43200(); - return; - } - 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 0x43124: - r4 = r17 + r0; - r5 = r16 + r0; - /* 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 = 0x4309c; + if(r2 != r0) { + pc=0x4cab8; continue; } - r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r2 = 5 << 16; + r2 = r2 + 4608; + if(r19 == r2) { + pc=0x4ca64; + continue; + } + case 0x4c91c: + r3 = r3 | 2048; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x4c924: + r4 = r17 + r0; + r5 = r16 + r0; + r31=0x4c934; + pc=0x4a400; + run_4a000(); return; + case 0x4c934: + r20 = r2 + r0; + if(r2 != r0) { + pc=0x4c89c; + continue; + } + r5= page[(r16+28)>>>2]; r4 = r17 + r0; r6 = r21 + r0; r7 = r18 + r0; - /* Next insn is delay slot */ - pc = r19; - r31 = 0x43158; + pc=r19; + r31=0x4c958; return; - case 0x43158: + case 0x4c958: r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x4309c; + if(r2 == r3) { + pc=0x4c89c; continue; } - r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x43190; + r5= page[(r16+48)>>>2]; + if(r5 == r0) { + pc=0x4c990; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x4318c; + if(r5 == r2) { + pc=0x4c98c; continue; } r4 = r17 + r0; - /* 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; + r31=0x4c98c; + pc=0x4c400; + run_4c000(); return; + case 0x4c98c: + page[(r16+48)>>>2] = r0; + case 0x4c990: + r2= page[(r16+16)>>>2]; + page[(r16+4)>>>2] = r0; + page[(r16+0)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31 = 0x431bc; - pc = 0x4d7f0; - run_4d600(); - return; - case 0x431bc: - /* Next insn is delay slot */ - pc = 0x430a0; + r31=0x4c9bc; + pc=0x56ff0; + run_56800(); return; + case 0x4c9bc: + pc=0x4c8a0; continue; - case 0x431c4: + case 0x4c9c4: r4 = r17 + r0; r5 = r16 + r0; - /* 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; + r31=0x4c9d4; + pc=0x4a400; + run_4a000(); return; + case 0x4c9d4: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r2 & 4096; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x434e4; - run_43400(); - return; + if(r3 == r0) { + pc=0x4cce4; + continue; } - r20 = readPages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff]; - case 0x431ec: + r20= page[(r16+80)>>>2]; + case 0x4c9ec: r3 = r2 & 4; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x433a0; - run_43200(); - return; + if(r3 != r0) { + pc=0x4cba0; + continue; } r2 = r2 & 8; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x433c8; - run_43200(); - return; + if(r2 == r0) { + pc=0x4cbc8; + continue; } - case 0x43200: - pc = 0x43200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_43200() throws ExecutionException { /* 0x43200 - 0x43400 */ - int addr, tmp; - 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; + r3= page[(r16+0)>>>2]; + r2= page[(r16+16)>>>2]; + if(r3 == r0) { + pc=0x4ca1c; continue; } r3 = r3 - r2; r20 = r20 + r3; - case 0x4321c: + case 0x4ca1c: r21 = r21 + r20; r22 = r0 + 1; r18 = r0 + r0; - /* 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; + pc=0x4c8e0; + continue; + case 0x4ca30: + r31=0x4ca38; + pc=0x4ac00; + run_4a800(); return; + case 0x4ca38: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x43064; - run_43000(); - return; + if(r3 != r2) { + pc=0x4c864; + continue; } - case 0x4324c: + case 0x4ca4c: r4 = r17 + r0; r5 = r16 + r0; - /* 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 */ + r31=0x4ca5c; + pc=0x4a400; + run_4a000(); return; + case 0x4ca5c: + pc=0x4c864; + continue; + case 0x4ca64: + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; - if (r5 < 0) { - /* Next insn is delay slot */ - pc = 0x4311c; - run_43000(); - return; + if(r5 < 0) { + pc=0x4c91c; + continue; } r4 = r17 + r0; r6 = r29 + 16; - /* 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; + r31=0x4ca84; + pc=0x56f50; + run_56800(); return; + case 0x4ca84: + if(r2 != r0) { + pc=0x4cd18; + continue; } - r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3= page[(r29+20)>>>2]; r2 = r0 | 32768; r3 = r3 & 61440; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x43518; - run_43400(); - return; + if(r3 != r2) { + pc=0x4cd18; + continue; } 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; + page[(r16+76)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 0x432b8: - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x433d4; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x4cab8: + if(r18 != r0) { + pc=0x4cbd4; continue; } r23 = r21 + r0; - if (r22 != r0) { - /* Next insn is delay slot */ - pc = 0x43404; - run_43400(); - return; + if(r22 != r0) { + pc=0x4cc04; + continue; } - case 0x432cc: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4cacc: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 4096; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4353c; - run_43400(); - return; + if(r2 == r0) { + pc=0x4cd3c; + continue; } - 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]; + r2= page[(r16+80)>>>2]; + case 0x4cae4: + r3= page[(r16+4)>>>2]; + r5= page[(r16+48)>>>2]; r20 = r2 - r3; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x43568; - run_43400(); - return; + if(r5 == r0) { + pc=0x4cd68; + continue; } - r6 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + r6= page[(r16+60)>>>2]; r20 = r20 - r6; - case 0x43304: - r2 = readPages[(r16 + 56) >>> 12][((r16 + 56) >>> 2) & 0x3ff]; - r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x4cb04: + r2= page[(r16+56)>>>2]; + r4= page[(r16+16)>>>2]; r20 = r20 + r3; r2 = r2 - r4; r20 = r20 - r2; r2 = r6 + r2; - case 0x4331c: + case 0x4cb1c: r3 = r23 < r20 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x43420; - run_43400(); - return; + if(r3 != r0) { + pc=0x4cc20; + continue; } r3 = r20 + r2; r3 = ((r23 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x43420; - run_43400(); - return; + if(r3 == r0) { + pc=0x4cc20; + continue; } 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 = 0x43370; + page[(r16+0)>>>2] = r4; + page[(r16+4)>>>2] = r2; + if(r5 == r0) { + pc=0x4cb70; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x4336c; + if(r5 == r2) { + pc=0x4cb6c; continue; } r4 = r17 + r0; - /* 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; + r31=0x4cb6c; + pc=0x4c400; + run_4c000(); return; + case 0x4cb6c: + page[(r16+48)>>>2] = r0; + case 0x4cb70: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 0x43380: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x4cb80: r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31 = 0x43394; - pc = 0x4d7f0; - run_4d600(); - return; - case 0x43394: + r31=0x4cb94; + pc=0x56ff0; + run_56800(); return; + case 0x4cb94: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x430a0; - run_43000(); - return; - case 0x433a0: - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + pc=0x4c8a0; + continue; + case 0x4cba0: + r2= page[(r16+4)>>>2]; r20 = r20 - r2; - r2 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x433c8; + r2= page[(r16+48)>>>2]; + if(r2 == r0) { + pc=0x4cbc8; continue; } - r2 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + r2= page[(r16+60)>>>2]; r20 = r20 - r2; - case 0x433c8: - r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4321c; + case 0x4cbc8: + r2= page[(r16+16)>>>2]; + pc=0x4ca1c; continue; - 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 */ + case 0x4cbd4: + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; r4 = r17 + r0; r6 = r29 + 16; - /* 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; + r31=0x4cbe8; + pc=0x56f50; + run_56800(); return; + case 0x4cbe8: + if(r2 != r0) { + pc=0x4c924; + continue; } - r23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r23= page[(r29+32)>>>2]; r23 = r21 + r23; - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x432cc; + if(r22 == r0) { + pc=0x4cacc; continue; } - case 0x43400: - pc = 0x43400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_43400() throws ExecutionException { /* 0x43400 - 0x43600 */ - int addr, tmp; - 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; + case 0x4cc04: + r5= page[(r16+48)>>>2]; + r3= page[(r16+4)>>>2]; + if(r5 == r0) { + pc=0x4cd68; continue; } - 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]; + r6= page[(r16+60)>>>2]; + pc=0x4cb04; + continue; + case 0x4cc20: + r20= page[(r16+76)>>>2]; + r5= page[(r16+28)>>>2]; r20 = r0 - r20; r20 = r23 & r20; r4 = r17 + r0; r6 = r20 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc = r19; - r31 = 0x43444; + pc=r19; + r31=0x4cc44; return; - case 0x43444: + case 0x4cc44: r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x43124; - run_43000(); - return; + if(r2 == r3) { + pc=0x4c924; + continue; } - 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; + r2= page[(r16+16)>>>2]; + r5= page[(r16+48)>>>2]; + page[(r16+4)>>>2] = r0; + page[(r16+0)>>>2] = r2; + if(r5 == r0) { + pc=0x4cc84; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x43480; + if(r5 == r2) { + pc=0x4cc80; continue; } r4 = r17 + r0; - /* 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; + r31=0x4cc80; + pc=0x4c400; + run_4c000(); return; + case 0x4cc80: + page[(r16+48)>>>2] = r0; + case 0x4cc84: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 = 0x43380; - run_43200(); - return; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + if(r23 == r0) { + pc=0x4cb80; + continue; } r4 = r17 + r0; r5 = r16 + r0; - /* 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; + r31=0x4ccac; + pc=0x50600; + run_50000(); return; + case 0x4ccac: + if(r2 != r0) { + pc=0x4c924; + continue; } - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2= page[(r16+4)>>>2]; r3 = ((r2 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x43124; - run_43000(); - return; + if(r3 != r0) { + pc=0x4c924; + continue; } - r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3= page[(r16+0)>>>2]; 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 = 0x43380; - run_43200(); - return; - case 0x434e4: - r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + page[(r16+0)>>>2] = r3; + page[(r16+4)>>>2] = r2; + pc=0x4cb80; + continue; + case 0x4cce4: + r5= page[(r16+28)>>>2]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc = r19; - r31 = 0x434fc; + pc=r19; + r31=0x4ccfc; return; - case 0x434fc: + case 0x4ccfc: r20 = r2 + r0; r2 = r0 + -1; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4309c; - run_43000(); - return; + if(r20 == r2) { + pc=0x4c89c; + continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - /* 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 */ + pc=0x4c9ec; + continue; + case 0x4cd18: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; - /* Next insn is delay slot */ - pc = 0x4311c; - run_43000(); - return; - case 0x43524: + pc=0x4c91c; + continue; + case 0x4cd24: r4 = r17 + r0; r5 = r16 + r0; - /* 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]; + r31=0x4cd34; + pc=0x4dc00; + run_4d800(); return; + case 0x4cd34: + pc=0x4c8e8; + continue; + case 0x4cd3c: + r5= page[(r16+28)>>>2]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc = r19; - r31 = 0x43554; + pc=r19; + r31=0x4cd54; return; - case 0x43554: + case 0x4cd54: r3 = r0 + -1; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x432e4; - run_43200(); - return; + if(r2 != r3) { + pc=0x4cae4; + continue; } - /* 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]; + pc=0x4c924; + continue; + case 0x4cd68: + r2= page[(r16+0)>>>2]; + r4= page[(r16+16)>>>2]; r5 = r0 + r0; r2 = r2 - r4; r20 = r20 - r2; r2 = r3 + r2; - /* Next insn is delay slot */ - pc = 0x4331c; - run_43200(); - return; - case 0x43588: + pc=0x4cb1c; + continue; + case 0x4cd88: r2 = r0 + 29; - writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + page[(r17+0)>>>2] = 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_43600() throws ExecutionException { /* 0x43600 - 0x43800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x43600: + pc=0x4c8a0; + continue; + case 0x4ce00: r3 = r4 + r0; r2 = r5 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x43000; - run_43000(); + pc=0x4c800; + continue; + case 0x4d000: + pc=0x4d000; return; - case 0x43800: - pc = 0x43800; - 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_43800() throws ExecutionException { /* 0x43800 - 0x43a00 */ + private final void run_4d000() throws ExecutionException { /* 0x4d000 - 0x4d800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x43800: + for(;;) { + switch(pc) { + case 0x4d000: r29 = r29 + -48; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + page[(r29+32)>>>2] = 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 = 0x438cc; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + if(r19 == r0) { + pc=0x4d0cc; continue; } r21 = r5 + r0; r20 = r0 + r0; r18 = r0 + -1; - case 0x43838: - r17 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; - r16 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + case 0x4d038: + r17= page[(r19+4)>>>2]; + r16= page[(r19+8)>>>2]; r17 = r17 + -1; - if (r17 < 0) { - /* Next insn is delay slot */ - pc = 0x43890; + if(r17 < 0) { + pc=0x4d090; continue; } - case 0x4384c: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4d04c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r3 = (r3 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x43880; + r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x4d080; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; - if (r3 == r18) { - /* Next insn is delay slot */ - pc = 0x43880; + if(r3 == r18) { + pc=0x4d080; continue; } r4 = r16 + r0; - /* Next insn is delay slot */ - pc = r21; - r31 = 0x4387c; + pc=r21; + r31=0x4d07c; return; - case 0x4387c: + case 0x4d07c: r20 = r20 | r2; - case 0x43880: + case 0x4d080: r17 = r17 + -1; r16 = r16 + 104; - if (r17 != r18) { - /* Next insn is delay slot */ - pc = 0x4384c; + if(r17 != r18) { + pc=0x4d04c; continue; } - case 0x43890: - r19 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; - if (r19 != r0) { - /* Next insn is delay slot */ - pc = 0x43838; + case 0x4d090: + r19= page[(r19+0)>>>2]; + if(r19 != r0) { + pc=0x4d038; continue; } - case 0x438a0: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x4d0a0: + r31= page[(r29+44)>>>2]; 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= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x438cc: + case 0x4d0cc: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x438a0; + pc=0x4d0a0; continue; - case 0x43a00: - pc = 0x43a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_43a00() throws ExecutionException { /* 0x43a00 - 0x43c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x43a00: + case 0x4d200: r29 = r29 + -48; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + page[(r29+28)>>>2] = 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; + page[(r29+32)>>>2] = r20; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; r20 = r4 + r0; - if (r19 == r0) { - /* Next insn is delay slot */ - pc = 0x43adc; + if(r19 == r0) { + pc=0x4d2dc; continue; } r21 = r5 + r0; r22 = r0 + r0; r18 = r0 + -1; - case 0x43a40: - r17 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; - r16 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + case 0x4d240: + r17= page[(r19+4)>>>2]; + r16= page[(r19+8)>>>2]; r17 = r17 + -1; - if (r17 < 0) { - /* Next insn is delay slot */ - pc = 0x43a9c; + if(r17 < 0) { + pc=0x4d29c; continue; } - case 0x43a54: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4d254: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r3 = (r3 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x43a8c; + r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x4d28c; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; - if (r3 == r18) { - /* Next insn is delay slot */ - pc = 0x43a8c; + if(r3 == r18) { + pc=0x4d28c; continue; } r4 = r20 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - pc = r21; - r31 = 0x43a88; + pc=r21; + r31=0x4d288; return; - case 0x43a88: + case 0x4d288: r22 = r22 | r2; - case 0x43a8c: + case 0x4d28c: r17 = r17 + -1; r16 = r16 + 104; - if (r17 != r18) { - /* Next insn is delay slot */ - pc = 0x43a54; + if(r17 != r18) { + pc=0x4d254; continue; } - case 0x43a9c: - r19 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; - if (r19 != r0) { - /* Next insn is delay slot */ - pc = 0x43a40; + case 0x4d29c: + r19= page[(r19+0)>>>2]; + if(r19 != r0) { + pc=0x4d240; continue; } - case 0x43aac: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x4d2ac: + r31= page[(r29+44)>>>2]; 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= page[(r29+36)>>>2]; + r22= page[(r29+40)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x43adc: + case 0x4d2dc: r22 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x43aac; + pc=0x4d2ac; continue; - case 0x43c00: - pc = 0x43c00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_43c00() throws ExecutionException { /* 0x43c00 - 0x43e00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x43c00: { - long hilo = (long) (r7) * ((long) r6); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + case 0x4d400: + { 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; + page[(r29+48)>>>2] = r18; + page[(r29+16)>>>2] = 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; + page[(r29+56)>>>2] = r20; + page[(r29+52)>>>2] = r19; + page[(r29+44)>>>2] = r17; + page[(r29+40)>>>2] = r16; + page[(r29+60)>>>2] = 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 = 0x43c68; + r16= page[(r29+80)>>>2]; + page[(r29+28)>>>2] = r5; + page[(r29+32)>>>2] = r18; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r2; + if(r4 == r0) { + pc=0x4d468; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x43d14; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x4d514; continue; } - 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 */ + case 0x4d468: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 8192; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x43c94; + if(r2 != r0) { + pc=0x4d494; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r16+100)>>>2]; r2 = r0 + -8193; r2 = r3 & r2; - writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r2; - case 0x43c94: + page[(r16+100)>>>2] = r2; + case 0x4d494: r4 = r17 + r0; r5 = r16 + r0; r6 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x43ca8; - pc = 0x50600; - run_50600(); - return; - case 0x43ca8: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x43cec; + r31=0x4d4a8; + pc=0x59e00; + run_59800(); return; + case 0x4d4a8: + if(r2 == r0) { + pc=0x4d4ec; continue; } - r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; - r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r2= page[(r29+24)>>>2]; + r31= page[(r29+60)>>>2]; 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) { + if(r19!=0) { + hi = (int)((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); lo = (int)((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); } - pc = 0x43cc8; + pc=0x4d4c8; 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 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]; + case 0x4d4c8: + r20= page[(r29+56)>>>2]; + r19= page[(r29+52)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r29 = r29 + 64; r2 = lo; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x43cec: - r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + case 0x4d4ec: + r31= page[(r29+60)>>>2]; 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= page[(r29+52)>>>2]; + r20= page[(r29+56)>>>2]; + r18= page[(r29+48)>>>2]; + r17= page[(r29+44)>>>2]; + r16= page[(r29+40)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x43d14: - /* Next insn is delay slot */ - r31 = 0x43d1c; - pc = 0x41400; - run_41400(); - return; - case 0x43d1c: - /* Next insn is delay slot */ - pc = 0x43c68; + case 0x4d514: + r31=0x4d51c; + pc=0x4ac00; + run_4a800(); return; + case 0x4d51c: + pc=0x4d468; continue; - case 0x43e00: - pc = 0x43e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_43e00() throws ExecutionException { /* 0x43e00 - 0x44000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x43e00: + case 0x4d600: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r5 = r8 + r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + page[(r29+16)>>>2] = r7; r6 = r3 + r0; r7 = r2 + r0; - 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]; + page[(r29+28)>>>2] = r31; + r31=0x4d630; + pc=0x4d400; + continue; + case 0x4d630: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x44000: - pc = 0x44000; + case 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_44000() throws ExecutionException { /* 0x44000 - 0x44200 */ + private final void run_4d800() throws ExecutionException { /* 0x4d800 - 0x4e000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x44000: + for(;;) { + switch(pc) { + case 0x4d800: r29 = r29 + -32; r5 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r6 = r29 + 16; - 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]; + page[(r29+28)>>>2] = r31; + r31=0x4d81c; + pc=0x4da00; + continue; + case 0x4d81c: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x44200: - pc = 0x44200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44200() throws ExecutionException { /* 0x44200 - 0x44400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x44200: + case 0x4da00: 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; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r22; + page[(r29+28)>>>2] = r19; + page[(r29+20)>>>2] = r17; r20 = r4 + r0; r18 = r5 + r0; r21 = r6 + r0; - /* 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; + r31=0x4da38; + pc=0x59800; + run_59800(); return; + case 0x4da38: + r16= page[(r28+-31520)>>>2]; + if(r16 == r0) { + pc=0x4daf0; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44354; + if(r3 == r0) { + pc=0x4db54; continue; } r5 = r0 + 61; r2 = r18 + r0; r4 = r0 + 61; - if (r3 != r5) { - /* Next insn is delay slot */ - pc = 0x4427c; + if(r3 != r5) { + pc=0x4da7c; continue; } - /* Next insn is delay slot */ - pc = 0x442f0; + pc=0x4daf0; continue; - case 0x44274: - if (r3 == r4) { - /* Next insn is delay slot */ - pc = 0x442f0; + case 0x4da74: + if(r3 == r4) { + pc=0x4daf0; continue; } - case 0x4427c: + case 0x4da7c: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44274; + if(r3 != r0) { + pc=0x4da74; continue; } r17 = r2 - r18; - case 0x44294: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x442f0; + case 0x4da94: + r4= page[(r16+0)>>>2]; + if(r4 == r0) { + pc=0x4daf0; continue; } r22 = r0 + 61; - case 0x442a8: + case 0x4daa8: r5 = r18 + r0; r6 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x442b8; - pc = 0x48200; - run_48200(); - return; - case 0x442b8: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x442dc; + r31=0x4dab8; + pc=0x51a00; + run_51800(); return; + case 0x4dab8: + if(r2 != r0) { + pc=0x4dadc; continue; } - r19 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r19= page[(r16+0)>>>2]; 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 */ + addr=r19+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r22) { - /* Next insn is delay slot */ - pc = 0x4432c; + if(r2 == r22) { + pc=0x4db2c; continue; } - case 0x442dc: + case 0x4dadc: r16 = r16 + 4; - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x442a8; + r4= page[(r16+0)>>>2]; + if(r4 != r0) { + pc=0x4daa8; continue; } - case 0x442f0: + case 0x4daf0: r4 = r20 + r0; - /* Next insn is delay slot */ - r31 = 0x442fc; - pc = 0x50200; - run_50200(); - return; - case 0x442fc: + r31=0x4dafc; + pc=0x59a00; + run_59800(); return; + case 0x4dafc: 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]; + case 0x4db00: + r31= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4432c: - r2 = readPages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff]; + case 0x4db2c: + r2= page[(r28+-31520)>>>2]; r4 = r20 + r0; r16 = r16 - r2; r16 = r16 >> 2; - writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r16; - /* Next insn is delay slot */ - r31 = 0x44348; - pc = 0x50200; - run_50200(); - return; - case 0x44348: + page[(r21+0)>>>2] = r16; + r31=0x4db48; + pc=0x59a00; + run_59800(); return; + case 0x4db48: r2 = r19 + 1; - /* Next insn is delay slot */ - pc = 0x44300; + pc=0x4db00; continue; - case 0x44354: + case 0x4db54: r17 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x44294; + pc=0x4da94; continue; - case 0x44400: - pc = 0x44400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44400() throws ExecutionException { /* 0x44400 - 0x44600 */ - int addr, tmp; - 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 */ + case 0x4dc00: + addr=r5+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r29 = r29 + -104; r3 = r2 & 65535; - writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r16; + page[(r29+84)>>>2] = 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 = 0x44530; + page[(r29+100)>>>2] = r31; + page[(r29+96)>>>2] = r19; + page[(r29+92)>>>2] = r18; + page[(r29+88)>>>2] = r17; + if(r5 != r0) { + pc=0x4dd30; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; r17 = r4 + r0; - if (r5 < 0) { - /* Next insn is delay slot */ - pc = 0x444f0; + if(r5 < 0) { + pc=0x4dcf0; continue; } r6 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x4444c; - pc = 0x4d750; - run_4d600(); - return; - case 0x4444c: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x444e4; + r31=0x4dc4c; + pc=0x56f50; + run_56800(); return; + case 0x4dc4c: + if(r2 < 0) { + pc=0x4dce4; continue; } - r2 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2= page[(r29+20)>>>2]; 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 = 0x44570; + r19 = (r19&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + if(r2 == r3) { + pc=0x4dd70; continue; } - case 0x44470: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x4dc70: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 0x44480: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x4dc80: r4 = r17 + r0; r5 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x44490; - pc = 0x44a00; - run_44a00(); - return; - case 0x44490: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x44514; + r31=0x4dc90; + pc=0x4e200; + run_4e000(); return; + case 0x4dc90: + if(r2 == r0) { + pc=0x4dd14; continue; } - r3 = 4 << 16; - 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 = 5 << 16; + r3 = r3 + -22528; + page[(r17+60)>>>2] = r3; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = 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 = 0x445a4; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+16)>>>2] = r2; + page[(r16+20)>>>2] = r18; + if(r19 != r0) { + pc=0x4dda4; continue; } - 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]; + case 0x4dcc4: + r31= page[(r29+100)>>>2]; + r19= page[(r29+96)>>>2]; + r18= page[(r29+92)>>>2]; + r17= page[(r29+88)>>>2]; + r16= page[(r29+84)>>>2]; r29 = r29 + 104; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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 */ + case 0x4dce4: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r3 = r2 & 65535; - case 0x444f0: + case 0x4dcf0: r3 = r3 & 128; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44564; + if(r3 != r0) { + pc=0x4dd64; continue; } r18 = r0 + 1024; - case 0x44500: + case 0x4dd00: 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r19 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x44480; + pc=0x4dc80; continue; - 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 */ + case 0x4dd14: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r3 = r2 & 512; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x444c4; + if(r3 != r0) { + pc=0x4dcc4; 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 0x44530: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x4dd30: 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= page[(r29+100)>>>2]; + page[(r16+0)>>>2] = r2; + page[(r16+16)>>>2] = 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= page[(r29+96)>>>2]; + r18= page[(r29+92)>>>2]; + r17= page[(r29+88)>>>2]; + page[(r16+20)>>>2] = r2; + r16= page[(r29+84)>>>2]; r29 = r29 + 104; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x44564: + case 0x4dd64: r18 = r0 + 64; - /* Next insn is delay slot */ - pc = 0x44500; + pc=0x4dd00; continue; - case 0x44570: - r2 = 4 << 16; - r3 = readPages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff]; - r2 = r2 + 31232; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x44470; + case 0x4dd70: + r2 = 5 << 16; + r3= page[(r16+40)>>>2]; + r2 = r2 + 4608; + if(r3 != r2) { + pc=0x4dc70; continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + 1024; - writePages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x44480; + page[(r16+76)>>>2] = r2; + pc=0x4dc80; continue; - 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 */ + case 0x4dda4: + addr=r16+14; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x445b4; - pc = 0x4da00; - run_4da00(); - return; - case 0x445b4: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x444c4; + r31=0x4ddb4; + pc=0x57200; + run_57000(); return; + case 0x4ddb4: + if(r2 == r0) { + pc=0x4dcc4; continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 = 0x444c4; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + pc=0x4dcc4; continue; - case 0x44600: - pc = 0x44600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44600() throws ExecutionException { /* 0x44600 - 0x44800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x44600: + case 0x4de00: r5 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x44a00; - run_44a00(); + r4= page[(r28+-31512)>>>2]; + pc=0x4e200; + run_4e000(); return; + case 0x4e000: + pc=0x4e000; return; - case 0x44800: - pc = 0x44800; - 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_4e000() throws ExecutionException { /* 0x4e000 - 0x4e800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x44800: + for(;;) { + switch(pc) { + case 0x4e000: r5 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x42c00; - run_42c00(); - return; - case 0x44a00: - pc = 0x44a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44a00() throws ExecutionException { /* 0x44a00 - 0x44c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x44a00: + r4= page[(r28+-31512)>>>2]; + pc=0x4c400; + run_4c000(); return; + case 0x4e200: 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; + page[(r29+36)>>>2] = r19; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; r19 = r4 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44b04; + if(r3 != r0) { + pc=0x4e304; continue; } r17 = r0 + -8; r17 = r2 & r17; - if (r17 < 0) { - /* Next insn is delay slot */ - pc = 0x44b14; + if(r17 < 0) { + pc=0x4e314; continue; } r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x44b14; + if(r5 != r0) { + pc=0x4e314; continue; } - case 0x44a5c: + case 0x4e25c: r4 = r19 + r0; - /* 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; + r31=0x4e268; + pc=0x4ee00; + run_4e800(); return; + case 0x4e268: + r2 = (r17&0xffffffffL) < (504&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x4e328; continue; } r18 = 6 << 16; - r18 = r18 + -16464; + r18 = r18 + 25176; r2 = r18 + r17; - r16 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r16= page[(r2+12)>>>2]; r7 = r17 >>> 3; - if (r16 == r2) { - /* Next insn is delay slot */ - pc = 0x450d8; - run_45000(); - return; + if(r16 == r2) { + pc=0x4e8d8; + run_4e800(); return; } - case 0x44a90: - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x4e290: + r3= page[(r16+4)>>>2]; r2 = r0 + -4; - r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r4= page[(r16+8)>>>2]; 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 0x44ab0: + r3= page[(r16+12)>>>2]; + page[(r4+12)>>>2] = r3; + page[(r3+8)>>>2] = r4; + case 0x4e2b0: r2 = r16 + r2; - r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r3= page[(r2+4)>>>2]; r4 = r19 + r0; r3 = r3 | 1; - writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - r31 = 0x44acc; - pc = 0x45800; - run_45800(); - return; - case 0x44acc: + page[(r2+4)>>>2] = r3; + r31=0x4e2cc; + pc=0x4f000; + run_4f000(); return; + case 0x4e2cc: 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]; + case 0x4e2d0: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x44b04: + case 0x4e304: r17 = r0 + 16; r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x44a5c; + if(r5 == r0) { + pc=0x4e25c; continue; } - case 0x44b14: + case 0x4e314: r2 = r0 + 12; - writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r2; + page[(r19+0)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x44ad0; + pc=0x4e2d0; continue; - case 0x44b28: + case 0x4e328: r2 = r17 >>> 9; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x44d4c; - run_44c00(); - return; + if(r2 == r0) { + pc=0x4e54c; + continue; } - r3 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44fb8; - run_44e00(); - return; + r3 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4e7b8; + continue; } r8 = r17 >>> 6; r8 = r8 + 56; r6 = r8 << 1; - case 0x44b4c: + case 0x4e34c: r18 = 6 << 16; r6 = r6 << 2; - r18 = r18 + -16464; + r18 = r18 + 25176; r6 = r18 + r6; - r16 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; - if (r6 == r16) { - /* Next insn is delay slot */ - pc = 0x44bd0; + r16= page[(r6+12)>>>2]; + if(r6 == r16) { + pc=0x4e3d0; continue; } - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3= page[(r16+4)>>>2]; r2 = r0 + -4; r3 = r3 & r2; r4 = r3 - r17; r2 = r4 < 16 ? 1 : 0; - 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 = 0x44bc0; + if(r2 == r0) { + pc=0x4e55c; continue; } - /* Next insn is delay slot */ - pc = 0x44d68; - run_44c00(); - return; - case 0x44b9c: - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r7 = r0 + -4; + if(r4 < 0) { + pc=0x4e3c0; + continue; + } + pc=0x4e568; + continue; + case 0x4e39c: + r3= page[(r16+4)>>>2]; r3 = r3 & r7; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x44d5c; - run_44c00(); - return; - } - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x44d68; - run_44c00(); - return; - } - case 0x44bc0: - r16 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; - if (r6 != r16) { - /* Next insn is delay slot */ - pc = 0x44b9c; + if(r5 == r0) { + pc=0x4e55c; continue; } - case 0x44bd0: - r7 = r8 + 1; - 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; + if(r2 >= 0) { + pc=0x4e568; + continue; } - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x4e3c0: + r16= page[(r16+12)>>>2]; + if(r6 != r16) { + pc=0x4e39c; + continue; + } + case 0x4e3d0: + r7 = r8 + 1; + case 0x4e3d4: + r9 = 6 << 16; + r16= page[(r18+16)>>>2]; + r9 = r9 + 25184; + if(r16 == r9) { + pc=0x4e8b0; + run_4e800(); return; + } + r3= page[(r16+4)>>>2]; r2 = r0 + -4; r2 = r3 & r2; r3 = r2 - r17; r4 = r3 < 16 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4506c; - run_45000(); - return; + if(r4 == r0) { + pc=0x4e86c; + run_4e800(); return; } - case 0x44c00: - pc = 0x44c00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44c00() throws ExecutionException { /* 0x44c00 - 0x44e00 */ - int addr, tmp; - 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; + page[(r18+20)>>>2] = r9; + page[(r18+16)>>>2] = r9; + if(r3 >= 0) { + pc=0x4e2b0; + continue; } - r3 = (r2 & 0xffffffffL) < (512 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44fe4; - run_44e00(); - return; + r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4e7e4; + continue; } 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= page[(r18+4)>>>2]; 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 0x44c58: + r4= page[(r3+8)>>>2]; + page[(r18+4)>>>2] = r2; + page[(r16+12)>>>2] = r3; + page[(r16+8)>>>2] = r4; + page[(r3+8)>>>2] = r16; + page[(r4+12)>>>2] = r16; + case 0x4e458: 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 = 0x44da0; + if(r3 != r0) { + pc=0x4e5a0; continue; } r3 = r2 & r4; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44c98; + if(r3 != r0) { + pc=0x4e498; continue; } r3 = r0 + -4; r7 = r7 & r3; - case 0x44c84: + case 0x4e484: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44c84; + if(r3 == r0) { + pc=0x4e484; continue; } - case 0x44c98: + case 0x4e498: r8 = r0 + -4; - case 0x44c9c: + case 0x4e49c: r10 = r7 << 3; r10 = r18 + r10; r6 = r10 + r0; r11 = r7 + r0; - case 0x44cac: - r16 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; - if (r6 != r16) { - /* Next insn is delay slot */ - pc = 0x44cdc; + case 0x4e4ac: + r16= page[(r6+12)>>>2]; + if(r6 != r16) { + pc=0x4e4dc; continue; } - /* 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; + pc=0x4e8bc; + run_4e800(); return; + case 0x4e4c4: + if(r2 >= 0) { + pc=0x4e8f4; + run_4e800(); return; } - r16 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; - if (r6 == r16) { - /* Next insn is delay slot */ - pc = 0x450bc; - run_45000(); - return; + r16= page[(r16+12)>>>2]; + if(r6 == r16) { + pc=0x4e8bc; + run_4e800(); return; } - case 0x44cdc: - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x4e4dc: + r3= page[(r16+4)>>>2]; r3 = r3 & r8; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x44cc4; + if(r5 != r0) { + pc=0x4e4c4; continue; } - r4 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; - r5 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r4= page[(r16+12)>>>2]; + r5= page[(r16+8)>>>2]; 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; + page[(r16+4)>>>2] = r17; + page[(r5+12)>>>2] = r4; + page[(r4+8)>>>2] = 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; + page[(r18+20)>>>2] = r3; + page[(r18+16)>>>2] = r3; + page[(r3+4)>>>2] = r4; + page[(r3+12)>>>2] = r9; + page[(r3+8)>>>2] = r9; r3 = r3 + r2; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + page[(r3+0)>>>2] = r2; r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x44d40; - pc = 0x45800; - run_45800(); - return; - case 0x44d40: + r31=0x4e540; + pc=0x4f000; + run_4f000(); return; + case 0x4e540: r2 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x44ad0; - run_44a00(); - return; - case 0x44d4c: + pc=0x4e2d0; + continue; + case 0x4e54c: r6 = r0 + 126; r8 = r0 + 63; - /* Next insn is delay slot */ - pc = 0x44b4c; - run_44a00(); - return; - case 0x44d5c: + pc=0x4e34c; + continue; + case 0x4e55c: r8 = r8 + -1; - /* 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]; + pc=0x4e3d0; + continue; + case 0x4e568: + r2= page[(r16+12)>>>2]; + r4= page[(r16+8)>>>2]; 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]; + page[(r4+12)>>>2] = r2; + page[(r2+8)>>>2] = r4; + r2= page[(r3+4)>>>2]; r4 = r19 + r0; r2 = r2 | 1; - writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - r31 = 0x44d94; - pc = 0x45800; - run_45800(); - return; - case 0x44d94: + page[(r3+4)>>>2] = r2; + r31=0x4e594; + pc=0x4f000; + run_4f000(); return; + case 0x4e594: r2 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x44ad0; - run_44a00(); - return; - case 0x44da0: - r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + pc=0x4e2d0; + continue; + case 0x4e5a0: + r16= page[(r18+8)>>>2]; r2 = r0 + -4; - r21 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r21= page[(r16+4)>>>2]; r21 = r21 & r2; r2 = ((r21 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x44dd0; + if(r2 != r0) { + pc=0x4e5d0; continue; } r2 = r21 - r17; r3 = r2 < 16 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44f88; - run_44e00(); - return; + if(r3 == r0) { + pc=0x4e788; + continue; } - 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]; + case 0x4e5d0: + r22= page[(r28+-31276)>>>2]; + r31=0x4e5dc; + pc=0x56fd0; + run_56800(); return; + case 0x4e5dc: + r3= page[(r28+-31508)>>>2]; r22 = r22 + 16; r23 = r2 + r0; r2 = r0 + -1; r30 = r16 + r21; r22 = r22 + r17; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x44e0c; - run_44e00(); - return; + if(r3 == r2) { + pc=0x4e60c; + continue; } r2 = r22 + -1; - case 0x44e00: - pc = 0x44e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_44e00() throws ExecutionException { /* 0x44e00 - 0x45000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x44e00: r2 = r2 + r23; r22 = r0 - r23; r22 = r22 & r2; - case 0x44e0c: + case 0x4e60c: r4 = r19 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31 = 0x44e1c; - pc = 0x4d710; - run_4d600(); - return; - case 0x44e1c: + r31=0x4e61c; + pc=0x56f10; + run_56800(); return; + case 0x4e61c: r20 = r2 + r0; r2 = r0 + -1; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x44f58; + if(r20 == r2) { + pc=0x4e758; continue; } r2 = ((r20 & 0xffffffffL) < (r30 & 0xffffffffL)) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x45154; - run_45000(); - return; + if(r2 != r0) { + pc=0x4e954; + run_4e800(); return; } - case 0x44e38: + case 0x4e638: r3 = 6 << 16; - r2 = readPages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff]; + r2= page[(r3+31280)>>>2]; r4 = r23 + -1; r2 = r22 + r2; - writePages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff] = r2; - if (r30 == r20) { - /* Next insn is delay slot */ - pc = 0x452ac; - run_45200(); - return; + page[(r3+31280)>>>2] = r2; + if(r30 == r20) { + pc=0x4eaac; + run_4e800(); return; } - case 0x44e54: - r6 = readPages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff]; + case 0x4e654: + r6= page[(r28+-31508)>>>2]; r5 = r0 + -1; - if (r6 == r5) { - /* Next insn is delay slot */ - pc = 0x452d0; - run_45200(); - return; + if(r6 == r5) { + pc=0x4ead0; + run_4e800(); return; } r30 = r20 - r30; r2 = r2 + r30; - writePages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff] = r2; - case 0x44e70: + page[(r3+31280)>>>2] = r2; + case 0x4e670: r2 = r20 & 7; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x45210; - run_45200(); - return; + if(r2 == r0) { + pc=0x4ea10; + run_4e800(); return; } r5 = r0 + 8; r2 = r5 - r2; r20 = r20 + r2; - case 0x44e88: + case 0x4e688: 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 = 0x44eac; - pc = 0x4d710; - run_4d600(); - return; - case 0x44eac: + page[(r29+16)>>>2] = r3; + r31=0x4e6ac; + pc=0x56f10; + run_56800(); return; + case 0x4e6ac: r4 = r0 + -1; - r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x452fc; - run_45200(); - return; + r3= page[(r29+16)>>>2]; + if(r2 == r4) { + pc=0x4eafc; + run_4e800(); return; } r2 = r2 - r20; r4 = r22 + r2; r4 = r4 | 1; - case 0x44ec8: - r2 = readPages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff]; - writePages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff] = r20; + case 0x4e6c8: + r2= page[(r3+31280)>>>2]; + page[(r18+8)>>>2] = r20; r2 = r22 + r2; - 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; + page[(r3+31280)>>>2] = r2; + page[(r20+4)>>>2] = r4; + if(r16 == r18) { + pc=0x4e728; continue; } - r3 = (r21 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x45244; - run_45200(); - return; + r3 = (r21&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x4ea44; + run_4e800(); return; } - r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4= page[(r16+4)>>>2]; r21 = r21 + -12; r3 = r0 + -8; r3 = r21 & r3; r4 = r4 & 1; r4 = r3 | r4; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r4; + page[(r16+4)>>>2] = 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 = 0x452dc; - run_45200(); - return; + r3 = (r3&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; + page[(r4+4)>>>2] = r5; + page[(r4+8)>>>2] = r5; + if(r3 == r0) { + pc=0x4eadc; + run_4e800(); return; } - case 0x44f28: - r3 = readPages[(r28 + -31280) >>> 12][((r28 + -31280) >>> 2) & 0x3ff]; + case 0x4e728: + r3= page[(r28+-31280)>>>2]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44f40; + if(r3 == r0) { + pc=0x4e740; continue; } - writePages[(r28 + -31280) >>> 12][((r28 + -31280) >>> 2) & 0x3ff] = r2; - case 0x44f40: - r3 = readPages[(r28 + -31284) >>> 12][((r28 + -31284) >>> 2) & 0x3ff]; + page[(r28+-31280)>>>2] = r2; + case 0x4e740: + r3= page[(r28+-31284)>>>2]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x44f58; + if(r3 == r0) { + pc=0x4e758; continue; } - writePages[(r28 + -31284) >>> 12][((r28 + -31284) >>> 2) & 0x3ff] = r2; - case 0x44f58: - r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + page[(r28+-31284)>>>2] = r2; + case 0x4e758: + r16= page[(r18+8)>>>2]; r2 = r0 + -4; - r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3= page[(r16+4)>>>2]; r3 = r3 & r2; - case 0x44f6c: + case 0x4e76c: r2 = r3 - r17; r3 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x451d8; - run_45000(); - return; + if(r3 != r0) { + pc=0x4e9d8; + run_4e800(); return; } r3 = r2 < 16 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x451d8; - run_45000(); - return; + if(r3 != r0) { + pc=0x4e9d8; + run_4e800(); return; } - case 0x44f88: + case 0x4e788: r3 = r17 | 1; r2 = r2 | 1; r17 = r16 + r17; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + page[(r16+4)>>>2] = 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 = 0x44fac; - pc = 0x45800; - run_45800(); - return; - case 0x44fac: + page[(r18+8)>>>2] = r17; + page[(r17+4)>>>2] = r2; + r31=0x4e7ac; + pc=0x4f000; + run_4f000(); return; + case 0x4e7ac: r2 = r16 + 8; - /* 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; + pc=0x4e2d0; + continue; + case 0x4e7b8: + r3 = (r2&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x4e930; + run_4e800(); return; } - r3 = (r2 & 0xffffffffL) < (85 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x451f0; - run_45000(); - return; + r3 = (r2&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4e9f0; + run_4e800(); return; } r8 = r17 >>> 12; r8 = r8 + 110; r6 = r8 << 1; - /* Next insn is delay slot */ - pc = 0x44b4c; - run_44a00(); - return; - case 0x44fe4: + pc=0x4e34c; + continue; + case 0x4e7e4: 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) < (5&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x4e940; + run_4e800(); return; } - r4 = (r3 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4527c; - run_45200(); - return; + r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4ea7c; + run_4e800(); return; } - case 0x45000: - pc = 0x45000; + 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_45000() throws ExecutionException { /* 0x45000 - 0x45200 */ + private final void run_4e800() throws ExecutionException { /* 0x4e800 - 0x4f000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x45000: + for(;;) { + switch(pc) { + case 0x4e800: r4 = r3 + 91; r5 = r4 << 1; - case 0x45008: + case 0x4e808: r5 = r5 << 2; r5 = r18 + r5; - r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; - if (r3 == r5) { - /* Next insn is delay slot */ - pc = 0x4521c; - run_45200(); - return; + r3= page[(r5+8)>>>2]; + if(r3 == r5) { + pc=0x4ea1c; + continue; } r6 = r0 + -4; - case 0x45024: - r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + case 0x4e824: + r4= page[(r3+4)>>>2]; r4 = r4 & r6; r4 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4504c; + if(r4 == r0) { + pc=0x4e84c; continue; } - r3 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; - if (r5 != r3) { - /* Next insn is delay slot */ - pc = 0x45024; + r3= page[(r3+8)>>>2]; + if(r5 != r3) { + pc=0x4e824; continue; } - 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: + case 0x4e84c: + r4= page[(r3+12)>>>2]; + r2= page[(r18+4)>>>2]; + case 0x4e854: + page[(r16+12)>>>2] = r4; + page[(r16+8)>>>2] = r3; + page[(r4+8)>>>2] = r16; + page[(r3+12)>>>2] = r16; + pc=0x4e458; + run_4e000(); return; + case 0x4e86c: 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; + page[(r16+4)>>>2] = r17; + page[(r18+20)>>>2] = r2; + page[(r18+16)>>>2] = r2; + page[(r2+4)>>>2] = r4; + page[(r2+12)>>>2] = r9; + page[(r2+8)>>>2] = r9; r2 = r2 + r3; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + page[(r2+0)>>>2] = r3; r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x450a4; - pc = 0x45800; - run_45800(); - return; - case 0x450a4: + r31=0x4e8a4; + pc=0x4f000; + run_4f000(); return; + case 0x4e8a4: r2 = r16 + 8; - /* 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: + pc=0x4e2d0; + run_4e000(); return; + case 0x4e8b0: + r2= page[(r18+4)>>>2]; + pc=0x4e458; + run_4e000(); return; + case 0x4e8bc: r11 = r11 + 1; r2 = r11 & 3; r6 = r6 + 8; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x44cac; - run_44c00(); - return; + if(r2 != r0) { + pc=0x4e4ac; + run_4e000(); return; } - /* Next insn is delay slot */ - pc = 0x45178; + pc=0x4e978; continue; - case 0x450d8: + case 0x4e8d8: r2 = r16 + 8; - r16 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r16= page[(r16+20)>>>2]; r7 = r7 + 2; - if (r2 == r16) { - /* Next insn is delay slot */ - pc = 0x44bd4; - run_44a00(); - return; + if(r2 == r16) { + pc=0x4e3d4; + run_4e000(); return; } - /* Next insn is delay slot */ - pc = 0x44a90; - run_44a00(); - return; - case 0x450f4: + pc=0x4e290; + run_4e000(); return; + case 0x4e8f4: r3 = r16 + r3; - r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r2= page[(r3+4)>>>2]; 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 = 0x45124; - pc = 0x45800; - run_45800(); - return; - case 0x45124: + page[(r3+4)>>>2] = r2; + r2= page[(r16+12)>>>2]; + r3= page[(r16+8)>>>2]; + page[(r3+12)>>>2] = r2; + page[(r2+8)>>>2] = r3; + r31=0x4e924; + pc=0x4f000; + run_4f000(); return; + case 0x4e924: r2 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x44ad0; - run_44a00(); - return; - case 0x45130: + pc=0x4e2d0; + run_4e000(); return; + case 0x4e930: r8 = r2 + 91; r6 = r8 << 1; - /* Next insn is delay slot */ - pc = 0x44b4c; - run_44a00(); - return; - case 0x45140: + pc=0x4e34c; + run_4e000(); return; + case 0x4e940: r4 = r2 >>> 6; r4 = r4 + 56; r5 = r4 << 1; - /* Next insn is delay slot */ - pc = 0x45008; + pc=0x4e808; continue; - case 0x45154: - if (r16 != r18) { - /* Next insn is delay slot */ - pc = 0x44f58; - run_44e00(); - return; + case 0x4e954: + if(r16 != r18) { + pc=0x4e758; + run_4e000(); return; } - /* Next insn is delay slot */ - pc = 0x44e38; - run_44e00(); - return; - case 0x45164: + pc=0x4e638; + run_4e000(); return; + case 0x4e964: r2 = r10 + -8; - r10 = readPages[(r10 + 0) >>> 12][((r10 + 0) >>> 2) & 0x3ff]; + r10= page[(r10+0)>>>2]; r7 = r7 + -1; - if (r10 != r2) { - /* Next insn is delay slot */ - pc = 0x4535c; - run_45200(); - return; - } - case 0x45178: - r2 = r7 & 3; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x45164; + if(r10 != r2) { + pc=0x4eb5c; continue; } - r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + case 0x4e978: + r2 = r7 & 3; + if(r2 != r0) { + pc=0x4e964; + continue; + } + r2= page[(r18+4)>>>2]; r3 = ~(r0 | r4); r2 = r3 & r2; - writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; - case 0x45194: + page[(r18+4)>>>2] = r2; + case 0x4e994: r4 = r4 << 1; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44da0; - run_44c00(); - return; + if(r3 != r0) { + pc=0x4e5a0; + run_4e000(); return; } - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x44da0; - run_44c00(); - return; + if(r4 == r0) { + pc=0x4e5a0; + run_4e000(); return; } r3 = r2 & r4; r7 = r11 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x44c9c; - run_44c00(); - return; + if(r3 != r0) { + pc=0x4e49c; + run_4e000(); return; } - case 0x451bc: + case 0x4e9bc: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x451bc; + if(r3 == r0) { + pc=0x4e9bc; continue; } - /* Next insn is delay slot */ - pc = 0x44c9c; - run_44c00(); - return; - case 0x451d8: + pc=0x4e49c; + run_4e000(); return; + case 0x4e9d8: r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x451e4; - pc = 0x45800; - run_45800(); - return; - case 0x451e4: + r31=0x4e9e4; + pc=0x4f000; + run_4f000(); return; + case 0x4e9e4: r2 = r0 + r0; - /* 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; + pc=0x4e2d0; + run_4e000(); return; + case 0x4e9f0: + r3 = (r2&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4ea5c; + continue; } r8 = r17 >>> 15; - case 0x45200: - pc = 0x45200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_45200() throws ExecutionException { /* 0x45200 - 0x45400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x45200: r8 = r8 + 119; r6 = r8 << 1; - /* Next insn is delay slot */ - pc = 0x44b4c; - run_44a00(); - return; - case 0x45210: + pc=0x4e34c; + run_4e000(); return; + case 0x4ea10: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x44e88; - run_44e00(); - return; - case 0x4521c: + pc=0x4e688; + run_4e000(); return; + case 0x4ea1c: r2 = r0 + 1; r4 = r4 >> 2; - r4 = r2 << (r4 & 0x1f); - r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r4 = r2 << (r4&0x1f); + r2= page[(r18+4)>>>2]; r2 = r4 | r2; - writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; + page[(r18+4)>>>2] = r2; r4 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x45054; - run_45000(); - return; - case 0x45244: + pc=0x4e854; + continue; + case 0x4ea44: r2 = r0 + 1; - writePages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff] = r2; + page[(r20+4)>>>2] = r2; r16 = r20 + r0; r3 = r0 + r0; - /* 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; + pc=0x4e76c; + run_4e000(); return; + case 0x4ea5c: + r2 = (r2&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x4ea9c; continue; } r8 = r17 >>> 18; r8 = r8 + 124; r6 = r8 << 1; - /* 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; + pc=0x4e34c; + run_4e000(); return; + case 0x4ea7c: + r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4eb0c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r5 = r4 << 1; - /* Next insn is delay slot */ - pc = 0x45008; - run_45000(); - return; - case 0x4529c: + pc=0x4e808; + continue; + case 0x4ea9c: r6 = r0 + 252; r8 = r0 + 126; - /* Next insn is delay slot */ - pc = 0x44b4c; - run_44a00(); - return; - case 0x452ac: + pc=0x4e34c; + run_4e000(); return; + case 0x4eaac: r5 = r30 & r4; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x44e54; - run_44e00(); - return; + if(r5 != r0) { + pc=0x4e654; + run_4e000(); return; } - r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r3= page[(r18+8)>>>2]; r4 = r22 + r21; r4 = r4 | 1; - 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: + page[(r3+4)>>>2] = r4; + pc=0x4e728; + run_4e000(); return; + case 0x4ead0: + page[(r28+-31508)>>>2] = r20; + pc=0x4e670; + run_4e000(); return; + case 0x4eadc: r4 = r19 + r0; r5 = r16 + 8; - /* Next insn is delay slot */ - r31 = 0x452ec; - pc = 0x42c00; - run_42c00(); - return; - case 0x452ec: + r31=0x4eaec; + pc=0x4c400; + run_4c000(); return; + case 0x4eaec: r2 = 6 << 16; - r2 = readPages[(r2 + -10368) >>> 12][((r2 + -10368) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x44f28; - run_44e00(); - return; - case 0x452fc: + r2= page[(r2+31280)>>>2]; + pc=0x4e728; + run_4e000(); return; + case 0x4eafc: r4 = r0 + 1; r22 = r0 + r0; - /* 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; + pc=0x4e6c8; + run_4e000(); return; + case 0x4eb0c: + r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x4eb2c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r5 = r4 << 1; - /* 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; + pc=0x4e808; + continue; + case 0x4eb2c: + r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x4eb4c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r5 = r4 << 1; - /* Next insn is delay slot */ - pc = 0x45008; - run_45000(); - return; - case 0x4534c: + pc=0x4e808; + continue; + case 0x4eb4c: r5 = r0 + 252; r4 = r0 + 126; - /* Next insn is delay slot */ - pc = 0x45008; - run_45000(); - return; - 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_45400() throws ExecutionException { /* 0x45400 - 0x45600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x45400: - r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4549c; + pc=0x4e808; + continue; + case 0x4eb5c: + r2= page[(r18+4)>>>2]; + pc=0x4e994; + continue; + case 0x4ec00: + r2 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x4ec9c; continue; } r2 = r4 | r5; r2 = r2 & 3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x45470; + if(r2 == r0) { + pc=0x4ec70; continue; } - case 0x4541c: - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x4ec1c: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r7 = tmp; - addr = r5 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - if (r7 != r2) { - /* Next insn is delay slot */ - pc = 0x454ac; + if(r7 != r2) { + pc=0x4ecac; continue; } r6 = r6 + -1; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x45454; + pc=0x4ec54; continue; - case 0x45440: - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x4ec40: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r7 = tmp; - addr = r5 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r3 + 1; - if (r7 != r2) { - /* Next insn is delay slot */ - pc = 0x454ac; + if(r7 != r2) { + pc=0x4ecac; continue; } - case 0x45454: + case 0x4ec54: r4 = r4 + 1; r5 = r5 + 1; - if (r3 != r6) { - /* Next insn is delay slot */ - pc = 0x45440; + if(r3 != r6) { + pc=0x4ec40; continue; } - case 0x45464: + case 0x4ec64: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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; + case 0x4ec70: + r3= page[(r4+0)>>>2]; + r2= page[(r5+0)>>>2]; + if(r3 != r2) { + pc=0x4ec9c; continue; } r6 = r6 + -4; - r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + r2 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; r4 = r4 + 4; r5 = r5 + 4; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x45470; + if(r2 == r0) { + pc=0x4ec70; continue; } - case 0x4549c: - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x4541c; + case 0x4ec9c: + if(r6 != r0) { + pc=0x4ec1c; continue; } - /* Next insn is delay slot */ - pc = 0x45464; + pc=0x4ec64; continue; - case 0x454ac: + case 0x4ecac: r2 = r7 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x45600: - pc = 0x45600; + case 0x4ee00: + pc=r31; return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + case 0x4f000: + pc=0x4f000; + 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_4f000() throws ExecutionException { /* 0x4f000 - 0x4f800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x45600: - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x4f000: + pc=r31; return; - case 0x45800: - pc = 0x45800; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_45800() throws ExecutionException { /* 0x45800 - 0x45a00 */ - int addr, tmp; - 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: + case 0x4f200: r29 = r29 + -32; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r6; + page[(r29+40)>>>2] = r6; r6 = r4 + r0; - 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]; + r4= page[(r28+-31512)>>>2]; + page[(r29+44)>>>2] = r7; + page[(r29+36)>>>2] = r5; + r5= page[(r4+8)>>>2]; 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 = 0x45a30; - pc = 0x4ae00; - run_4ae00(); - return; - case 0x45a30: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + page[(r29+28)>>>2] = r31; + page[(r29+16)>>>2] = r7; + r31=0x4f230; + pc=0x54600; + run_54000(); return; + case 0x4f230: + r31= page[(r29+28)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x45c00: - pc = 0x45c00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_45c00() throws ExecutionException { /* 0x45c00 - 0x45e00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x45c00: + case 0x4f400: r29 = r29 + -32; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + page[(r29+24)>>>2] = r16; + page[(r29+28)>>>2] = r31; r16 = r4 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x45c28; + if(r4 == r0) { + pc=0x4f428; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x45cc8; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x4f4c8; continue; } - case 0x45c28: - r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + case 0x4f428: + r2= page[(r6+8)>>>2]; r2 = r2 + -1; - writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x45c74; + page[(r6+8)>>>2] = r2; + if(r2 < 0) { + pc=0x4f474; 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 0x45c54: + r2= page[(r6+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r6+0)>>>2]; + case 0x4f454: 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= page[(r29+28)>>>2]; + page[(r6+0)>>>2] = r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16= page[(r29+24)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x45c74: - r3 = readPages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff]; + case 0x4f474: + r3= page[(r6+24)>>>2]; r2 = r2 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x45ce8; + if(r2 != r0) { + pc=0x4f4e8; continue; } - r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r2= page[(r6+0)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r6+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; - if (r4 != r3) { - /* Next insn is delay slot */ - pc = 0x45c54; + if(r4 != r3) { + pc=0x4f454; continue; } - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31= page[(r29+28)>>>2]; r4 = r16 + r0; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16= page[(r29+24)>>>2]; r5 = r0 + 10; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = 0x4d200; - run_4d200(); - return; - 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; + pc=0x56a00; + run_56800(); return; + case 0x4f4c8: + page[(r29+16)>>>2] = r5; + page[(r29+20)>>>2] = r6; + r31=0x4f4d8; + pc=0x4ac00; + run_4a800(); return; + case 0x4f4d8: + r6= page[(r29+20)>>>2]; + r5= page[(r29+16)>>>2]; + pc=0x4f428; continue; - case 0x45ce8: - r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + case 0x4f4e8: + r31= page[(r29+28)>>>2]; r4 = r16 + r0; - r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16= page[(r29+24)>>>2]; 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_45e00() throws ExecutionException { /* 0x45e00 - 0x46000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x45e00: + pc=0x56a00; + run_56800(); return; + case 0x4f600: r29 = r29 + -64; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r17; + page[(r29+56)>>>2] = 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; + page[(r29+52)>>>2] = r16; + page[(r29+60)>>>2] = r31; r16 = r5 + r0; - /* Next insn is delay slot */ - r31 = 0x45e24; - pc = 0x10268; - run_10200(); - return; - case 0x45e24: - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r31=0x4f624; + pc=0x10268; + run_10000(); return; + case 0x4f624: + page[(r29+20)>>>2] = r2; r2 = r2 + 1; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; + page[(r29+40)>>>2] = r2; r2 = r29 + 16; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + page[(r29+32)>>>2] = r2; r2 = r0 + 2; - 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; + page[(r29+36)>>>2] = r2; + r2= page[(r28+-31512)>>>2]; + r3 = 6 << 16; + r3 = r3 + -4040; + r2= page[(r2+8)>>>2]; + page[(r29+24)>>>2] = 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 */ + page[(r29+28)>>>2] = r3; + addr=r2+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = r16; r4 = r3 & 8192; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x45e88; + if(r4 != r0) { + pc=0x4f688; 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= page[(r2+100)>>>2]; + addr=r2+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + -8193; r3 = r4 & r3; - writePages[(r2 + 100) >>> 12][((r2 + 100) >>> 2) & 0x3ff] = r3; - case 0x45e88: - r5 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + page[(r2+100)>>>2] = r3; + case 0x4f688: + r5= page[(r17+8)>>>2]; r4 = r17 + r0; r6 = r29 + 32; - /* Next insn is delay slot */ - r31 = 0x45e9c; - pc = 0x50600; - run_50600(); - return; - case 0x45e9c: + r31=0x4f69c; + pc=0x59e00; + run_59800(); return; + case 0x4f69c: r3 = r0 + 10; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x45ec4; + if(r2 != r0) { + pc=0x4f6c4; continue; } - 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]; + case 0x4f6a8: + r31= page[(r29+60)>>>2]; + r17= page[(r29+56)>>>2]; + r16= page[(r29+52)>>>2]; r2 = r3 + r0; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x45ec4: + case 0x4f6c4: r3 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x45ea8; + pc=0x4f6a8; continue; - case 0x46000: - pc = 0x46000; + 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_46000() throws ExecutionException { /* 0x46000 - 0x46200 */ + private final void run_4f800() throws ExecutionException { /* 0x4f800 - 0x50000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x46000: + for(;;) { + switch(pc) { + case 0x4f800: r5 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x45e00; - run_45e00(); - return; - case 0x46200: - pc = 0x46200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_46200() throws ExecutionException { /* 0x46200 - 0x46400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x46200: + r4= page[(r28+-31512)>>>2]; + pc=0x4f600; + run_4f000(); return; + case 0x4fa00: r2 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x46400; - run_46400(); - return; - case 0x46400: - pc = 0x46400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_46400() throws ExecutionException { /* 0x46400 - 0x46600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x46400: + pc=0x4fc00; + continue; + case 0x4fc00: 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; + page[(r29+32)>>>2] = r20; + page[(r29+16)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; + page[(r29+44)>>>2] = r23; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; r16 = r5 + r0; r20 = r6 + r0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4674c; - run_46600(); - return; + if(r5 == r0) { + pc=0x4ff4c; + continue; } r21 = r4 + r0; - /* Next insn is delay slot */ - r31 = 0x46448; - pc = 0x45600; - run_45600(); - return; - case 0x46448: - r3 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; + r31=0x4fc48; + pc=0x4ee00; + run_4e800(); return; + case 0x4fc48: + r3= page[(r16+-4)>>>2]; 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 = 0x4658c; + if(r4 == r0) { + pc=0x4fd8c; continue; } r4 = r0 + 16; r18 = r0 + 16; - case 0x46470: + case 0x4fc70: r2 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x465a0; + if(r2 != r0) { + pc=0x4fda0; continue; } r2 = r17 < r4 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x465e0; + if(r2 == r0) { + pc=0x4fde0; continue; } r23 = 6 << 16; - r23 = r23 + -16464; - r5 = readPages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff]; + r23 = r23 + 25176; + r5= page[(r23+8)>>>2]; r2 = r19 + r17; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x46784; - run_46600(); - return; + if(r5 == r2) { + pc=0x4ff84; + continue; } - r6 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r6= page[(r2+4)>>>2]; r7 = r0 + -2; r7 = r6 & r7; r7 = r2 + r7; - r7 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; + r7= page[(r7+4)>>>2]; r7 = r7 & 1; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x465b4; + if(r7 == r0) { + pc=0x4fdb4; continue; } r6 = r0 + r0; r2 = r0 + r0; - case 0x464cc: + case 0x4fccc: r3 = r3 & 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x466a4; - run_46600(); - return; + if(r3 != r0) { + pc=0x4fea4; + continue; } - r22 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; + r22= page[(r16+-8)>>>2]; r3 = r0 + -4; r22 = r19 - r22; - r7 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; + r7= page[(r22+4)>>>2]; r3 = r7 & r3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46898; - run_46800(); - return; + if(r2 == r0) { + pc=0x50098; + run_50000(); return; } r3 = r3 + r17; - if (r2 == r5) { - /* Next insn is delay slot */ - pc = 0x468a4; - run_46800(); - return; + if(r2 == r5) { + pc=0x500a4; + run_50000(); return; } r23 = r6 + r3; r5 = r23 < r4 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x46694; - run_46600(); - return; + if(r5 != r0) { + pc=0x4fe94; + continue; } - 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]; + r3= page[(r2+12)>>>2]; + r2= page[(r2+8)>>>2]; + page[(r2+12)>>>2] = r3; + page[(r3+8)>>>2] = r2; + case 0x4fd28: + r2= page[(r22+12)>>>2]; + r3= page[(r22+8)>>>2]; 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; + page[(r3+12)>>>2] = r2; + page[(r2+8)>>>2] = r3; + r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; r19 = r22 + 8; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46870; - run_46800(); - return; + if(r2 == r0) { + pc=0x50070; + run_50000(); return; } - r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x467e4; - run_46600(); - return; + r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x4ffe4; + continue; } - 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; + r2= page[(r16+0)>>>2]; + page[(r22+8)>>>2] = r2; + r2= page[(r16+4)>>>2]; + page[(r22+12)>>>2] = r2; + r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x501c0; + run_50000(); return; } r3 = r22 + 16; r16 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x467e8; - run_46600(); - return; - case 0x4658c: + pc=0x4ffe8; + continue; + case 0x4fd8c: r18 = r0 + -8; r18 = r2 & r18; r4 = r18 + r0; - if (r18 >= 0) { - /* Next insn is delay slot */ - pc = 0x46470; + if(r18 >= 0) { + pc=0x4fc70; continue; } - case 0x465a0: + case 0x4fda0: r2 = r0 + 12; - writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r2; + page[(r21+0)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x46620; - run_46600(); - return; - case 0x465b4: + pc=0x4fe20; + continue; + case 0x4fdb4: r7 = r0 + -4; r6 = r6 & r7; r7 = r6 + r17; r8 = r7 < r4 ? 1 : 0; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x464cc; + if(r8 != r0) { + pc=0x4fccc; continue; } - r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; - r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4= page[(r2+12)>>>2]; + r2= page[(r2+8)>>>2]; r17 = r7 + r0; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r4; - writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; - case 0x465e0: + page[(r2+12)>>>2] = r4; + page[(r4+8)>>>2] = r2; + case 0x4fde0: r6 = r17 - r18; - r2 = (r6 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46654; - run_46600(); - return; + r2 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x4fe54; + continue; } r3 = r3 & 1; r3 = r3 | r17; - writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r3; + page[(r19+4)>>>2] = r3; r17 = r19 + r17; - case 0x46600: - pc = 0x46600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_46600() throws ExecutionException { /* 0x46600 - 0x46800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x46600: - r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2= page[(r17+4)>>>2]; r2 = r2 | 1; - writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r2; - case 0x46610: + page[(r17+4)>>>2] = r2; + case 0x4fe10: r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x4661c; - pc = 0x45800; - run_45800(); - return; - case 0x4661c: + r31=0x4fe1c; + pc=0x4f000; + run_4f000(); return; + case 0x4fe1c: 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]; + case 0x4fe20: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x46654: + case 0x4fe54: r3 = r3 & 1; r5 = r19 + r18; r2 = r6 | 1; r18 = r3 | r18; - writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r18; + page[(r19+4)>>>2] = r18; r6 = r5 + r6; - writePages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; + page[(r5+4)>>>2] = r2; + r2= page[(r6+4)>>>2]; r4 = r21 + r0; r2 = r2 | 1; - writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r2; + page[(r6+4)>>>2] = r2; r5 = r5 + 8; - /* Next insn is delay slot */ - r31 = 0x4668c; - pc = 0x42c00; - run_42c00(); - return; - case 0x4668c: - /* Next insn is delay slot */ - pc = 0x46610; + r31=0x4fe8c; + pc=0x4c400; + run_4c000(); return; + case 0x4fe8c: + pc=0x4fe10; continue; - case 0x46694: + case 0x4fe94: r23 = r3 + r0; - case 0x46698: + case 0x4fe98: r4 = r23 < r4 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x46528; - run_46400(); - return; + if(r4 == r0) { + pc=0x4fd28; + continue; } - case 0x466a4: + case 0x4fea4: r5 = r20 + r0; r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x466b4; - pc = 0x44a00; - run_44a00(); - return; - case 0x466b4: + r31=0x4feb4; + pc=0x4e200; + run_4e000(); return; + case 0x4feb4: r20 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46a8c; - run_46a00(); - return; + if(r2 == r0) { + pc=0x5028c; + run_50000(); return; } - r3 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; + r3= page[(r16+-4)>>>2]; r4 = r2 + -8; r2 = r0 + -2; r2 = r3 & r2; r2 = r19 + r2; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x469a8; - run_46800(); - return; + if(r4 == r2) { + pc=0x501a8; + run_50000(); return; } r6 = r17 + -4; - r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46858; - run_46800(); - return; + r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x50058; + run_50000(); return; } - r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x467b0; + r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x4ffb0; continue; } r2 = r20 + r0; r3 = r16 + r0; - 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: + case 0x4ff00: + r4= page[(r3+0)>>>2]; + page[(r2+0)>>>2] = r4; + r4= page[(r3+4)>>>2]; + page[(r2+4)>>>2] = r4; + r3= page[(r3+8)>>>2]; + page[(r2+8)>>>2] = r3; + case 0x4ff24: r4 = r21 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x46734; - pc = 0x42c00; - run_42c00(); - return; - case 0x46734: + r31=0x4ff34; + pc=0x4c400; + run_4c000(); return; + case 0x4ff34: r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x46740; - pc = 0x45800; - run_45800(); - return; - case 0x46740: + r31=0x4ff40; + pc=0x4f000; + run_4f000(); return; + case 0x4ff40: r2 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x46620; + pc=0x4fe20; continue; - 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]; + case 0x4ff4c: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r5 = r6 + r0; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = 0x44a00; - run_44a00(); - return; - case 0x46784: - r6 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + pc=0x4e200; + run_4e000(); return; + case 0x4ff84: + r6= page[(r5+4)>>>2]; 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 = 0x4681c; - run_46800(); - return; + if(r7 == r0) { + pc=0x5001c; + run_50000(); return; } r2 = r5 + r0; - /* 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; + pc=0x4fccc; + continue; + case 0x4ffb0: + r2= page[(r16+0)>>>2]; + page[(r20+0)>>>2] = r2; + r2= page[(r16+4)>>>2]; + page[(r20+4)>>>2] = r2; + r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x50174; + run_50000(); return; } r2 = r20 + 8; r3 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x46700; + pc=0x4ff00; continue; - case 0x467e4: + case 0x4ffe4: r3 = r19 + r0; - case 0x467e8: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x4ffe8: + r2= page[(r16+0)>>>2]; 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 0x46800: - pc = 0x46800; + page[(r3+0)>>>2] = r2; + r2= page[(r16+4)>>>2]; + page[(r3+4)>>>2] = r2; + case 0x50000: + pc=0x50000; 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_46800() throws ExecutionException { /* 0x46800 - 0x46a00 */ + private final void run_50000() throws ExecutionException { /* 0x50000 - 0x50800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x46800: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x50000: + r2= page[(r16+8)>>>2]; r16 = r19 + r0; - writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; - r3 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; + page[(r3+8)>>>2] = r2; + r3= page[(r22+4)>>>2]; r19 = r22 + r0; - /* Next insn is delay slot */ - pc = 0x465e0; - run_46400(); - return; - case 0x4681c: + pc=0x4fde0; + run_4f800(); return; + case 0x5001c: 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]; + page[(r23+8)>>>2] = r19; + page[(r19+4)>>>2] = r2; + r2= page[(r16+-4)>>>2]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; - writePages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff] = r18; - /* Next insn is delay slot */ - r31 = 0x4684c; - pc = 0x45800; - run_45800(); - return; - case 0x4684c: + page[(r16+-4)>>>2] = r18; + r31=0x5004c; + pc=0x4f000; + run_4f000(); return; + case 0x5004c: r2 = r16 + r0; - /* Next insn is delay slot */ - pc = 0x46620; - run_46600(); - return; - case 0x46858: + pc=0x4fe20; + run_4f800(); return; + case 0x50058: r4 = r20 + r0; r5 = r16 + r0; - /* 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: + r31=0x50068; + pc=0x5ae00; + run_5a800(); return; + case 0x50068: + pc=0x4ff24; + run_4f800(); return; + case 0x50070: r4 = r19 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x46880; - pc = 0x51600; - run_51600(); - return; - case 0x46880: + r31=0x50080; + pc=0x5ae00; + run_5a800(); return; + case 0x50080: r16 = r19 + r0; - r3 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; + r3= page[(r22+4)>>>2]; r17 = r23 + r0; r19 = r22 + r0; - /* Next insn is delay slot */ - pc = 0x465e0; - run_46400(); - return; - case 0x46898: + pc=0x4fde0; + run_4f800(); return; + case 0x50098: r23 = r3 + r17; - /* Next insn is delay slot */ - pc = 0x46698; - run_46600(); - return; - case 0x468a4: + pc=0x4fe98; + run_4f800(); return; + case 0x500a4: r30 = r6 + r3; r2 = r18 + 16; r2 = r30 < r2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x46694; - run_46600(); - return; + if(r2 != r0) { + pc=0x4fe94; + run_4f800(); return; } - r2 = readPages[(r22 + 12) >>> 12][((r22 + 12) >>> 2) & 0x3ff]; - r3 = readPages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff]; + r2= page[(r22+12)>>>2]; + r3= page[(r22+8)>>>2]; 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; + page[(r3+12)>>>2] = r2; + page[(r2+8)>>>2] = r3; + r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; r19 = r22 + 8; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46a40; - run_46a00(); - return; + if(r2 == r0) { + pc=0x50240; + continue; } - r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x46a34; - run_46a00(); - return; + r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x50234; + continue; } - 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; + r2= page[(r16+0)>>>2]; + page[(r22+8)>>>2] = r2; + r2= page[(r16+4)>>>2]; + page[(r22+12)>>>2] = r2; + r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x50258; + continue; } r3 = r22 + 16; r16 = r16 + 8; - 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: + case 0x50114: + r2= page[(r16+0)>>>2]; + page[(r3+0)>>>2] = r2; + r2= page[(r16+4)>>>2]; + page[(r3+4)>>>2] = r2; + r2= page[(r16+8)>>>2]; + page[(r3+8)>>>2] = r2; + case 0x50138: 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]; + page[(r23+8)>>>2] = r3; + page[(r3+4)>>>2] = r2; + r2= page[(r22+4)>>>2]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; - writePages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff] = r18; - /* Next insn is delay slot */ - r31 = 0x46968; - pc = 0x45800; - run_45800(); - return; - case 0x46968: + page[(r22+4)>>>2] = r18; + r31=0x50168; + pc=0x4f000; + run_4f000(); return; + case 0x50168: r2 = r19 + r0; - /* 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; + pc=0x4fe20; + run_4f800(); return; + case 0x50174: + r2= page[(r16+8)>>>2]; + page[(r20+8)>>>2] = r2; + r2= page[(r16+12)>>>2]; + page[(r20+12)>>>2] = r2; r2 = r0 + 36; - if (r6 == r2) { - /* Next insn is delay slot */ - pc = 0x469f4; + if(r6 == r2) { + pc=0x501f4; continue; } r2 = r20 + 16; r3 = r16 + 16; - /* Next insn is delay slot */ - pc = 0x46700; - run_46600(); - return; - case 0x469a8: - r4 = readPages[(r20 + -4) >>> 12][((r20 + -4) >>> 2) & 0x3ff]; + pc=0x4ff00; + run_4f800(); return; + case 0x501a8: + r4= page[(r20+-4)>>>2]; r2 = r0 + -4; r2 = r4 & r2; r17 = r17 + 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; + pc=0x4fde0; + run_4f800(); return; + case 0x501c0: + r2= page[(r16+8)>>>2]; + page[(r22+16)>>>2] = r2; + r2= page[(r16+12)>>>2]; + page[(r22+20)>>>2] = r2; r2 = r0 + 36; - 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 = 0x467e8; - run_46600(); - return; - 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_46a00() throws ExecutionException { /* 0x46a00 - 0x46c00 */ - int addr, tmp; - 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 = 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]; - r16 = r16 + 24; - 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 = 0x46914; - run_46800(); - return; - case 0x46a40: - r4 = r19 + r0; - r5 = r16 + r0; - /* 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 = 0x46aa4; + if(r6 == r2) { + pc=0x50214; continue; } r3 = r22 + 24; r16 = r16 + 16; - /* Next insn is delay slot */ - pc = 0x46914; - run_46800(); - return; - 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]; + pc=0x4ffe8; + run_4f800(); return; + case 0x501f4: + r2= page[(r16+16)>>>2]; + r3 = r16 + 24; + page[(r20+16)>>>2] = r2; + r4= page[(r16+20)>>>2]; + r2 = r20 + 24; + page[(r20+20)>>>2] = r4; + pc=0x4ff00; + run_4f800(); return; + case 0x50214: + r2= page[(r16+16)>>>2]; r3 = r22 + 32; - writePages[(r22 + 24) >>> 12][((r22 + 24) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + page[(r22+24)>>>2] = r2; + r2= page[(r16+20)>>>2]; 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_46c00() throws ExecutionException { /* 0x46c00 - 0x46e00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x46c00: - addr = r4 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + page[(r22+28)>>>2] = r2; + pc=0x4ffe8; + run_4f800(); return; + case 0x50234: + r3 = r19 + r0; + pc=0x50114; + continue; + case 0x50240: + r4 = r19 + r0; + r5 = r16 + r0; + r31=0x50250; + pc=0x5ae00; + run_5a800(); return; + case 0x50250: + pc=0x50138; + continue; + case 0x50258: + r2= page[(r16+8)>>>2]; + page[(r22+16)>>>2] = r2; + r2= page[(r16+12)>>>2]; + page[(r22+20)>>>2] = r2; + r2 = r0 + 36; + if(r6 == r2) { + pc=0x502a4; + continue; + } + r3 = r22 + 24; + r16 = r16 + 16; + pc=0x50114; + continue; + case 0x5028c: + r4 = r21 + r0; + r31=0x50298; + pc=0x4f000; + run_4f000(); return; + case 0x50298: + r2 = r0 + r0; + pc=0x4fe20; + run_4f800(); return; + case 0x502a4: + r2= page[(r16+16)>>>2]; + r3 = r22 + 32; + page[(r22+24)>>>2] = r2; + r2= page[(r16+20)>>>2]; + r16 = r16 + 24; + page[(r22+28)>>>2] = r2; + pc=0x50114; + continue; + case 0x50400: + addr=r4+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 9; r3 = r3 & 9; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x46c20; + if(r3 == r2) { + pc=0x50420; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x46c20: - /* Next insn is delay slot */ - pc = 0x40e00; - run_40e00(); - return; - case 0x46e00: - pc = 0x46e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_46e00() throws ExecutionException { /* 0x46e00 - 0x47000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x46e00: + case 0x50420: + pc=0x4a600; + run_4a000(); return; + case 0x50600: 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; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; r17 = r4 + r0; r16 = r5 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x46e38; + if(r4 == r0) { + pc=0x50638; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x46fa0; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x507a0; continue; } - 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 */ + case 0x50638: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x46e6c; + if(r4 != r0) { + pc=0x5066c; continue; } - r4 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; + r4= page[(r16+100)>>>2]; 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; + page[(r16+100)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r3 & 65535; - case 0x46e6c: + case 0x5066c: r4 = r2 & 32; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x46f7c; + page[(r16+4)>>>2] = r0; + if(r4 != r0) { + pc=0x5077c; continue; } r4 = r2 & 4; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x46f3c; + if(r4 == r0) { + pc=0x5073c; continue; } - r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x46ec4; + r5= page[(r16+48)>>>2]; + if(r5 == r0) { + pc=0x506c4; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x46eb0; + if(r5 == r2) { + pc=0x506b0; continue; } r4 = r17 + r0; - /* 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; + r31=0x506b0; + pc=0x4c400; + run_4c000(); return; + case 0x506b0: + r2= page[(r16+60)>>>2]; + page[(r16+48)>>>2] = r0; + page[(r16+4)>>>2] = r2; + if(r2 != r0) { + pc=0x5086c; + run_50800(); 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 0x506c4: + r2= page[(r16+16)>>>2]; + if(r2 == r0) { + pc=0x50898; + run_50800(); return; } - 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 */ + case 0x506d4: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r19 = tmp; r18 = r19 & 65535; r2 = r18 & 3; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x46fb0; + if(r2 != r0) { + pc=0x507b0; continue; } - 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; + case 0x506ec: + r6= page[(r16+16)>>>2]; + r2= page[(r16+32)>>>2]; + r5= page[(r16+28)>>>2]; + r7= page[(r16+20)>>>2]; + page[(r16+0)>>>2] = r6; r4 = r17 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x46f0c; + pc=r2; + r31=0x5070c; return; - case 0x46f0c: - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x46f64; + case 0x5070c: + page[(r16+4)>>>2] = r2; + if(r2 <= 0) { + pc=0x50764; continue; } r2 = r0 + r0; - 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]; + case 0x5071c: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x46f3c: + case 0x5073c: r4 = r2 & 16; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x470b0; - run_47000(); - return; + if(r4 == r0) { + pc=0x508b0; + run_50800(); return; } r2 = r2 & 8; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4702c; - run_47000(); - return; + if(r2 != r0) { + pc=0x5082c; + run_50800(); 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 = 0x46ec4; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + pc=0x506c4; continue; - case 0x46f64: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x46ff8; + case 0x50764: + if(r2 != r0) { + pc=0x507f8; continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 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]; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x5077c: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + -1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x46fa0: - /* Next insn is delay slot */ - r31 = 0x46fa8; - pc = 0x41400; - run_41400(); - return; - case 0x46fa8: - /* Next insn is delay slot */ - pc = 0x46e38; + case 0x507a0: + r31=0x507a8; + pc=0x4ac00; + run_4a800(); return; + case 0x507a8: + pc=0x50638; continue; - case 0x46fb0: + case 0x507b0: r2 = r0 + 1; - 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 + 27648; - /* Next insn is delay slot */ - r31 = 0x46fcc; - pc = 0x43800; - run_43800(); - return; - case 0x46fcc: + r4= page[(r28+-31516)>>>2]; + r5 = 5 << 16; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r5 = r5 + 1024; + r31=0x507cc; + pc=0x4d000; + run_4d000(); return; + case 0x507cc: 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 = 0x46eec; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r19&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + if(r18 != r2) { + pc=0x506ec; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x46ff0; - pc = 0x40800; - run_40800(); - return; - case 0x46ff0: - /* Next insn is delay slot */ - pc = 0x46eec; + r31=0x507f0; + pc=0x4a000; + run_4a000(); return; + case 0x507f0: + pc=0x506ec; continue; - case 0x46ff8: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x507f8: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; - case 0x47000: - pc = 0x47000; + r31= page[(r29+36)>>>2]; + 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_47000() throws ExecutionException { /* 0x47000 - 0x47200 */ + private final void run_50800() throws ExecutionException { /* 0x50800 - 0x51000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x47000: + for(;;) { + switch(pc) { + case 0x50800: 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + page[(r16+4)>>>2] = r0; r2 = r0 + -1; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4702c: + case 0x5082c: r4 = r17 + r0; r5 = r16 + r0; - /* 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; + r31=0x5083c; + pc=0x4a400; + run_4a000(); return; + case 0x5083c: + if(r2 != r0) { + pc=0x5077c; + run_50000(); return; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + page[(r16+8)>>>2] = 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 = 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]; + page[(r16+24)>>>2] = r0; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + pc=0x506c4; + run_50000(); return; + case 0x5086c: + r2= page[(r16+56)>>>2]; + r31= page[(r29+36)>>>2]; + page[(r16+0)>>>2] = r2; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r2 = r0 + r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47098: + case 0x50898: r4 = r17 + r0; r5 = r16 + r0; - /* 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: + r31=0x508a8; + pc=0x4dc00; + run_4d800(); return; + case 0x508a8: + pc=0x506d4; + run_50000(); return; + case 0x508b0: 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; + page[(r17+0)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x46f1c; - run_46e00(); - return; - case 0x47200: - pc = 0x47200; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47200() throws ExecutionException { /* 0x47200 - 0x47400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x47200: + pc=0x5071c; + run_50000(); return; + case 0x50a00: 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; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; r17 = r4 + r0; r16 = r5 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x47230; + if(r4 == r0) { + pc=0x50a30; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x47284; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x50a84; continue; } - case 0x47230: + case 0x50a30: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x47240; - pc = 0x46e00; - run_46e00(); - return; - case 0x47240: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x47294; + r31=0x50a40; + pc=0x50600; + run_50000(); return; + case 0x50a40: + if(r2 != r0) { + pc=0x50a94; continue; } - r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2= page[(r16+4)>>>2]; r2 = r2 + -1; - writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + page[(r16+4)>>>2] = r2; + r2= page[(r16+0)>>>2]; 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; + page[(r16+0)>>>2] = r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - 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]; + case 0x50a6c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47284: - /* Next insn is delay slot */ - r31 = 0x4728c; - pc = 0x41400; - run_41400(); - return; - case 0x4728c: - /* Next insn is delay slot */ - pc = 0x47230; + case 0x50a84: + r31=0x50a8c; + pc=0x4ac00; + run_4a800(); return; + case 0x50a8c: + pc=0x50a30; continue; - case 0x47294: + case 0x50a94: r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x4726c; + pc=0x50a6c; continue; - case 0x47400: - pc = 0x47400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47400() throws ExecutionException { /* 0x47400 - 0x47600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x47400: + case 0x50c00: 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = 32767 << 16; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r4; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r4; + page[(r29+16)>>>2] = r4; + page[(r29+32)>>>2] = r4; r2 = r2 | 65535; - 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; + r4= page[(r28+-31512)>>>2]; + page[(r29+144)>>>2] = r6; + page[(r29+148)>>>2] = r7; + page[(r29+24)>>>2] = r2; + page[(r29+36)>>>2] = 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 = 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]; + page[(r29+132)>>>2] = r31; + addr=r29+30; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+120)>>>2] = r7; + r31=0x50c54; + pc=0x52200; + run_52000(); return; + case 0x50c54: + r3= page[(r29+16)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r31= page[(r29+132)>>>2]; r29 = r29 + 136; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47600: - pc = 0x47600; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47600() throws ExecutionException { /* 0x47600 - 0x47800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x47600: + case 0x50e00: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; - 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; + page[(r29+20)>>>2] = r31; + r31=0x50e1c; + pc=0x56e90; + run_56800(); return; + case 0x50e1c: + if(r2 < 0) { + pc=0x50e44; continue; } - r3 = readPages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff]; - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3= page[(r16+80)>>>2]; + r31= page[(r29+20)>>>2]; r3 = r3 + r2; - writePages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff] = r3; - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + page[(r16+80)>>>2] = r3; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47644: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x50e44: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47800: - pc = 0x47800; + 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_47800() throws ExecutionException { /* 0x47800 - 0x47a00 */ + private final void run_51000() throws ExecutionException { /* 0x51000 - 0x51800 */ int addr, tmp; - 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 */ + for(;;) { + switch(pc) { + case 0x51000: + addr=r5+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; 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; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; + page[(r29+36)>>>2] = r31; r19 = r4 + r0; r16 = r5 + r0; r18 = r6 + r0; r17 = r7 + r0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x47850; + if(r3 == r0) { + pc=0x51050; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; r6 = r0 + r0; r7 = r0 + 2; - /* 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 */ + r31=0x5104c; + pc=0x56f90; + run_56800(); return; + case 0x5104c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; - case 0x47850: + case 0x51050: 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= page[(r29+36)>>>2]; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; - r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; - r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r19= page[(r29+32)>>>2]; + r16= page[(r29+20)>>>2]; 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= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4d6d0; - run_4d600(); - return; - case 0x47a00: - pc = 0x47a00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47a00() throws ExecutionException { /* 0x47a00 - 0x47c00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x47a00: + pc=0x56ed0; + run_56800(); return; + case 0x51200: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; - /* Next insn is delay slot */ - r31 = 0x47a1c; - pc = 0x4d790; - run_4d600(); - return; - case 0x47a1c: + page[(r29+20)>>>2] = r31; + r31=0x5121c; + pc=0x56f90; + run_56800(); return; + case 0x5121c: r3 = r0 + -1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x47a4c; + if(r2 == r3) { + pc=0x5124c; continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r16+80)>>>2] = r2; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47a4c: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x5124c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r31= page[(r29+20)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47c00: - pc = 0x47c00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47c00() throws ExecutionException { /* 0x47c00 - 0x47e00 */ - int addr, tmp; - 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 */ + case 0x51400: + addr=r5+14; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r5 = tmp; - /* Next insn is delay slot */ - pc = 0x4d650; - run_4d600(); - return; - case 0x47e00: - pc = 0x47e00; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_47e00() throws ExecutionException { /* 0x47e00 - 0x48000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x47e00: + pc=0x56e50; + run_56800(); return; + case 0x51600: r2 = r4 | r5; r2 = r2 & 1; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x47e68; + if(r2 != r0) { + pc=0x51668; continue; } - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - /* Next insn is delay slot */ - pc = 0x47e44; + pc=0x51644; continue; - case 0x47e1c: - addr = r4 + -1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x5161c: + addr=r4+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x47e54; + if(r3 != r2) { + pc=0x51654; continue; } - addr = r5 + 1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r5+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r5 = r5 + 2; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x47e8c; + if(r6 == r0) { + pc=0x5168c; continue; } - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - if (r6 != r2) { - /* Next insn is delay slot */ - pc = 0x47e8c; + if(r6 != r2) { + pc=0x5168c; continue; } - case 0x47e44: - addr = r5 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x51644: + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r4 = r4 + 2; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x47e1c; + if(r3 != r0) { + pc=0x5161c; continue; } - case 0x47e54: + case 0x51654: r2 = r3 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47e60: - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x47e54; + case 0x51660: + if(r3 != r2) { + pc=0x51654; continue; } - case 0x47e68: + case 0x51668: r4 = r4 + 1; - addr = r4 + -1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r4+-1; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x47e60; + if(r3 != r0) { + pc=0x51660; continue; } r2 = r3 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x47e8c: + case 0x5168c: r2 = r6 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x48000: - pc = 0x48000; + 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_48000() throws ExecutionException { /* 0x48000 - 0x48200 */ + private final void run_51800() throws ExecutionException { /* 0x51800 - 0x52000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x48000: + for(;;) { + switch(pc) { + case 0x51800: r3 = r4 | r5; r3 = r3 & 3; r2 = r4 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x48090; + if(r3 != r0) { + pc=0x51890; continue; } - r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r6= page[(r5+0)>>>2]; r10 = 65278 << 16; r10 = r10 | 65279; r4 = ~(r0 | r6); @@ -52159,199 +58265,159 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r4 & r3; r9 = r9 | 32896; r3 = r3 & r9; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x48090; + if(r3 != r0) { + pc=0x51890; continue; } r3 = r2 + r0; - case 0x48044: + case 0x51844: r3 = r3 + 4; r5 = r5 + 4; - writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r6; - r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + page[(r3+-4)>>>2] = r6; + r6= page[(r5+0)>>>2]; r8 = ~(r0 | r6); r7 = r6 + r10; r7 = r8 & r7; r7 = r7 & r9; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x48044; + if(r7 == r0) { + pc=0x51844; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x48094; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r6 != r0) { + pc=0x51894; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x48090: + case 0x51890: r3 = r2 + r0; - case 0x48094: + case 0x51894: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x48094; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r6 != r0) { + pc=0x51894; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; 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: - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + case 0x51a00: + if(r6 == r0) { + pc=0x51a98; continue; } r2 = r4 | r5; r2 = r2 & 3; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x482a4; + if(r2 == r0) { + pc=0x51aa4; continue; } - case 0x48218: + case 0x51a18: r6 = r6 + -1; - 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 */ + case 0x51a1c: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x48358; + if(r3 != r2) { + pc=0x51b58; continue; } - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r6 == r0) { + pc=0x51a98; continue; } - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r3 == r0) { + pc=0x51a98; continue; } r2 = r4 + 1; r5 = r5 + 1; r4 = r4 + r6; - /* Next insn is delay slot */ - pc = 0x4826c; + pc=0x51a6c; continue; - case 0x48254: - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x48298; + case 0x51a54: + if(r2 == r4) { + pc=0x51a98; continue; } - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r3 == r0) { + pc=0x51a98; continue; } r2 = r2 + 1; r5 = r5 + 1; - 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 */ + case 0x51a6c: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r6) { - /* Next insn is delay slot */ - pc = 0x48254; + if(r3 == r6) { + pc=0x51a54; continue; } - case 0x48280: - addr = r2 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x51a80: + addr=r2+0; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r3 - r2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x48298: + case 0x51a98: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x482a4: - r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48218; + case 0x51aa4: + r2 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r2 != r0) { + pc=0x51a18; 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 = 0x48218; + r3= page[(r4+0)>>>2]; + r2= page[(r5+0)>>>2]; + if(r3 != r2) { + pc=0x51a18; continue; } r2 = r6 + -4; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r2 == r0) { + pc=0x51a98; continue; } r8 = 65278 << 16; @@ -52362,8904 +58428,6891 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r6 & r3; r7 = r7 | 32896; r3 = r3 & r7; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48338; + if(r3 == r0) { + pc=0x51b38; continue; } - /* Next insn is delay slot */ - pc = 0x48298; + pc=0x51a98; continue; - 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; + case 0x51b00: + r3= page[(r4+0)>>>2]; + r6= page[(r5+0)>>>2]; + if(r3 != r6) { + pc=0x51b64; continue; } r2 = r2 + -4; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r2 == r0) { + pc=0x51a98; continue; } r6 = r3 + r8; r3 = ~(r0 | r3); r3 = r6 & r3; r3 = r3 & r7; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x48298; + if(r3 != r0) { + pc=0x51a98; continue; } - case 0x48338: - r3 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + case 0x51b38: + r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; r4 = r4 + 4; r5 = r5 + 4; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48300; + if(r3 == r0) { + pc=0x51b00; continue; } r6 = r2 + -1; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4821c; + if(r2 != r0) { + pc=0x51a1c; continue; } - case 0x48358: + case 0x51b58: r2 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x48280; + pc=0x51a80; continue; - case 0x48364: + case 0x51b64: r6 = r2 + -1; - /* Next insn is delay slot */ - pc = 0x4821c; + pc=0x51a1c; continue; - case 0x48400: - pc = 0x48400; - return; - default: - throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); - } - /* NOT REACHED */ - } - } - - private final void run_48400() throws ExecutionException { /* 0x48400 - 0x48600 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x48400: + case 0x51c00: r29 = r29 + -8; - r11 = readPages[(r28 + -31500) >>> 12][((r28 + -31500) >>> 2) & 0x3ff]; + r11= page[(r28+-31500)>>>2]; r2 = r5 + r0; - writePages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff] = r16; - /* Next insn is delay slot */ - pc = 0x4841c; + page[(r29+4)>>>2] = r16; + pc=0x51c1c; continue; - case 0x48418: + case 0x51c18: r2 = r3 + r0; - case 0x4841c: + case 0x51c1c: r3 = r2 + 1; - addr = r3 + -1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r3+-1; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r9 = r9 & 8; - if (r9 != r0) { - /* Next insn is delay slot */ - pc = 0x48418; + if(r9 != r0) { + pc=0x51c18; continue; } r9 = r0 + 45; - if (r8 == r9) { - /* Next insn is delay slot */ - pc = 0x48618; - run_48600(); - return; + if(r8 == r9) { + pc=0x51e18; + continue; } r9 = r0 + 43; - if (r8 == r9) { - /* Next insn is delay slot */ - pc = 0x4862c; - run_48600(); - return; + if(r8 == r9) { + pc=0x51e2c; + continue; } r25 = r0 + r0; - case 0x4845c: + case 0x51c5c: r2 = r0 + -17; r2 = r7 & r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4859c; + if(r2 != r0) { + pc=0x51d9c; continue; } r2 = r0 + 48; - if (r8 == r2) { - /* Next insn is delay slot */ - pc = 0x48580; + if(r8 == r2) { + pc=0x51d80; continue; } - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x4859c; + if(r7 != r0) { + pc=0x51d9c; continue; } r24 = r0 + 10; r7 = r0 + 10; - case 0x48488: - if (r25 == r0) { - /* Next insn is delay slot */ - pc = 0x485a8; + case 0x51c88: + if(r25 == r0) { + pc=0x51da8; continue; } - case 0x48490: + case 0x51c90: r13 = 32768 << 16; - 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)); + case 0x51c94: + if(r24 != r0) { + if(r24!=0) { + hi = (int)((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); } - pc = 0x484a0; + pc=0x51ca0; 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 0x484a0: + case 0x51ca0: r12 = r0 + r0; r2 = r0 + r0; r15 = r0 + 1; r14 = r0 + -1; r16 = hi; r13 = lo; - /* Next insn is delay slot */ - pc = 0x48508; + pc=0x51d08; continue; - case 0x484c0: + case 0x51cc0: r8 = r8 + -48; r9 = r8 < r7 ? 1 : 0; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x48548; + if(r9 == r0) { + pc=0x51d48; continue; } - case 0x484d0: - if (r12 == r14) { - /* Next insn is delay slot */ - pc = 0x484fc; + case 0x51cd0: + if(r12 == r14) { + pc=0x51cfc; continue; } r9 = ((r13 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r9 != r0) { - /* Next insn is delay slot */ - pc = 0x485c4; + if(r9 != r0) { + pc=0x51dc4; continue; } - if (r2 == r13) { - /* Next insn is delay slot */ - pc = 0x485b8; + if(r2 == r13) { + pc=0x51db8; continue; } - case 0x484ec: { - long hilo = (long) (r2) * ((long) r24); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + case 0x51cec: + { long hilo = (long)(r2) * ((long)r24); hi = (int) (hilo >>> 32); lo = (int) hilo; } r12 = r0 + 1; r2 = lo; r2 = r8 + r2; - case 0x484fc: + case 0x51cfc: r3 = r3 + 1; - addr = r3 + -1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; - case 0x48508: + case 0x51d08: r9 = r11 + r8; - addr = r9 + 1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r9+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r10 = r9 & 4; - if (r10 != r0) { - /* Next insn is delay slot */ - pc = 0x484c0; + if(r10 != r0) { + pc=0x51cc0; continue; } r9 = r9 & 3; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x48548; + if(r9 == r0) { + pc=0x51d48; continue; } - if (r9 == r15) { - /* Next insn is delay slot */ - pc = 0x485d0; + if(r9 == r15) { + pc=0x51dd0; continue; } r9 = r0 + 87; r8 = r8 - r9; - case 0x4853c: + case 0x51d3c: r9 = r8 < r7 ? 1 : 0; - if (r9 != r0) { - /* Next insn is delay slot */ - pc = 0x484d0; + if(r9 != r0) { + pc=0x51cd0; continue; } - case 0x48548: + case 0x51d48: r7 = r0 + -1; - if (r12 == r7) { - /* Next insn is delay slot */ - pc = 0x485e0; + if(r12 == r7) { + pc=0x51de0; continue; } - if (r25 != r0) { - /* Next insn is delay slot */ - pc = 0x4860c; - run_48600(); - return; - } - case 0x4855c: - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x48570; + if(r25 != r0) { + pc=0x51e0c; continue; } - if (r12 != r0) { - /* Next insn is delay slot */ - pc = 0x48600; - run_48600(); - return; + case 0x51d5c: + if(r6 == r0) { + pc=0x51d70; + continue; } - case 0x4856c: - writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r5; - case 0x48570: - r16 = readPages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff]; + if(r12 != r0) { + pc=0x51e00; + continue; + } + case 0x51d6c: + page[(r6+0)>>>2] = r5; + case 0x51d70: + r16= page[(r29+4)>>>2]; r29 = r29 + 8; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x48580: - addr = r3 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x51d80: + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r2 = r0 + 88; r9 = r9 & 223; - if (r9 == r2) { - /* Next insn is delay slot */ - pc = 0x4864c; - run_48600(); - return; - } - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x48664; - run_48600(); - return; - } - case 0x4859c: - r24 = r7 + r0; - if (r25 != r0) { - /* Next insn is delay slot */ - pc = 0x48490; + if(r9 == r2) { + pc=0x51e4c; continue; } - case 0x485a8: + if(r7 == r0) { + pc=0x51e64; + continue; + } + case 0x51d9c: + r24 = r7 + r0; + if(r25 != r0) { + pc=0x51c90; + continue; + } + case 0x51da8: r13 = 32767 << 16; r13 = r13 | 65535; - /* Next insn is delay slot */ - pc = 0x48494; + pc=0x51c94; continue; - case 0x485b8: + case 0x51db8: r9 = r16 < r8 ? 1 : 0; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x484ec; + if(r9 == r0) { + pc=0x51cec; continue; } - case 0x485c4: + case 0x51dc4: r12 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x484fc; + pc=0x51cfc; continue; - case 0x485d0: + case 0x51dd0: r9 = r0 + 55; r8 = r8 - r9; - /* Next insn is delay slot */ - pc = 0x4853c; + pc=0x51d3c; continue; - case 0x485e0: - if (r25 != r0) { - /* Next insn is delay slot */ - pc = 0x48640; - run_48600(); - return; + case 0x51de0: + if(r25 != r0) { + pc=0x51e40; + continue; } r2 = 32767 << 16; r2 = r2 | 65535; - case 0x485f0: + case 0x51df0: r5 = r0 + 34; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x48570; + page[(r4+0)>>>2] = r5; + if(r6 == r0) { + pc=0x51d70; continue; } - 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: + case 0x51e00: r5 = r3 + -1; - /* Next insn is delay slot */ - pc = 0x4856c; - run_48400(); - return; - case 0x4860c: + pc=0x51d6c; + continue; + case 0x51e0c: r2 = r0 - r2; - /* Next insn is delay slot */ - pc = 0x4855c; - run_48400(); - return; - case 0x48618: + pc=0x51d5c; + continue; + case 0x51e18: r3 = r2 + 2; - addr = r2 + 1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4845c; - run_48400(); - return; - case 0x4862c: + pc=0x51c5c; + continue; + case 0x51e2c: r3 = r2 + 2; - addr = r2 + 1; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r2+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4845c; - run_48400(); - return; - case 0x48640: + pc=0x51c5c; + continue; + case 0x51e40: r2 = 32768 << 16; - /* 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; + pc=0x51df0; + continue; + case 0x51e4c: + addr=r3+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r24 = r0 + 16; r3 = r3 + 2; r7 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x48488; - run_48400(); - return; - case 0x48664: + pc=0x51c88; + continue; + case 0x51e64: r24 = r0 + 8; r7 = r0 + 8; - /* Next insn is delay slot */ - pc = 0x48488; - run_48400(); + pc=0x51c88; + continue; + case 0x52000: + pc=0x52000; return; - case 0x48800: - pc = 0x48800; - 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_52000() throws ExecutionException { /* 0x52000 - 0x52800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x48800: + for(;;) { + switch(pc) { + case 0x52000: r3 = r4 + r0; r2 = r5 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x48400; - run_48400(); - return; - case 0x48a00: - pc = 0x48a00; - 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: + pc=0x51c00; + run_51800(); return; + case 0x52200: 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; + page[(r29+300)>>>2] = r31; + page[(r29+288)>>>2] = r22; + page[(r29+304)>>>2] = 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 = 0x48a44; - pc = 0x51200; - run_51200(); - return; - case 0x48a44: - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + page[(r29+312)>>>2] = r6; + page[(r29+316)>>>2] = r7; + page[(r29+296)>>>2] = r30; + page[(r29+292)>>>2] = r23; + page[(r29+284)>>>2] = r21; + page[(r29+280)>>>2] = r20; + page[(r29+276)>>>2] = r19; + page[(r29+272)>>>2] = r18; + page[(r29+268)>>>2] = r17; + page[(r29+264)>>>2] = r16; + r31=0x52244; + pc=0x5aa00; + run_5a800(); return; + case 0x52244: + r2= page[(r2+0)>>>2]; r4 = r2 + r0; - 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; + page[(r29+216)>>>2] = r2; + r31=0x5225c; + pc=0x10268; + run_10000(); return; + case 0x5225c: + page[(r29+232)>>>2] = r2; + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 128; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48a84; + if(r2 == r0) { + pc=0x52284; continue; } - r2 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4a664; - run_4a600(); - return; + r2= page[(r22+16)>>>2]; + if(r2 == r0) { + pc=0x53e64; + run_53800(); return; } - case 0x48a84: + case 0x52284: r21 = r29 + 40; 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; + page[(r29+144)>>>2] = r21; + page[(r29+152)>>>2] = r0; + page[(r29+148)>>>2] = r0; + page[(r29+212)>>>2] = r0; + page[(r29+228)>>>2] = r0; + page[(r29+224)>>>2] = r0; + page[(r29+240)>>>2] = r0; + page[(r29+236)>>>2] = r0; + page[(r29+200)>>>2] = r0; r8 = r21 + r0; - 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 */ + r19 = r2 + 14192; + case 0x522b8: + r3= page[(r29+312)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x491a4; - run_49000(); - return; + if(r2 == r0) { + pc=0x529a4; + run_52800(); return; } - case 0x48ad0: + case 0x522d0: r3 = r0 + 37; - r16 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x48af0; + r16= page[(r29+312)>>>2]; + if(r2 != r3) { + pc=0x522f0; continue; } - /* Next insn is delay slot */ - pc = 0x48b5c; + pc=0x5235c; continue; - case 0x48ae8: - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x48b04; + case 0x522e8: + if(r2 == r3) { + pc=0x52304; continue; } - case 0x48af0: + case 0x522f0: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48ae8; + if(r2 != r0) { + pc=0x522e8; continue; } - case 0x48b04: - r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + case 0x52304: + r3= page[(r29+312)>>>2]; r17 = r16 - r3; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x48b5c; + if(r17 == r0) { + pc=0x5235c; continue; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+312)>>>2]; 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; + page[(r29+152)>>>2] = r2; + r2= page[(r29+148)>>>2]; + page[(r8+0)>>>2] = r3; r2 = r2 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r2; + page[(r29+148)>>>2] = r2; r2 = r2 < 8 ? 1 : 0; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48c04; - run_48c00(); - return; + page[(r8+4)>>>2] = r17; + if(r2 == r0) { + pc=0x52404; + continue; } r8 = r8 + 8; - case 0x48b4c: - r3 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; + case 0x5234c: + r3= page[(r29+200)>>>2]; r3 = r3 + r17; - 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 */ + page[(r29+200)>>>2] = r3; + case 0x5235c: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48c2c; - run_48c00(); - return; + if(r2 == r0) { + pc=0x5242c; + continue; } 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r5 = r0 + r0; r30 = r0 + -1; - writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r0; + page[(r29+184)>>>2] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; - 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 */ + case 0x5238c: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r3 = r16 + 1; - case 0x48b94: + case 0x52394: r2 = r18 + -32; - r4 = (r2 & 0xffffffffL) < (89 & 0xffffffffL) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4972c; - run_49600(); - return; + r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x52f2c; + run_52800(); return; } r4 = 6 << 16; r2 = r2 << 2; - r4 = r4 + -27820; + r4 = r4 + 13820; r2 = r4 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x48bc4: + case 0x523c4: r17 = r17 | 16; - case 0x48bc8: + case 0x523c8: r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; + pc=0x5238c; continue; - case 0x48bd4: - r4 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x523d4: + r4= page[(r29+316)>>>2]; + r7= page[(r4+0)>>>2]; r2 = r4 + 4; - if (r7 >= 0) { - /* Next insn is delay slot */ - pc = 0x4971c; - run_49600(); - return; + if(r7 >= 0) { + pc=0x52f1c; + run_52800(); return; } r7 = r0 - r7; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; - case 0x48bf4: + page[(r29+316)>>>2] = r2; + case 0x523f4: r17 = r17 | 4; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; + pc=0x5238c; continue; - 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: - case 0x48c04: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x52404: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31 = 0x48c18; - pc = 0x53200; - run_53200(); - return; - case 0x48c18: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48c50; + r31=0x52418; + pc=0x5ca00; + run_5c800(); return; + case 0x52418: + if(r2 != r0) { + pc=0x52450; continue; } r8 = r21 + r0; - /* 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; + pc=0x5234c; + continue; + case 0x5242c: + r2= page[(r29+152)>>>2]; + if(r2 == r0) { + pc=0x52450; continue; } - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x52450; + pc=0x5ca00; + run_5c800(); return; + case 0x52450: + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48c9c; + if(r2 == r0) { + pc=0x5249c; continue; } r2 = r0 + -1; - 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]; + case 0x52468: + r31= page[(r29+300)>>>2]; + r30= page[(r29+296)>>>2]; + r23= page[(r29+292)>>>2]; + r22= page[(r29+288)>>>2]; + r21= page[(r29+284)>>>2]; + r20= page[(r29+280)>>>2]; + r19= page[(r29+276)>>>2]; + r18= page[(r29+272)>>>2]; + r17= page[(r29+268)>>>2]; + r16= page[(r29+264)>>>2]; r29 = r29 + 304; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x48c9c: - r2 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x48c68; + case 0x5249c: + r2= page[(r29+200)>>>2]; + pc=0x52468; continue; - case 0x48ca8: + case 0x524a8: r5 = r0 + 43; r16 = r3 + r0; - /* 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; + pc=0x5238c; + continue; + case 0x524b8: + page[(r29+312)>>>2] = r3; + r3= page[(r29+316)>>>2]; + page[(r29+184)>>>2] = r7; + r16= page[(r3+0)>>>2]; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r20 = r3 + 4; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x4a80c; - run_4a800(); - return; + if(r16 == r0) { + pc=0x5400c; + run_54000(); return; } r4 = r16 + r0; - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4a6e0; - run_4a600(); - return; + if(r30 < 0) { + pc=0x53ee0; + run_53800(); return; } r5 = r0 + r0; r6 = r30 + r0; - 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; + page[(r29+260)>>>2] = r8; + r31=0x524f8; + pc=0x5ac00; + run_5a800(); return; + case 0x524f8: + r8= page[(r29+260)>>>2]; + if(r2 == r0) { + pc=0x542ac; + run_54000(); return; } r2 = r2 - r16; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + page[(r29+196)>>>2] = r2; r2 = r30 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x48d1c; + if(r2 == r0) { + pc=0x5251c; continue; } - 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; + page[(r29+196)>>>2] = r30; + case 0x5251c: + r2= page[(r29+196)>>>2]; + if(r2 < 0) { + pc=0x53efc; + run_53800(); return; } - 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 */ + case 0x5252c: + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; + page[(r29+188)>>>2] = r2; + page[(r29+316)>>>2] = r20; r30 = r0 + r0; - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; - case 0x48d40: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48d58; + page[(r29+208)>>>2] = r0; + case 0x52540: + if(r3 == r0) { + pc=0x52558; continue; } - case 0x48d48: - r2 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + case 0x52548: + r2= page[(r29+188)>>>2]; r2 = r2 + 1; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; - case 0x48d58: + page[(r29+188)>>>2] = r2; + case 0x52558: r4 = r17 & 2; - writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r4; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x48d78; + page[(r29+192)>>>2] = r4; + if(r4 == r0) { + pc=0x52578; continue; } - r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + r5= page[(r29+188)>>>2]; r5 = r5 + 2; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r5; - case 0x48d78: + page[(r29+188)>>>2] = r5; + case 0x52578: r2 = r17 & 132; - writePages[(r29 + 204) >>> 12][((r29 + 204) >>> 2) & 0x3ff] = r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x49750; - run_49600(); - return; + page[(r29+204)>>>2] = r2; + if(r2 != r0) { + pc=0x52f50; + run_52800(); return; } - r4 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + r4= page[(r29+184)>>>2]; + r5= page[(r29+188)>>>2]; r20 = r4 - r5; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x49750; - run_49600(); - return; + if(r20 <= 0) { + pc=0x52f50; + run_52800(); return; } r2 = r20 < 17 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4a748; - run_4a600(); - return; + if(r2 != r0) { + pc=0x53f48; + run_53800(); return; } r4 = r20 + r0; - writePages[(r29 + 244) >>> 12][((r29 + 244) >>> 2) & 0x3ff] = r16; + page[(r29+244)>>>2] = 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; + page[(r29+220)>>>2] = r19; r23 = r0 + 16; - r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r16= page[(r29+304)>>>2]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x48dec; + pc=0x525ec; continue; - case 0x48dd8: + case 0x525d8: r17 = r17 + -16; r4 = r17 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x48e48; - run_48e00(); - return; + if(r4 != r0) { + pc=0x52648; + continue; } - case 0x48dec: + case 0x525ec: 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 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: - 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; + page[(r8+0)>>>2] = r19; + page[(r8+4)>>>2] = r23; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x525d8; + continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x52624; + pc=0x5ca00; + run_5c800(); return; + case 0x52624: + if(r2 != r0) { + pc=0x52450; + continue; } 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x48dec; - run_48c00(); - return; + if(r4 == r0) { + pc=0x525ec; + continue; } - case 0x48e48: + case 0x52648: r4 = r17 + r0; - r16 = readPages[(r29 + 244) >>> 12][((r29 + 244) >>> 2) & 0x3ff]; + r16= page[(r29+244)>>>2]; r17 = r20 + r0; r20 = r4 + r0; - case 0x48e58: + case 0x52658: r3 = r3 + 1; - r4 = readPages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff]; + r4= page[(r29+220)>>>2]; r2 = r20 + r2; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = 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 = 0x49e1c; - run_49e00(); - return; + page[(r8+0)>>>2] = r4; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x5361c; + run_53000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r8 = r8 + 8; - case 0x48e88: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48ec4; + case 0x52688: + if(r3 == r0) { + pc=0x526c4; continue; } r3 = r29 + 182; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + page[(r8+0)>>>2] = r3; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49c50; - run_49c00(); - return; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x53450; + run_53000(); return; } r8 = r8 + 8; - case 0x48ec4: - r3 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x48f08; + case 0x526c4: + r3= page[(r29+192)>>>2]; + if(r3 == r0) { + pc=0x52708; continue; } r3 = r29 + 180; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + page[(r8+0)>>>2] = r3; r3 = r0 + 2; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; r2 = r2 + 2; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49c7c; - run_49c00(); - return; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x5347c; + run_53000(); return; } r8 = r8 + 8; - case 0x48f08: - r4 = readPages[(r29 + 204) >>> 12][((r29 + 204) >>> 2) & 0x3ff]; + case 0x52708: + r4= page[(r29+204)>>>2]; r3 = r0 + 128; - if (r4 == r3) { - /* Next insn is delay slot */ - pc = 0x49abc; - run_49a00(); - return; + if(r4 == r3) { + pc=0x532bc; + run_53000(); return; } - case 0x48f18: - r3 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + case 0x52718: + r3= page[(r29+196)>>>2]; r20 = r30 - r3; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x49014; - run_49000(); - return; + if(r20 <= 0) { + pc=0x52814; + run_52800(); return; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a2c0; - run_4a200(); - return; + if(r3 != r0) { + pc=0x53ac0; + run_53800(); return; } r5 = 6 << 16; - r23 = r5 + -27464; + r23 = r5 + 14176; r4 = r23 + r0; - writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r16; + page[(r29+192)>>>2] = r16; r23 = r20 + r0; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3= page[(r29+148)>>>2]; r20 = r17 + r0; r30 = r0 + 16; - r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r16= page[(r29+304)>>>2]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x48f7c; + pc=0x5277c; continue; - case 0x48f68: + case 0x52768: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x48fd8; + if(r4 != r0) { + pc=0x527d8; continue; } - case 0x48f7c: + case 0x5277c: 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 = 0x48f68; + page[(r8+0)>>>2] = r17; + page[(r8+4)>>>2] = r30; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x52768; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x527b4; + pc=0x5ca00; + run_5c800(); return; + case 0x527b4: + if(r2 != r0) { + pc=0x52450; + continue; } 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x48f7c; + if(r4 == r0) { + pc=0x5277c; continue; } - case 0x48fd8: + case 0x527d8: r4 = r17 + r0; - r16 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; + r16= page[(r29+192)>>>2]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x48fec: + case 0x527ec: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; - case 0x49000: - pc = 0x49000; + page[(r8+0)>>>2] = r23; + 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_49000() throws ExecutionException { /* 0x49000 - 0x49200 */ + private final void run_52800() throws ExecutionException { /* 0x52800 - 0x53000 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x52800: + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x53424; + run_53000(); return; } r8 = r8 + 8; - case 0x49014: + case 0x52814: r3 = r17 & 256; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x49950; - run_49800(); - return; + if(r3 != r0) { + pc=0x53150; + run_53000(); return; } - r3 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + r3= page[(r29+196)>>>2]; + page[(r8+0)>>>2] = 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; + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; + page[(r29+152)>>>2] = r2; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49854; - run_49800(); - return; + if(r3 == r0) { + pc=0x53054; + run_53000(); return; } - case 0x4904c: + case 0x5284c: r8 = r8 + 8; - case 0x49050: + case 0x52850: r17 = r17 & 4; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x49150; + if(r17 == r0) { + pc=0x52950; continue; } - r3 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + r3= page[(r29+184)>>>2]; + r4= page[(r29+188)>>>2]; r16 = r3 - r4; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x49150; + if(r16 <= 0) { + pc=0x52950; continue; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a7fc; - run_4a600(); - return; + if(r3 != r0) { + pc=0x53ffc; + run_53800(); return; } - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; - writePages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff] = r19; + r3= page[(r29+148)>>>2]; + page[(r29+220)>>>2] = r19; r17 = r0 + 16; - r18 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x490ac; + r18= page[(r29+304)>>>2]; + pc=0x528ac; continue; - case 0x49098: + case 0x52898: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49108; + if(r4 != r0) { + pc=0x52908; continue; } - case 0x490ac: + case 0x528ac: 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 = 0x49098; + page[(r8+0)>>>2] = r19; + page[(r8+4)>>>2] = r17; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x52898; continue; } r4 = r18 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x528e4; + pc=0x5ca00; + run_5c800(); return; + case 0x528e4: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x490ac; + if(r4 == r0) { + pc=0x528ac; continue; } - case 0x49108: + case 0x52908: r3 = r3 + 1; - r5 = readPages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff]; + r5= page[(r29+220)>>>2]; r2 = r2 + r16; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = 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 = 0x49150; + page[(r8+0)>>>2] = r5; + page[(r8+4)>>>2] = r16; + page[(r29+152)>>>2] = r2; + if(r3 != r0) { + pc=0x52950; continue; } - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x52944; + pc=0x5ca00; + run_5c800(); return; + case 0x52944: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - 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]; + r2= page[(r29+152)>>>2]; + case 0x52950: + r3= page[(r29+188)>>>2]; + r5= page[(r29+184)>>>2]; r4 = r3 < r5 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4916c; + if(r4 == r0) { + pc=0x5296c; continue; } r3 = r5 + r0; - case 0x4916c: - r4 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; + case 0x5296c: + r4= page[(r29+200)>>>2]; r4 = r4 + r3; - writePages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff] = r4; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x49880; - run_49800(); - return; + page[(r29+200)>>>2] = r4; + if(r2 != r0) { + pc=0x53080; + run_53000(); return; } - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; + page[(r29+148)>>>2] = r0; r8 = r21 + r0; - 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 */ + case 0x5298c: + r3= page[(r29+312)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48ad0; - run_48a00(); - return; + if(r2 != r0) { + pc=0x522d0; + run_52000(); 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; + case 0x529a4: + r16= page[(r29+312)>>>2]; + pc=0x5235c; + run_52000(); return; + case 0x529b0: + if(r5 != r0) { + pc=0x523c8; + run_52000(); return; } r5 = r0 + 32; r16 = r3 + r0; - /* 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 */ + pc=0x5238c; + run_52000(); return; + case 0x529c8: + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r4 = r3 + 1; - if (r18 == r6) { - /* Next insn is delay slot */ - pc = 0x4ad04; - run_4ac00(); - return; + if(r18 == r6) { + pc=0x54504; + run_54000(); 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 = 0x4921c; - run_49200(); - return; + if(r3 == r0) { + pc=0x52a1c; + continue; } - case 0x491ec: + case 0x529ec: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r30 = r30 << 3; r30 = r3 + r30; - 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: r30 = r2 + r30; r2 = r18 + -48; - r3 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x491ec; - run_49000(); - return; + r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x529ec; + continue; } - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4a654; - run_4a600(); - return; + if(r30 < 0) { + pc=0x53e54; + run_53800(); return; } - case 0x4921c: + case 0x52a1c: r3 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x48b94; - run_48a00(); - return; - case 0x49228: + pc=0x52394; + run_52000(); return; + case 0x52a28: r17 = r17 | 128; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; - run_48a00(); - return; - case 0x49238: + pc=0x5238c; + run_52000(); return; + case 0x52a38: r7 = r0 + r0; r2 = r18 + -48; - case 0x49240: + case 0x52a40: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x49240; + r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x52a40; continue; } - /* Next insn is delay slot */ - pc = 0x48b94; - run_48a00(); - return; - case 0x49270: + pc=0x52394; + run_52000(); return; + case 0x52a70: 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 = 0x496ec; - run_49600(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + if(r2 == r0) { + pc=0x52eec; + continue; } - case 0x49288: - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + case 0x52a88: + r3= page[(r29+316)>>>2]; r4 = r0 + r0; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r2= page[(r3+0)>>>2]; 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; + page[(r29+316)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - case 0x492a4: - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x492b4; + case 0x52aa4: + if(r30 < 0) { + pc=0x52ab4; continue; } r5 = r0 + -129; r17 = r17 & r5; - case 0x492b4: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x498ac; - run_49800(); - return; + case 0x52ab4: + if(r2 != r0) { + pc=0x530ac; + run_53000(); return; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x498ac; - run_49800(); - return; + if(r30 != r0) { + pc=0x530ac; + run_53000(); return; } - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49cd0; - run_49c00(); - return; + if(r4 != r0) { + pc=0x534d0; + run_53000(); return; } r2 = r17 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x49cd0; - run_49c00(); - return; + if(r2 == r0) { + pc=0x534d0; + run_53000(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + 1; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + page[(r29+196)>>>2] = r2; r16 = r29 + 143; - case 0x492ec: - r2 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + case 0x52aec: + r2= page[(r29+196)>>>2]; r4 = r2 < r30 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x49304; + if(r4 == r0) { + pc=0x52b04; continue; } r2 = r30 + r0; - 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: + case 0x52b04: + page[(r29+188)>>>2] = r2; + page[(r29+208)>>>2] = r0; + pc=0x52540; + run_52000(); return; + case 0x52b14: 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 = 0x496a8; - run_49600(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + if(r2 == r0) { + pc=0x52ea8; + continue; } - case 0x4932c: - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + case 0x52b2c: + r3= page[(r29+316)>>>2]; r4 = r0 + 1; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r2= page[(r3+0)>>>2]; 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; + page[(r29+316)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; + pc=0x52aa4; continue; - case 0x49350: + case 0x52b50: r2 = 6 << 16; - r2 = r2 + -27868; - writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r2; + r2 = r2 + 13772; + page[(r29+240)>>>2] = 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 = 0x49590; - run_49400(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x52d90; + continue; } - case 0x49374: - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x52b74: + r3= page[(r29+316)>>>2]; + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; - case 0x49388: + page[(r29+316)>>>2] = r3; + case 0x52b88: r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49ce0; - run_49c00(); - return; + if(r3 == r0) { + pc=0x534e0; + run_53000(); return; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x49ce0; - run_49c00(); - return; + if(r2 == r0) { + pc=0x534e0; + run_53000(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+181; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; + pc=0x52aa4; continue; - case 0x493c0: + case 0x52bc0: 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 = 0x4952c; - run_49400(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x52d2c; + continue; } - case 0x493d8: - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x52bd8: + r3= page[(r29+316)>>>2]; + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; - case 0x493ec: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x49550; - run_49400(); - return; + page[(r29+316)>>>2] = r3; + case 0x52bec: + if(r2 < 0) { + pc=0x52d50; + continue; } - 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 */ + case 0x52bf4: + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r4 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x492a4; + pc=0x52aa4; continue; - 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: - case 0x49404: + case 0x52c04: r17 = r17 | 64; r16 = r3 + r0; - /* 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]; + pc=0x5238c; + run_52000(); return; + case 0x52c14: + page[(r29+312)>>>2] = r3; + r3= page[(r29+316)>>>2]; + page[(r29+184)>>>2] = r7; + r2= page[(r3+0)>>>2]; 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 0x49434: + addr=r29+104; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+316)>>>2] = r3; + case 0x52c34: 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; + page[(r29+188)>>>2] = r4; + page[(r29+196)>>>2] = r5; r30 = r0 + r0; - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + page[(r29+208)>>>2] = r0; r16 = r29 + 104; - /* Next insn is delay slot */ - pc = 0x48d58; - run_48c00(); - return; - case 0x4945c: + pc=0x52558; + run_52000(); return; + case 0x52c5c: r17 = r17 | 1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; - run_48a00(); - return; - case 0x4946c: + pc=0x5238c; + run_52000(); return; + case 0x52c6c: 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 = 0x49f6c; - run_49e00(); - return; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x5376c; + run_53000(); return; } r17 = r17 & 64; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x49f6c; - run_49e00(); - return; + if(r17 == r0) { + pc=0x5376c; + run_53000(); 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= page[(r29+316)>>>2]; + r2= page[(r3+0)>>>2]; + r3= page[(r29+200)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r29+316)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+316)>>>2] = r3; + pc=0x522b8; + run_52000(); return; + case 0x52cbc: + page[(r29+312)>>>2] = r3; + r3= page[(r29+316)>>>2]; + page[(r29+184)>>>2] = r7; + r2= page[(r3+0)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r29+316)>>>2]; r17 = r17 | 2; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + page[(r29+316)>>>2] = r3; r3 = 6 << 16; - r3 = r3 + -27848; - writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r3; + r3 = r3 + 13792; + page[(r29+240)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x49510: + pc=0x52aa4; + continue; + case 0x52d10: 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 = 0x493d8; - run_49200(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x52bd8; + continue; } - case 0x4952c: + case 0x52d2c: r2 = r17 & 64; - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4a26c; - run_4a200(); - return; + r3= page[(r29+316)>>>2]; + if(r2 == r0) { + pc=0x53a6c; + run_53800(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x493f4; - run_49200(); - return; + page[(r29+316)>>>2] = r3; + if(r2 >= 0) { + pc=0x52bf4; + continue; } - case 0x49550: + case 0x52d50: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x4956c: - writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + pc=0x52aa4; + continue; + case 0x52d6c: + page[(r29+312)>>>2] = r3; r3 = 6 << 16; - r3 = r3 + -27848; + r3 = r3 + 13792; 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 = 0x49374; - run_49200(); - return; + page[(r29+184)>>>2] = r7; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+240)>>>2] = r3; + if(r2 != r0) { + pc=0x52b74; + continue; } - case 0x49590: + case 0x52d90: r2 = r17 & 64; - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4a258; - run_4a200(); - return; + r3= page[(r29+316)>>>2]; + if(r2 == r0) { + pc=0x53a58; + run_53800(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + 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 = 0x49388; - run_49200(); - return; - case 0x495b4: + page[(r29+316)>>>2] = r3; + pc=0x52b88; + continue; + case 0x52db4: 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 = 0x4a244; - run_4a200(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x53a44; + run_53800(); return; } - r4 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r4= page[(r29+316)>>>2]; r3 = r4 + 7; - case 0x495d8: + case 0x52dd8: 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 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: - 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: + page[(r29+316)>>>2] = r3; + f0= page[(r2+4)>>>2]; + f1= page[(r2+0)>>>2]; + page[(r29+260)>>>2] = r8; + page[(r29+228)>>>2] = f0; + f12= page[(r29+228)>>>2]; + page[(r29+224)>>>2] = f1; + f13= page[(r29+224)>>>2]; + r31=0x52e10; + pc=0x48600; + run_48000(); return; + case 0x52e10: r3 = r0 + 1; - r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x4a1e4; - run_4a000(); - return; + r8= page[(r29+260)>>>2]; + if(r2 != r3) { + pc=0x539e4; + run_53800(); return; } f0 = r0; - f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + f2= page[(r29+228)>>>2]; 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 = 0x4a8e0; - run_4a800(); - return; + f3= page[(r29+224)>>>2]; + 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)) { + pc=0x540e0; + run_54000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - case 0x49648: + case 0x52e48: r2 = r18 < 72 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4a644; - run_4a600(); - return; + if(r2 != r0) { + pc=0x53e44; + run_53800(); return; } r16 = 6 << 16; - r16 = r16 + -27880; - case 0x4965c: + r16 = r16 + 13760; + case 0x52e5c: 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; + page[(r29+188)>>>2] = r2; + page[(r29+196)>>>2] = r4; r30 = r0 + r0; - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x48d40; - run_48c00(); - return; - case 0x49684: + page[(r29+208)>>>2] = r0; + pc=0x52540; + run_52000(); return; + case 0x52e84: r17 = r17 | 8; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; - run_48a00(); - return; - case 0x49694: + pc=0x5238c; + run_52000(); return; + case 0x52e94: 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 = 0x4932c; - run_49200(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + if(r2 != r0) { + pc=0x52b2c; + continue; } - case 0x496a8: + case 0x52ea8: r2 = r17 & 64; - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4a280; - run_4a200(); - return; + r3= page[(r29+316)>>>2]; + if(r2 == r0) { + pc=0x53a80; + run_53800(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + page[(r29+316)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x496d8: + pc=0x52aa4; + continue; + case 0x52ed8: 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 = 0x49288; - run_49200(); - return; + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + if(r2 != r0) { + pc=0x52a88; + continue; } - case 0x496ec: + case 0x52eec: r2 = r17 & 64; - r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4a2a0; - run_4a200(); - return; + r3= page[(r29+316)>>>2]; + if(r2 == r0) { + pc=0x53aa0; + run_53800(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + page[(r29+316)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x4971c: - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; + pc=0x52aa4; + continue; + case 0x52f1c: + page[(r29+316)>>>2] = r2; r16 = r3 + r0; - /* 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; + pc=0x5238c; + run_52000(); return; + case 0x52f2c: + page[(r29+184)>>>2] = r7; + page[(r29+312)>>>2] = r3; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r18 == r0) { + pc=0x5242c; + run_52000(); 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 = 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]; + addr=r29+104; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x52c34; + continue; + case 0x52f50: + r2= page[(r29+152)>>>2]; + pc=0x52688; + run_52000(); return; + case 0x52f5c: + r4= page[(r29+212)>>>2]; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + page[(r8+4)>>>2] = 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 = 0x49bcc; - run_49a00(); - return; + page[(r8+0)>>>2] = r16; + page[(r29+152)>>>2] = r2; + if(r3 != r0) { + pc=0x533cc; + run_53000(); return; } - case 0x49780: - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + case 0x52f80: + r3= page[(r29+148)>>>2]; 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 = 0x4a134; - run_4a000(); - return; + page[(r29+148)>>>2] = r3; + if(r4 == r0) { + pc=0x53934; + run_53800(); return; } - r4 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; + r4= page[(r29+232)>>>2]; r8 = r8 + 8; r3 = r3 + 1; - r5 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; + r5= page[(r29+216)>>>2]; r2 = r2 + r4; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + page[(r8+4)>>>2] = 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 = 0x4a188; - run_4a000(); - return; + page[(r8+0)>>>2] = r5; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 == r0) { + pc=0x53988; + run_53800(); return; } - case 0x497cc: + case 0x52fcc: r8 = r8 + 8; - case 0x497d0: + case 0x52fd0: f0 = r0; - f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + f2= page[(r29+228)>>>2]; 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 = 0x49e4c; - run_49e00(); - return; + f3= page[(r29+224)>>>2]; + 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)) { + pc=0x5364c; + run_53000(); return; } - r5 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + r5= page[(r29+212)>>>2]; r16 = r16 + 1; r4 = r5 + -1; - case 0x49800: - pc = 0x49800; + 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_49800() throws ExecutionException { /* 0x49800 - 0x49a00 */ + private final void run_53000() throws ExecutionException { /* 0x53000 - 0x53800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x49800: - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + for(;;) { + switch(pc) { + case 0x53000: + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r4; r2 = r2 + r4; - case 0x4980c: + case 0x5300c: 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 = 0x49bf4; - run_49a00(); - return; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 == r0) { + pc=0x533f4; + continue; } - case 0x49824: + case 0x53024: r8 = r8 + 8; - case 0x49828: - r5 = readPages[(r29 + 236) >>> 12][((r29 + 236) >>> 2) & 0x3ff]; + case 0x53028: + r5= page[(r29+236)>>>2]; r4 = r29 + 164; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; + page[(r8+0)>>>2] = r4; + page[(r8+4)>>>2] = r5; r2 = r5 + r2; - case 0x4983c: + case 0x5303c: r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4904c; - run_49000(); - return; + page[(r29+152)>>>2] = r2; + if(r3 != r0) { + pc=0x5284c; + run_52800(); return; } - case 0x49854: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x53054: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53068; + pc=0x5ca00; + run_5c800(); return; + case 0x53068: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49050; - run_49000(); - return; - case 0x49880: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x52850; + run_52800(); return; + case 0x53080: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53094; + pc=0x5ca00; + run_5c800(); return; + case 0x53094: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; + page[(r29+148)>>>2] = r0; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4918c; - run_49000(); - return; - case 0x498ac: + pc=0x5298c; + run_52800(); return; + case 0x530ac: r5 = r0 + 1; - if (r4 == r5) { - /* Next insn is delay slot */ - pc = 0x49ca8; - run_49c00(); - return; + if(r4 == r5) { + pc=0x534a8; + continue; } r6 = r29 + 144; r5 = r0 + 2; r16 = r6 + r0; - if (r4 != r5) { - /* Next insn is delay slot */ - pc = 0x49900; + if(r4 != r5) { + pc=0x53100; continue; } - r5 = readPages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff]; - case 0x498d0: + r5= page[(r29+240)>>>2]; + case 0x530d0: 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= page[(addr)>>>2]; + 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 = 0x498d0; + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x530d0; continue; } - case 0x498f0: + case 0x530f0: r6 = r6 - r16; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r6; - /* Next insn is delay slot */ - pc = 0x492ec; - run_49200(); - return; - case 0x49900: + page[(r29+196)>>>2] = r6; + pc=0x52aec; + run_52800(); return; + case 0x53100: 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 = 0x49900; + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x53100; continue; } r2 = r17 & 1; r5 = r16 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x498f0; + if(r2 == r0) { + pc=0x530f0; continue; } r2 = r0 + 48; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x498f0; + if(r4 == r2) { + pc=0x530f0; 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 = 0x492ec; - run_49200(); - return; - case 0x49950: + addr=r5+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+196)>>>2] = r6; + pc=0x52aec; + run_52800(); return; + case 0x53150: r18 = r18 < 102 ? 1 : 0; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x4975c; - run_49600(); - return; + if(r18 != r0) { + pc=0x52f5c; + run_52800(); return; } f0 = r0; - f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + f2= page[(r29+228)>>>2]; 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 = 0x49cf4; - run_49c00(); - return; + f3= page[(r29+224)>>>2]; + 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)) { + pc=0x534f4; + continue; } - r3 = 5 << 16; - r3 = r3 + 30860; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + 6368; + page[(r8+0)>>>2] = r3; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4a2d4; - run_4a200(); - return; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x53ad4; + run_53800(); return; } r8 = r8 + 8; - case 0x499b8: - r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x531b8: + r3= page[(r29+176)>>>2]; + r4= page[(r29+212)>>>2]; r3 = r3 < r4 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x499dc; + if(r3 != r0) { + pc=0x531dc; continue; } r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49050; - run_49000(); - return; + if(r3 == r0) { + pc=0x52850; + run_52800(); return; } - 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]; + case 0x531dc: + r3= page[(r29+216)>>>2]; + page[(r8+0)>>>2] = r3; + r3= page[(r29+232)>>>2]; 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 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: + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; + page[(r29+152)>>>2] = r2; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4a618; - run_4a600(); - return; + if(r3 == r0) { + pc=0x53e18; + run_53800(); return; } r8 = r8 + 8; - case 0x49a18: - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x53218: + r3= page[(r29+212)>>>2]; r16 = r3 + -1; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x49050; - run_49000(); - return; + if(r16 <= 0) { + pc=0x52850; + run_52800(); return; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x49f08; - run_49e00(); - return; + if(r3 != r0) { + pc=0x53708; + continue; } r5 = 6 << 16; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; - r23 = r5 + -27464; + r3= page[(r29+148)>>>2]; + r23 = r5 + 14176; r18 = r0 + 16; - r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x49a68; + r20= page[(r29+304)>>>2]; + pc=0x53268; continue; - case 0x49a54: + case 0x53254: r8 = r8 + 8; - case 0x49a58: + case 0x53258: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49f14; - run_49e00(); - return; + if(r4 != r0) { + pc=0x53714; + continue; } - case 0x49a68: + case 0x53268: 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 = 0x49a54; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x53254; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x532a0; + pc=0x5ca00; + run_5c800(); return; + case 0x532a0: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49a58; + pc=0x53258; continue; - case 0x49abc: - r3 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + case 0x532bc: + r3= page[(r29+184)>>>2]; + r4= page[(r29+188)>>>2]; r20 = r3 - r4; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x48f18; - run_48e00(); - return; + if(r20 <= 0) { + pc=0x52718; + run_52000(); return; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a92c; - run_4a800(); - return; + if(r3 != r0) { + pc=0x5412c; + run_54000(); return; } r4 = 6 << 16; - r23 = r4 + -27464; + r23 = r4 + 14176; r4 = r23 + r0; - writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r16; + page[(r29+192)>>>2] = r16; r23 = r20 + r0; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3= page[(r29+148)>>>2]; r20 = r17 + r0; r7 = r0 + 16; - r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r16= page[(r29+304)>>>2]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x49b24; + pc=0x53324; continue; - case 0x49b10: + case 0x53310: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49b88; + if(r4 != r0) { + pc=0x53388; continue; } - case 0x49b24: + case 0x53324: 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 = 0x49b10; + page[(r8+0)>>>2] = r17; + page[(r8+4)>>>2] = r7; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x53310; 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 = 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; + page[(r29+256)>>>2] = r7; + r31=0x53360; + pc=0x5ca00; + run_5c800(); return; + case 0x53360: + r7= page[(r29+256)>>>2]; + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x49b24; + if(r4 == r0) { + pc=0x53324; continue; } - case 0x49b88: + case 0x53388: r4 = r17 + r0; - r16 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; + r16= page[(r29+192)>>>2]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x49b9c: + case 0x5339c: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = 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 = 0x4a1b8; - run_4a000(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x539b8; + run_53800(); return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc = 0x48f18; - run_48e00(); - return; - case 0x49bcc: + pc=0x52718; + run_52000(); return; + case 0x533cc: r3 = r17 & 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x49780; - run_49600(); - return; + if(r3 != r0) { + pc=0x52f80; + run_52800(); return; } - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3= page[(r29+148)>>>2]; 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 = 0x49824; - run_49800(); - return; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x53024; + continue; } - case 0x49bf4: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x533f4: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - 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: - /* 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; + r31=0x53408; + pc=0x5ca00; + run_5c800(); return; + case 0x53408: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49828; - run_49800(); - return; - case 0x49c24: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x53028; + continue; + case 0x53424: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53438; + pc=0x5ca00; + run_5c800(); return; + case 0x53438: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49014; - run_49000(); - return; - case 0x49c50: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x52814; + run_52800(); return; + case 0x53450: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53464; + pc=0x5ca00; + run_5c800(); return; + case 0x53464: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x48ec4; - run_48e00(); - return; - case 0x49c7c: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x526c4; + run_52000(); return; + case 0x5347c: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53490; + pc=0x5ca00; + run_5c800(); return; + case 0x53490: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* 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; + pc=0x52708; + run_52000(); return; + case 0x534a8: + r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x53728; + continue; } 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+196)>>>2] = r4; r16 = r29 + 143; - /* Next insn is delay slot */ - pc = 0x492ec; - run_49200(); - return; - case 0x49cd0: - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r0; + pc=0x52aec; + run_52800(); return; + case 0x534d0: + page[(r29+196)>>>2] = r0; r16 = r29 + 144; - /* Next insn is delay slot */ - pc = 0x492ec; - run_49200(); - return; - case 0x49ce0: + pc=0x52aec; + run_52800(); return; + case 0x534e0: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* 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; + pc=0x52aa4; + run_52800(); return; + case 0x534f4: + r3= page[(r29+176)>>>2]; + if(r3 <= 0) { + pc=0x53b00; + run_53800(); return; } - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + r3= page[(r29+212)>>>2]; + r4= page[(r29+208)>>>2]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49d24; + if(r3 == r0) { + pc=0x53524; continue; } r20 = r4 + r0; - case 0x49d24: - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x49d58; + case 0x53524: + if(r20 <= 0) { + pc=0x53558; continue; } - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3= page[(r29+148)>>>2]; r2 = r2 + r20; r3 = r3 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = 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 = 0x4a768; - run_4a600(); - return; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x53f68; + run_53800(); return; } r8 = r8 + 8; - case 0x49d58: - if (r20 < 0) { - /* Next insn is delay slot */ - pc = 0x4a75c; - run_4a600(); - return; + case 0x53558: + if(r20 < 0) { + pc=0x53f5c; + run_53800(); return; } - case 0x49d60: - r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + case 0x53560: + r3= page[(r29+208)>>>2]; r20 = r3 - r20; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x49fdc; - run_49e00(); - return; + if(r20 <= 0) { + pc=0x537dc; + continue; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4ac94; - run_4ac00(); - return; + if(r3 != r0) { + pc=0x54494; + run_54000(); return; } r5 = 6 << 16; - r23 = r5 + -27464; + r23 = r5 + 14176; r4 = r23 + r0; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r16; + page[(r29+196)>>>2] = r16; r23 = r20 + r0; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3= page[(r29+148)>>>2]; r20 = r18 + r0; r30 = r0 + 16; r18 = r17 + r0; - r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r16= page[(r29+304)>>>2]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x49dc8; + pc=0x535c8; continue; - case 0x49db4: + case 0x535b4: r8 = r8 + 8; - case 0x49db8: + case 0x535b8: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49f9c; - run_49e00(); - return; + if(r4 != r0) { + pc=0x5379c; + continue; } - case 0x49dc8: + case 0x535c8: 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 = 0x49db4; + page[(r8+0)>>>2] = r17; + page[(r8+4)>>>2] = r30; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x535b4; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31 = 0x49e00; - pc = 0x53200; - run_53200(); - 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: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48c50; - run_48c00(); - return; + r31=0x53600; + pc=0x5ca00; + run_5c800(); return; + case 0x53600: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49db8; - run_49c00(); - return; - case 0x49e1c: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x535b8; + continue; + case 0x5361c: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53630; + pc=0x5ca00; + run_5c800(); return; + case 0x53630: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x48e88; - run_48e00(); - return; - case 0x49e4c: - r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + pc=0x52688; + run_52000(); return; + case 0x5364c: + r4= page[(r29+212)>>>2]; r16 = r4 + -1; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x49828; - run_49800(); - return; + if(r16 <= 0) { + pc=0x53028; + continue; } r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4ac84; - run_4ac00(); - return; + if(r4 != r0) { + pc=0x54484; + run_54000(); return; } r4 = 6 << 16; - r23 = r4 + -27464; + r23 = r4 + 14176; r18 = r0 + 16; - r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x49e98; + r20= page[(r29+304)>>>2]; + pc=0x53698; continue; - case 0x49e84: + case 0x53684: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49ef4; + if(r4 != r0) { + pc=0x536f4; continue; } - case 0x49e98: + case 0x53698: 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 = 0x49e84; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x53684; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x536d0; + pc=0x5ca00; + run_5c800(); return; + case 0x536d0: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x49e98; + if(r4 == r0) { + pc=0x53698; continue; } - case 0x49ef4: - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; + case 0x536f4: + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc = 0x4980c; - run_49800(); - return; - case 0x49f08: + pc=0x5300c; + continue; + case 0x53708: 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; + r3= page[(r29+148)>>>2]; + r23 = r4 + 14176; + case 0x53714: + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc = 0x4983c; - run_49800(); - return; - case 0x49f28: + pc=0x5303c; + continue; + case 0x53728: r6 = r29 + 144; r16 = r6 + r0; r4 = r0 + 10; - 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)); + case 0x53734: + if(r4 != r0) { + if(r4!=0) { + hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } - pc = 0x49f40; + pc=0x53740; 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 0x49f40: + case 0x53740: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = lo; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x49f34; + if(r2 != r0) { + pc=0x53734; continue; } r6 = r6 - r16; - 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]; + page[(r29+196)>>>2] = r6; + pc=0x52aec; + run_52800(); return; + case 0x5376c: + r3= page[(r29+316)>>>2]; + r2= page[(r3+0)>>>2]; + r3= page[(r29+200)>>>2]; + page[(r2+0)>>>2] = r3; + r3= page[(r29+316)>>>2]; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x48ab8; - run_48a00(); - return; - case 0x49f9c: + page[(r29+316)>>>2] = r3; + pc=0x522b8; + run_52000(); return; + case 0x5379c: r4 = r17 + r0; - r16 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + r16= page[(r29+196)>>>2]; r17 = r18 + r0; r18 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x49fb4: + case 0x537b4: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + page[(r29+148)>>>2] = 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 = 0x4a850; - run_4a800(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r3 == r0) { + pc=0x54050; + run_54000(); return; } r8 = r8 + 8; - case 0x49fdc: - r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x537dc: + r3= page[(r29+208)>>>2]; + r5= page[(r29+212)>>>2]; r16 = r16 + r3; - r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r3= page[(r29+176)>>>2]; r4 = r3 < r5 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4a008; - run_4a000(); - return; + if(r4 != r0) { + pc=0x53808; + run_53800(); return; } r4 = r17 & 1; - case 0x4a000: - pc = 0x4a000; + case 0x53800: + pc=0x53800; 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_4a000() throws ExecutionException { /* 0x4a000 - 0x4a200 */ + private final void run_53800() throws ExecutionException { /* 0x53800 - 0x54000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4a000: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4a03c; + for(;;) { + switch(pc) { + case 0x53800: + if(r4 == r0) { + pc=0x5383c; continue; } - 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]; + case 0x53808: + r4= page[(r29+216)>>>2]; + r5= page[(r29+232)>>>2]; + page[(r8+0)>>>2] = r4; + r4= page[(r29+148)>>>2]; r2 = r2 + r5; r4 = r4 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; + page[(r29+148)>>>2] = 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 = 0x4a7cc; - run_4a600(); - return; + page[(r8+4)>>>2] = r5; + page[(r29+152)>>>2] = r2; + if(r4 == r0) { + pc=0x53fcc; + continue; } r8 = r8 + 8; - case 0x4a03c: - r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x5383c: + r4= page[(r29+212)>>>2]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4a05c; + if(r4 == r0) { + pc=0x5385c; continue; } r20 = r18 + r0; - case 0x4a05c: - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4a090; + case 0x5385c: + if(r20 <= 0) { + pc=0x53890; continue; } - r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r4= page[(r29+148)>>>2]; r2 = r2 + r20; r4 = r4 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; + page[(r29+148)>>>2] = 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 = 0x4a87c; - run_4a800(); - return; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + if(r4 == r0) { + pc=0x5407c; + run_54000(); return; } r8 = r8 + 8; - case 0x4a090: - if (r20 < 0) { - /* Next insn is delay slot */ - pc = 0x4a8b4; - run_4a800(); - return; + case 0x53890: + if(r20 < 0) { + pc=0x540b4; + run_54000(); return; } - case 0x4a098: + case 0x53898: r16 = r3 - r20; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x49050; - run_49000(); - return; + if(r16 <= 0) { + pc=0x52850; + run_52800(); return; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x49f08; - run_49e00(); - return; + if(r3 != r0) { + pc=0x53708; + run_53000(); return; } r5 = 6 << 16; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; - r23 = r5 + -27464; + r3= page[(r29+148)>>>2]; + r23 = r5 + 14176; r18 = r0 + 16; - r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4a0e0; + r20= page[(r29+304)>>>2]; + pc=0x538e0; continue; - case 0x4a0cc: + case 0x538cc: r8 = r8 + 8; - case 0x4a0d0: + case 0x538d0: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x49f14; - run_49e00(); - return; + if(r4 != r0) { + pc=0x53714; + run_53000(); return; } - case 0x4a0e0: + case 0x538e0: 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 = 0x4a0cc; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x538cc; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53918; + pc=0x5ca00; + run_5c800(); return; + case 0x53918: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a0d0; + pc=0x538d0; continue; - case 0x4a134: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x53934: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53948; + pc=0x5ca00; + run_5c800(); return; + case 0x53948: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+148)>>>2]; + r4= page[(r29+232)>>>2]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; r3 = r3 + 1; - r5 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; + r5= page[(r29+216)>>>2]; r2 = r2 + r4; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + page[(r8+4)>>>2] = 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 = 0x497cc; - run_49600(); - return; + page[(r8+0)>>>2] = r5; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x52fcc; + run_52800(); return; } - case 0x4a188: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x53988: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31 = 0x4a19c; - pc = 0x53200; - run_53200(); - return; - case 0x4a19c: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48c50; - run_48c00(); - return; + r31=0x5399c; + pc=0x5ca00; + run_5c800(); return; + case 0x5399c: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x497d0; - run_49600(); - return; - case 0x4a1b8: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x52fd0; + run_52800(); return; + case 0x539b8: + r4= page[(r29+304)>>>2]; 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; + r31=0x539cc; + pc=0x5ca00; + run_5c800(); return; + case 0x539cc: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; 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; + pc=0x52718; + run_52000(); return; + case 0x539e4: + f12= page[(r29+228)>>>2]; + page[(r29+260)>>>2] = r8; + f13= page[(r29+224)>>>2]; + r31=0x539f8; + pc=0x48600; + run_48000(); return; + case 0x539f8: + r8= page[(r29+260)>>>2]; + if(r2 != r0) { + pc=0x53c34; + continue; } - 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: r2 = r18 < 72 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4a694; - run_4a600(); - return; + if(r2 != r0) { + pc=0x53e94; + continue; } r16 = 6 << 16; - r16 = r16 + -27872; - case 0x4a218: + r16 = r16 + 13768; + case 0x53a18: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r5; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + page[(r29+188)>>>2] = r5; + page[(r29+196)>>>2] = r2; r30 = r0 + r0; - 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]; + page[(r29+208)>>>2] = r0; + pc=0x52540; + run_52000(); return; + case 0x53a44: + r2= page[(r29+316)>>>2]; r3 = r2 + 7; - /* Next insn is delay slot */ - pc = 0x495d8; - run_49400(); - return; - case 0x4a258: - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + pc=0x52dd8; + run_52800(); return; + case 0x53a58: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+316)>>>2] = r3; + pc=0x52b88; + run_52800(); return; + case 0x53a6c: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+316)>>>2] = r3; + pc=0x52bec; + run_52800(); return; + case 0x53a80: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + page[(r29+316)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x4a2a0: - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + pc=0x52aa4; + run_52800(); return; + case 0x53aa0: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + page[(r29+316)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x492a4; - run_49200(); - return; - case 0x4a2c0: + pc=0x52aa4; + run_52800(); return; + case 0x53ac0: 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]; + r3= page[(r29+148)>>>2]; + r23 = r4 + 14176; + pc=0x527ec; + run_52000(); return; + case 0x53ad4: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53ae8; + pc=0x5ca00; + run_5c800(); return; + case 0x53ae8: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* 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; + pc=0x531b8; + run_53000(); return; + case 0x53b00: + r4 = 6 << 16; + r4 = r4 + 6368; + page[(r8+0)>>>2] = r4; r4 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; - r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r4; + r4= page[(r29+148)>>>2]; r2 = r2 + 1; r4 = r4 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; + page[(r29+148)>>>2] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4a6a4; - run_4a600(); - return; + page[(r29+152)>>>2] = r2; + if(r4 == r0) { + pc=0x53ea4; + continue; } r8 = r8 + 8; r18 = r3 + r0; - case 0x4a33c: - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x4a360; + case 0x53b3c: + if(r18 != r0) { + pc=0x53b60; continue; } - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a360; + r3= page[(r29+212)>>>2]; + if(r3 != r0) { + pc=0x53b60; continue; } r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x49050; - run_49000(); - return; + if(r3 == r0) { + pc=0x52850; + run_52800(); return; } - 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]; + case 0x53b60: + r3= page[(r29+216)>>>2]; + page[(r8+0)>>>2] = r3; + r3= page[(r29+232)>>>2]; 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; + page[(r8+4)>>>2] = r3; + r3= page[(r29+148)>>>2]; + page[(r29+152)>>>2] = 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 = 0x4aae0; - run_4aa00(); - return; + page[(r29+148)>>>2] = r3; + if(r4 == r0) { + pc=0x542e0; + run_54000(); return; } r8 = r8 + 8; - case 0x4a39c: + case 0x53b9c: r18 = r0 - r18; - if (r18 <= 0) { - /* Next insn is delay slot */ - pc = 0x4a730; - run_4a600(); - return; + if(r18 <= 0) { + pc=0x53f30; + continue; } r4 = r18 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4a794; - run_4a600(); - return; + if(r4 != r0) { + pc=0x53f94; + continue; } r5 = 6 << 16; - r23 = r5 + -27464; + r23 = r5 + 14176; r20 = r0 + 16; - r30 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4a3e0; + r30= page[(r29+304)>>>2]; + pc=0x53be0; continue; - case 0x4a3cc: + case 0x53bcc: r8 = r8 + 8; - case 0x4a3d0: + case 0x53bd0: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4a79c; - run_4a600(); - return; + if(r4 != r0) { + pc=0x53f9c; + continue; } - case 0x4a3e0: + case 0x53be0: 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 = 0x4a3cc; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 != r0) { + pc=0x53bcc; continue; } - 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: r4 = r30 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53c18; + pc=0x5ca00; + run_5c800(); return; + case 0x53c18: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a3d0; - run_4a200(); - return; - case 0x4a434: + pc=0x53bd0; + continue; + case 0x53c34: r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x4a6d4; - run_4a600(); - return; + if(r30 == r2) { + pc=0x53ed4; + continue; } r2 = r0 + 71; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4aacc; - run_4aa00(); - return; + if(r20 == r2) { + pc=0x542cc; + run_54000(); return; } - case 0x4a454: - r2 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + case 0x53c54: + r2= page[(r29+224)>>>2]; r23 = r17 | 256; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4ab14; - run_4aa00(); - return; + if(r2 < 0) { + pc=0x54314; + run_54000(); 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 0x4a47c: + f0= page[(r29+228)>>>2]; + page[(r29+188)>>>2] = r0; + f1= page[(r29+224)>>>2]; + page[(r29+252)>>>2] = f0; + page[(r29+248)>>>2] = f1; + case 0x53c7c: r2 = r0 + 102; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4a940; - run_4a800(); - return; + if(r18 == r2) { + pc=0x54140; + run_54000(); return; } r2 = r0 + 70; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4a940; - run_4a800(); - return; + if(r18 == r2) { + pc=0x54140; + run_54000(); return; } r2 = r0 + 69; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4ab3c; - run_4aa00(); - return; + if(r20 == r2) { + pc=0x5433c; + run_54000(); return; } r5 = r30 + r0; - case 0x4a4a4: + case 0x53ca4: r2 = r0 + 2; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = r2; r2 = r29 + 176; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + page[(r29+24)>>>2] = r2; r2 = r29 + 172; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + page[(r29+28)>>>2] = r2; + r4= page[(r29+304)>>>2]; 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 = 0x4a4e4; - pc = 0x4e600; - run_4e600(); - return; - case 0x4a4e4: + r7= page[(r29+252)>>>2]; + r6= page[(r29+248)>>>2]; + page[(r29+20)>>>2] = r5; + page[(r29+32)>>>2] = r2; + page[(r29+256)>>>2] = r5; + page[(r29+260)>>>2] = r8; + r31=0x53ce4; + pc=0x57e00; + run_57800(); return; + case 0x53ce4: 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 = 0x4a508; + r5= page[(r29+256)>>>2]; + r8= page[(r29+260)>>>2]; + if(r18 == r2) { + pc=0x53d08; continue; } r2 = r0 + 71; - if (r18 != r2) { - /* Next insn is delay slot */ - pc = 0x4a514; + if(r18 != r2) { + pc=0x53d14; continue; } - case 0x4a508: + case 0x53d08: r2 = r17 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4ac6c; - run_4ac00(); - return; + if(r2 == r0) { + pc=0x5446c; + run_54000(); return; } - case 0x4a514: + case 0x53d14: r2 = r0 + 70; r4 = r16 + r5; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4aa4c; - run_4aa00(); - return; + if(r20 == r2) { + pc=0x5424c; + run_54000(); return; } - case 0x4a524: + case 0x53d24: f0 = r0; - f2 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; + f2= page[(r29+252)>>>2]; 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 = 0x4a920; - run_4a800(); - return; + f3= page[(r29+248)>>>2]; + 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)) { + pc=0x54120; + run_54000(); return; } - r2 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; + r2= page[(r29+156)>>>2]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4a580; + if(r3 == r0) { + pc=0x53d80; continue; } r5 = r0 + 48; - case 0x4a560: + case 0x53d60: 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]; + page[(r29+156)>>>2] = r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r29+156)>>>2]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a560; + if(r3 != r0) { + pc=0x53d60; continue; } - case 0x4a580: + case 0x53d80: r2 = r2 - r16; - writePages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff] = r2; + page[(r29+212)>>>2] = r2; r2 = r0 + 71; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4a8f4; - run_4a800(); - return; + if(r20 == r2) { + pc=0x540f4; + run_54000(); return; } r2 = r18 < 102 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4ad80; - run_4ac00(); - return; + if(r2 != r0) { + pc=0x54580; + run_54000(); return; } - r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r3= page[(r29+176)>>>2]; r2 = r0 + 102; - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r3; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4abac; - run_4aa00(); - return; + page[(r29+208)>>>2] = r3; + if(r18 == r2) { + pc=0x543ac; + run_54000(); return; } - case 0x4a5b4: - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + case 0x53db4: + r3= page[(r29+212)>>>2]; + r4= page[(r29+208)>>>2]; r2 = r4 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4ab48; - run_4aa00(); - return; + if(r2 != r0) { + pc=0x54348; + run_54000(); return; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4ab80; - run_4aa00(); - return; + if(r17 != r0) { + pc=0x54380; + run_54000(); return; } r2 = r4 + r0; - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x4ad64; - run_4ac00(); - return; + if(r4 < 0) { + pc=0x54564; + run_54000(); return; } - case 0x4a5e4: - r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + case 0x53de4: + r3= page[(r29+208)>>>2]; r18 = r0 + 103; - 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; + page[(r29+196)>>>2] = r3; + case 0x53df0: + r5= page[(r29+188)>>>2]; + if(r5 != r0) { + pc=0x540c0; + run_54000(); 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: - 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + page[(r29+188)>>>2] = r2; r17 = r23 + r0; r30 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x48d40; - run_48c00(); - return; - case 0x4a618: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x52540; + run_52000(); return; + case 0x53e18: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53e2c; + pc=0x5ca00; + run_5c800(); return; + case 0x53e2c: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49a18; - run_49a00(); - return; - case 0x4a644: + pc=0x53218; + run_53000(); return; + case 0x53e44: r16 = 6 << 16; - r16 = r16 + -27884; - /* Next insn is delay slot */ - pc = 0x4965c; - run_49600(); - return; - case 0x4a654: + r16 = r16 + 13756; + pc=0x52e5c; + run_52800(); return; + case 0x53e54: r30 = r0 + -1; r3 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x48b94; - run_48a00(); - return; - case 0x4a664: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x52394; + run_52000(); return; + case 0x53e64: + r4= page[(r29+304)>>>2]; r5 = r0 + 64; - /* 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; + r31=0x53e74; + pc=0x4e200; + run_4e000(); return; + case 0x53e74: + page[(r22+0)>>>2] = r2; + page[(r22+16)>>>2] = r2; + if(r2 == r0) { + pc=0x5458c; + run_54000(); return; } r2 = r0 + 64; - writePages[(r22 + 20) >>> 12][((r22 + 20) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x48a84; - run_48a00(); - return; - case 0x4a694: + page[(r22+20)>>>2] = r2; + pc=0x52284; + run_52000(); return; + case 0x53e94: 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]; + r16 = r16 + 13764; + pc=0x53a18; + continue; + case 0x53ea4: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53eb8; + pc=0x5ca00; + run_5c800(); return; + case 0x53eb8: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r18 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r18= page[(r29+176)>>>2]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a33c; - run_4a200(); - return; - case 0x4a6d4: + pc=0x53b3c; + continue; + case 0x53ed4: r30 = r0 + 6; - /* 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; + pc=0x53c54; + continue; + case 0x53ee0: + page[(r29+260)>>>2] = r8; + r31=0x53eec; + pc=0x10268; + run_10000(); return; + case 0x53eec: + page[(r29+196)>>>2] = r2; + r8= page[(r29+260)>>>2]; + if(r2 >= 0) { + pc=0x5252c; + run_52000(); return; } - case 0x4a6fc: + case 0x53efc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x48d2c; - run_48c00(); - return; - case 0x4a708: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x5252c; + run_52000(); return; + case 0x53f08: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53f1c; + pc=0x5ca00; + run_5c800(); return; + case 0x53f1c: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - 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; + case 0x53f30: + r4= page[(r29+212)>>>2]; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r4; r2 = r4 + r2; - /* 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: + pc=0x5303c; + run_53000(); return; + case 0x53f48: + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; + page[(r29+220)>>>2] = r19; + pc=0x52658; + run_52000(); return; + case 0x53f5c: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x49d60; - run_49c00(); - return; - case 0x4a768: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x53560; + run_53000(); return; + case 0x53f68: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x53f7c; + pc=0x5ca00; + run_5c800(); return; + case 0x53f7c: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49d58; - run_49c00(); - return; - case 0x4a794: + pc=0x53558; + run_53000(); return; + case 0x53f94: r4 = 6 << 16; - r23 = r4 + -27464; - case 0x4a79c: + r23 = r4 + 14176; + case 0x53f9c: 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 = 0x4a708; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+152)>>>2] = r2; + page[(r29+148)>>>2] = r3; + if(r4 == r0) { + pc=0x53f08; continue; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc = 0x4a730; + pc=0x53f30; continue; - case 0x4a7cc: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + case 0x53fcc: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31 = 0x4a7e0; - pc = 0x53200; - run_53200(); - return; - case 0x4a7e0: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x48c50; - run_48c00(); - return; + r31=0x53fe0; + pc=0x5ca00; + run_5c800(); return; + case 0x53fe0: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3= page[(r29+176)>>>2]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a03c; - run_4a000(); + pc=0x5383c; + continue; + case 0x53ffc: + r3= page[(r29+148)>>>2]; + case 0x54000: + pc=0x54000; 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)); + default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } - /* NOT REACHED */ } } - - private final void run_4a800() throws ExecutionException { /* 0x4a800 - 0x4aa00 */ + private final void run_54000() throws ExecutionException { /* 0x54000 - 0x54800 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x54000: + page[(r29+220)>>>2] = r19; + pc=0x52908; + run_52800(); return; + case 0x5400c: + r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r2 = r30 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a820; + if(r3 != r0) { + pc=0x54020; continue; } r2 = r0 + 6; - 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 0x54020: + page[(r29+196)>>>2] = r2; + if(r2 < 0) { + pc=0x54478; + continue; } - case 0x4a82c: + case 0x5402c: r16 = 6 << 16; - writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; + page[(r29+188)>>>2] = r2; + page[(r29+316)>>>2] = r20; r3 = r0 + r0; r30 = r0 + r0; - 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]; + page[(r29+208)>>>2] = r0; + r16 = r16 + 13812; + pc=0x52558; + run_52000(); return; + case 0x54050: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x54064; + pc=0x5ca00; + run_5c800(); return; + case 0x54064: + if(r2 != r0) { + pc=0x52450; + run_52000(); return; } - r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r2= page[(r29+152)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x49fdc; - run_49e00(); - return; - case 0x4a87c: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x537dc; + run_53000(); return; + case 0x5407c: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x54090; + pc=0x5ca00; + run_5c800(); return; + case 0x54090: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+176)>>>2]; + r5= page[(r29+212)>>>2]; + r2= page[(r29+152)>>>2]; r3 = r5 - r3; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a090; - run_4a000(); - return; - case 0x4a8b4: + pc=0x53890; + run_53800(); return; + case 0x540b4: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4a098; - run_4a000(); - return; - case 0x4a8c0: + pc=0x53898; + run_53800(); return; + case 0x540c0: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+188)>>>2] = r2; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x48d48; - run_48c00(); - return; - case 0x4a8e0: + pc=0x52548; + run_52000(); return; + case 0x540e0: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + 45; - /* Next insn is delay slot */ - pc = 0x49648; - run_49600(); - return; - case 0x4a8f4: - r2 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + pc=0x52e48; + run_52800(); return; + case 0x540f4: + r2= page[(r29+176)>>>2]; r3 = r2 < -3 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a990; + if(r3 != r0) { + pc=0x54190; continue; } r3 = r30 < r2 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4a990; + if(r3 != r0) { + pc=0x54190; continue; } - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x4a5b4; - run_4a400(); - return; - case 0x4a920: + page[(r29+208)>>>2] = r2; + pc=0x53db4; + run_53800(); return; + case 0x54120: r2 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x4a580; - run_4a400(); - return; - case 0x4a92c: + pc=0x53d80; + run_53800(); return; + case 0x5412c: 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: + r3= page[(r29+148)>>>2]; + r23 = r5 + 14176; + pc=0x5339c; + run_53000(); return; + case 0x54140: r2 = r0 + 3; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = r2; r2 = r29 + 176; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + page[(r29+24)>>>2] = r2; r2 = r29 + 172; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + page[(r29+28)>>>2] = r2; + r4= page[(r29+304)>>>2]; 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 = 0x4a97c; - pc = 0x4e600; - run_4e600(); - return; - case 0x4a97c: + r7= page[(r29+252)>>>2]; + r6= page[(r29+248)>>>2]; + page[(r29+20)>>>2] = r30; + page[(r29+32)>>>2] = r2; + page[(r29+260)>>>2] = r8; + r31=0x5417c; + pc=0x57e00; + run_57800(); return; + case 0x5417c: r16 = r2 + r0; r5 = r30 + r0; - r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4a514; - run_4a400(); - return; - case 0x4a990: + r8= page[(r29+260)>>>2]; + pc=0x53d14; + run_53800(); return; + case 0x54190: r18 = r18 + -2; - case 0x4a994: + case 0x54194: 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 = 0x4ad34; - run_4ac00(); - return; + page[(r29+176)>>>2] = r2; + addr=r29+164; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 < 0) { + pc=0x54534; + continue; } 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 0x4a9b0: + addr=r29+165; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x541b0: r3 = r2 < 10 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4abd8; - run_4aa00(); - return; + if(r3 == r0) { + pc=0x543d8; + continue; } 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+166; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r29 + 168; r4 = r29 + 164; - case 0x4a9d4: - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x541d4: + r3= page[(r29+212)>>>2]; 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; + page[(r29+196)>>>2] = r3; + r3= page[(r29+212)>>>2]; + page[(r29+236)>>>2] = r4; r2 = r3 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4aa20; - run_4aa00(); - return; + if(r2 != r0) { + pc=0x54220; + continue; } - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_4aa00() throws ExecutionException { /* 0x4aa00 - 0x4ac00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4aa00: + case 0x541f8: + r3= page[(r29+196)>>>2]; r3 = r3 + 1; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + page[(r29+196)>>>2] = r3; r2 = r3 + r0; - if (r3 < 0) { - /* Next insn is delay slot */ - pc = 0x4aa3c; + if(r3 < 0) { + pc=0x5423c; continue; } - case 0x4aa14: - writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - case 0x4aa20: + case 0x54214: + page[(r29+208)>>>2] = r0; + pc=0x53df0; + run_53800(); return; + case 0x54220: r17 = r17 & 1; - 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 = 0x4aa14; + if(r17 != r0) { + pc=0x541f8; continue; } - case 0x4aa3c: + r2= page[(r29+196)>>>2]; + if(r2 >= 0) { + pc=0x54214; + continue; + } + case 0x5423c: r2 = r0 + r0; - 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 */ + page[(r29+208)>>>2] = r0; + pc=0x53df0; + run_53800(); return; + case 0x5424c: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r2 = r0 + 48; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x4aa70; + if(r3 == r2) { + pc=0x54270; continue; } - case 0x4aa5c: - r2 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + case 0x5425c: + r2= page[(r29+176)>>>2]; r4 = r4 + r2; - /* Next insn is delay slot */ - pc = 0x4a524; - run_4a400(); - return; - case 0x4aa70: + pc=0x53d24; + run_53800(); return; + case 0x54270: f0 = r0; - f2 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; + f2= page[(r29+252)>>>2]; 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 = 0x4aa5c; + f3= page[(r29+248)>>>2]; + 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)) { + pc=0x5425c; continue; } r2 = r0 + 1; r2 = r2 - r5; - writePages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff] = r2; + page[(r29+176)>>>2] = r2; r4 = r4 + r2; - /* 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 */ + pc=0x53d24; + run_53800(); return; + case 0x542ac: + page[(r29+188)>>>2] = r30; + page[(r29+196)>>>2] = r30; + addr=r29+182; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; + page[(r29+316)>>>2] = r20; r30 = r0 + r0; - 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; + page[(r29+208)>>>2] = r0; + pc=0x52540; + run_52000(); return; + case 0x542cc: + if(r30 != r0) { + pc=0x53c54; + run_53800(); return; } r30 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4a454; - run_4a400(); - return; - case 0x4aae0: - r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + pc=0x53c54; + run_53800(); return; + case 0x542e0: + r4= page[(r29+304)>>>2]; r5 = r22 + r0; r6 = r29 + 144; - /* 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; + r31=0x542f4; + pc=0x5ca00; + run_5c800(); return; + case 0x542f4: + if(r2 != r0) { + pc=0x52450; + run_52000(); 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= page[(r29+176)>>>2]; + r2= page[(r29+152)>>>2]; + r3= page[(r29+148)>>>2]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4a39c; - run_4a200(); - return; - case 0x4ab14: - r3 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + pc=0x53b9c; + run_53800(); return; + case 0x54314: + r3= page[(r29+224)>>>2]; r2 = 32768 << 16; - r4 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + r4= page[(r29+228)>>>2]; 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 = 0x4a47c; - run_4a400(); - return; - case 0x4ab3c: + page[(r29+248)>>>2] = r2; + page[(r29+252)>>>2] = r4; + page[(r29+188)>>>2] = r5; + pc=0x53c7c; + run_53800(); return; + case 0x5433c: r5 = r30 + 1; - /* 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; + pc=0x53ca4; + run_53800(); return; + case 0x54348: + r3= page[(r29+208)>>>2]; + if(r3 <= 0) { + pc=0x544f4; + continue; } r2 = r0 + 1; - case 0x4ab5c: - r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + case 0x5435c: + r3= page[(r29+212)>>>2]; r2 = r2 + r3; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4ab9c; + page[(r29+196)>>>2] = r2; + if(r2 < 0) { + pc=0x5439c; continue; } - case 0x4ab74: + case 0x54374: r18 = r0 + 103; - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - case 0x4ab80: - r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + pc=0x53df0; + run_53800(); return; + case 0x54380: + r3= page[(r29+208)>>>2]; r3 = r3 + 1; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + page[(r29+196)>>>2] = r3; r2 = r3 + r0; - if (r3 >= 0) { - /* Next insn is delay slot */ - pc = 0x4ab74; + if(r3 >= 0) { + pc=0x54374; continue; } - case 0x4ab9c: + case 0x5439c: r2 = r0 + r0; r18 = r0 + 103; - /* 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; + pc=0x53df0; + run_53800(); return; + case 0x543ac: + if(r3 <= 0) { + pc=0x544cc; + continue; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4aca8; - run_4ac00(); - return; + if(r30 != r0) { + pc=0x544a8; + continue; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4aca8; - run_4ac00(); - return; + if(r17 != r0) { + pc=0x544a8; + continue; } r2 = r3 + r0; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - case 0x4abd8: + page[(r29+196)>>>2] = r3; + pc=0x53df0; + run_53800(); return; + case 0x543d8: r6 = r29 + 163; r3 = r6 + r0; r4 = r0 + 10; - case 0x4abe4: - if (r4 != r0) { - /* Next insn is delay slot */ - hi = r2 % r4; - lo = r2 / r4; - pc = 0x4abf0; + case 0x543e4: + if(r4 != r0) { + hi = r2%r4; lo = r2/r4; + pc=0x543f0; continue; } - hi = r2 % r4; - lo = r2 / r4; + hi = r2%r4; lo = r2/r4; throw new ExecutionException("Break"); - case 0x4abf0: + case 0x543f0: 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 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: + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = lo; r5 = r2 < 10 ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4abe4; - run_4aa00(); - return; + if(r5 == r0) { + pc=0x543e4; + continue; } 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 = 0x4ad70; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x54570; continue; } r2 = r29 + 166; - /* Next insn is delay slot */ - pc = 0x4ac40; + pc=0x54440; continue; - 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 */ + case 0x5443c: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - case 0x4ac40: + case 0x54440: 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 = 0x4ac3c; + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r4 != r6) { + pc=0x5443c; continue; } r4 = r29 + 164; r2 = r4 - r3; r3 = r29 + 166; r2 = r3 + r2; - /* 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: + pc=0x541d4; + continue; + case 0x5446c: + r2= page[(r29+156)>>>2]; + pc=0x53d80; + run_53800(); return; + case 0x54478: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4a82c; - run_4a800(); - return; - case 0x4ac84: + pc=0x5402c; + continue; + case 0x54484: r5 = 6 << 16; - r23 = r5 + -27464; - /* Next insn is delay slot */ - pc = 0x49ef4; - run_49e00(); - return; - case 0x4ac94: + r23 = r5 + 14176; + pc=0x536f4; + run_53000(); return; + case 0x54494: 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]; + r3= page[(r29+148)>>>2]; + r23 = r4 + 14176; + pc=0x537b4; + run_53000(); return; + case 0x544a8: + r3= page[(r29+208)>>>2]; r2 = r30 + 1; r2 = r3 + r2; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; + page[(r29+196)>>>2] = r2; + if(r2 >= 0) { + pc=0x53df0; + run_53800(); return; } - case 0x4acc0: + case 0x544c0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - case 0x4accc: - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4ad48; + pc=0x53df0; + run_53800(); return; + case 0x544cc: + if(r30 != r0) { + pc=0x54548; continue; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4ad48; + if(r17 != r0) { + pc=0x54548; continue; } r3 = r0 + 1; r2 = r0 + 1; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - case 0x4acf4: + page[(r29+196)>>>2] = r3; + pc=0x53df0; + run_53800(); return; + case 0x544f4: r2 = r0 + 2; r2 = r2 - r3; - /* 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]; + pc=0x5435c; + continue; + case 0x54504: + r3= page[(r29+316)>>>2]; + r30= page[(r3+0)>>>2]; r2 = r3 + 4; r3 = r4 + r0; - if (r30 >= 0) { - /* Next insn is delay slot */ - pc = 0x4971c; - run_49600(); - return; + if(r30 >= 0) { + pc=0x52f1c; + run_52800(); return; } - writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; + page[(r29+316)>>>2] = r2; r30 = r0 + -1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x48b8c; - run_48a00(); - return; - case 0x4ad34: + pc=0x5238c; + run_52000(); return; + case 0x54534: 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 = 0x4a9b0; - run_4a800(); - return; - case 0x4ad48: - r30 = r30 + 2; - writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r30; - r2 = r30 + r0; - if (r30 >= 0) { - /* Next insn is delay slot */ - pc = 0x4a5f0; - run_4a400(); - return; - } - /* Next insn is delay slot */ - pc = 0x4acc0; + addr=r29+165; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x541b0; continue; - case 0x4ad64: + case 0x54548: + r30 = r30 + 2; + page[(r29+196)>>>2] = r30; + r2 = r30 + r0; + if(r30 >= 0) { + pc=0x53df0; + run_53800(); return; + } + pc=0x544c0; + continue; + case 0x54564: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4a5e4; - run_4a400(); - return; - case 0x4ad70: + pc=0x53de4; + run_53800(); return; + case 0x54570: r2 = r29 + 166; r4 = r29 + 164; - /* Next insn is delay slot */ - pc = 0x4a9d4; - run_4a800(); - return; - 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]; + pc=0x541d4; + continue; + case 0x54580: + r2= page[(r29+176)>>>2]; + pc=0x54194; + continue; + case 0x5458c: + r3= page[(r29+304)>>>2]; r2 = r0 + 12; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + page[(r3+0)>>>2] = 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_4ae00() throws ExecutionException { /* 0x4ae00 - 0x4b000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4ae00: + pc=0x52468; + run_52000(); return; + case 0x54600: 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; + page[(r29+1324)>>>2] = r31; + page[(r29+1312)>>>2] = r22; + page[(r29+1308)>>>2] = 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 = 0x4ae44; - pc = 0x51200; - run_51200(); - return; - case 0x4ae44: - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + page[(r29+1336)>>>2] = r6; + page[(r29+1340)>>>2] = r7; + page[(r29+1320)>>>2] = r30; + page[(r29+1316)>>>2] = r23; + page[(r29+1304)>>>2] = r20; + page[(r29+1300)>>>2] = r19; + page[(r29+1296)>>>2] = r18; + page[(r29+1292)>>>2] = r17; + page[(r29+1288)>>>2] = r16; + r31=0x54644; + pc=0x5aa00; + run_5a800(); return; + case 0x54644: + r2= page[(r2+0)>>>2]; r4 = r2 + r0; - 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; + page[(r29+1236)>>>2] = r2; + r31=0x5465c; + pc=0x10268; + run_10000(); return; + case 0x5465c: + page[(r29+1256)>>>2] = r2; + if(r21 == r0) { + pc=0x54678; continue; } - r2 = readPages[(r21 + 56) >>> 12][((r21 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4b1ec; - run_4b000(); - return; + r2= page[(r21+56)>>>2]; + if(r2 == r0) { + pc=0x549ec; + run_54800(); return; } - 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 */ + case 0x54678: + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4aeac; + if(r4 != r0) { + pc=0x546ac; continue; } - r4 = readPages[(r22 + 100) >>> 12][((r22 + 100) >>> 2) & 0x3ff]; + r4= page[(r22+100)>>>2]; 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; + page[(r22+100)>>>2] = r2; + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r3 & 65535; - case 0x4aeac: + case 0x546ac: r4 = r2 & 8; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b058; - run_4b000(); - return; + if(r4 == r0) { + pc=0x54858; + run_54800(); return; } - r4 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b058; - run_4b000(); - return; + r4= page[(r22+16)>>>2]; + if(r4 == r0) { + pc=0x54858; + run_54800(); return; } r2 = r2 & 26; r4 = r0 + 10; - if (r2 == r4) { - /* Next insn is delay slot */ - pc = 0x4b088; - run_4b000(); - return; + if(r2 == r4) { + pc=0x54888; + run_54800(); return; } - case 0x4aed8: + case 0x546d8: r3 = r29 + 40; 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; + page[(r29+1168)>>>2] = r3; + page[(r29+1176)>>>2] = r0; + page[(r29+1172)>>>2] = r0; + page[(r29+1240)>>>2] = r0; + page[(r29+1252)>>>2] = r0; + page[(r29+1248)>>>2] = r0; + page[(r29+1264)>>>2] = r0; + page[(r29+1260)>>>2] = r0; + page[(r29+1220)>>>2] = r0; r8 = r3 + r0; - 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 */ + r19 = r2 + 14580; + case 0x5470c: + r3= page[(r29+1336)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4b6a4; - run_4b600(); - return; + if(r2 == r0) { + pc=0x54ea4; + run_54800(); return; } - case 0x4af24: + case 0x54724: r3 = r0 + 37; - r16 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x4af44; + r16= page[(r29+1336)>>>2]; + if(r2 != r3) { + pc=0x54744; continue; } - /* Next insn is delay slot */ - pc = 0x4afb0; + pc=0x547b0; continue; - case 0x4af3c: - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x4af58; + case 0x5473c: + if(r2 == r3) { + pc=0x54758; continue; } - case 0x4af44: + case 0x54744: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4af3c; + if(r2 != r0) { + pc=0x5473c; continue; } - case 0x4af58: - r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + case 0x54758: + r3= page[(r29+1336)>>>2]; r17 = r16 - r3; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x4afb0; + if(r17 == r0) { + pc=0x547b0; continue; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1336)>>>2]; 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; + page[(r29+1176)>>>2] = r2; + r2= page[(r29+1172)>>>2]; + page[(r8+0)>>>2] = r3; r2 = r2 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r2; + page[(r29+1172)>>>2] = r2; r2 = r2 < 8 ? 1 : 0; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4b180; - run_4b000(); - return; + page[(r8+4)>>>2] = r17; + if(r2 == r0) { + pc=0x54980; + run_54800(); return; } r8 = r8 + 8; - case 0x4afa0: - r3 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; + case 0x547a0: + r3= page[(r29+1220)>>>2]; r3 = r3 + r17; - 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 */ + page[(r29+1220)>>>2] = r3; + case 0x547b0: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4b1a8; - run_4b000(); - return; + if(r2 == r0) { + pc=0x549a8; + run_54800(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r5 = r0 + r0; r30 = r0 + -1; - writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r0; + page[(r29+1208)>>>2] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; - 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 */ + case 0x547e0: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r3 = r16 + 1; - case 0x4afe8: + case 0x547e8: r2 = r18 + -32; - r4 = (r2 & 0xffffffffL) < (89 & 0xffffffffL) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4bc10; - run_4bc00(); - return; + r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x55410; + run_55000(); return; } r4 = 6 << 16; r2 = r2 << 2; - case 0x4b000: - pc = 0x4b000; + case 0x54800: + pc=0x54800; 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_4b000() throws ExecutionException { /* 0x4b000 - 0x4b200 */ + private final void run_54800() throws ExecutionException { /* 0x54800 - 0x55000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4b000: - r4 = r4 + -27432; + for(;;) { + switch(pc) { + case 0x54800: + r4 = r4 + 14208; r2 = r4 + r2; - r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r2; + r2= page[(r2+0)>>>2]; + pc=r2; return; - case 0x4b018: + case 0x54818: r17 = r17 | 16; - case 0x4b01c: + case 0x5481c: r16 = r3 + r0; - /* 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]; + pc=0x547e0; + run_54000(); return; + case 0x54828: + r4= page[(r29+1340)>>>2]; + r7= page[(r4+0)>>>2]; r2 = r4 + 4; - if (r7 >= 0) { - /* Next insn is delay slot */ - pc = 0x4bc00; - run_4bc00(); - return; + if(r7 >= 0) { + pc=0x55400; + run_55000(); return; } r7 = r0 - r7; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; - case 0x4b048: + page[(r29+1340)>>>2] = r2; + case 0x54848: r17 = r17 | 4; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4afe0; - run_4ae00(); - return; - case 0x4b058: + pc=0x547e0; + run_54000(); return; + case 0x54858: r4 = r21 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31 = 0x4b068; - pc = 0x4d400; - run_4d400(); - return; - case 0x4b068: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4b148; + r31=0x54868; + pc=0x56c00; + run_56800(); return; + case 0x54868: + if(r2 != r0) { + pc=0x54948; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r4 = r0 + 10; r2 = r3 & 65535; r2 = r2 & 26; - if (r2 != r4) { - /* Next insn is delay slot */ - pc = 0x4aed8; - run_4ae00(); - return; + if(r2 != r4) { + pc=0x546d8; + run_54000(); return; } - 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 */ + case 0x54888: + addr=r22+14; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4aed8; - run_4ae00(); - return; + if(r2 < 0) { + pc=0x546d8; + run_54000(); 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r22+28)>>>2]; r4 = r0 + -3; - writePages[(r29 + 1092) >>> 12][((r29 + 1092) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r22 + 36) >>> 12][((r22 + 36) >>> 2) & 0x3ff]; + page[(r29+1092)>>>2] = r2; + r2= page[(r22+36)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1100)>>>2] = r2; + r3= page[(r22+100)>>>2]; 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= page[(r29+1336)>>>2]; + r7= page[(r29+1340)>>>2]; + page[(r29+1064)>>>2] = r2; + page[(r29+1080)>>>2] = 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 = 0x4b0f4; - pc = 0x4ae00; - run_4ae00(); - return; - case 0x4b0f4: + page[(r29+1164)>>>2] = r3; + page[(r29+1072)>>>2] = r2; + page[(r29+1084)>>>2] = r2; + page[(r29+1088)>>>2] = r0; + r31=0x548f4; + pc=0x54600; + run_54000(); return; + case 0x548f4: r16 = r2 + r0; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4b118; + if(r2 < 0) { + pc=0x54918; continue; } r4 = r21 + r0; r5 = r29 + 1064; - /* 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; + r31=0x54910; + pc=0x4a400; + run_4a000(); return; + case 0x54910: + if(r2 != r0) { + pc=0x56978; + run_56800(); return; } - case 0x4b118: - addr = r29 + 1076; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x54918: + addr=r29+1076; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4b13c; + if(r2 == r0) { + pc=0x5493c; continue; } - addr = r22 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r22+12; + tmp= page[(addr)>>>2]; + 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 0x4b13c: + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x5493c: r2 = r16 + r0; - /* Next insn is delay slot */ - pc = 0x4b14c; + pc=0x5494c; continue; - case 0x4b148: + case 0x54948: r2 = r0 + -1; - 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]; + case 0x5494c: + r31= page[(r29+1324)>>>2]; + r30= page[(r29+1320)>>>2]; + r23= page[(r29+1316)>>>2]; + r22= page[(r29+1312)>>>2]; + r21= page[(r29+1308)>>>2]; + r20= page[(r29+1304)>>>2]; + r19= page[(r29+1300)>>>2]; + r18= page[(r29+1296)>>>2]; + r17= page[(r29+1292)>>>2]; + r16= page[(r29+1288)>>>2]; r29 = r29 + 1328; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4b180: + case 0x54980: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31 = 0x4b194; - pc = 0x53a00; - run_53a00(); - return; - case 0x4b194: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4b1cc; + r31=0x54994; + pc=0x5d200; + run_5d000(); return; + case 0x54994: + if(r2 != r0) { + pc=0x549cc; continue; } r8 = r29 + 40; - /* 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; + pc=0x547a0; + run_54000(); return; + case 0x549a8: + r2= page[(r29+1176)>>>2]; + if(r2 == r0) { + pc=0x549cc; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x549cc; + pc=0x5d200; + run_5d000(); return; + case 0x549cc: + addr=r22+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4b148; + if(r2 != r0) { + pc=0x54948; continue; } - r2 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4b14c; + r2= page[(r29+1220)>>>2]; + pc=0x5494c; continue; - case 0x4b1ec: + case 0x549ec: r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x4b1f8; - pc = 0x41400; - run_41400(); - return; - 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_4b200() throws ExecutionException { /* 0x4b200 - 0x4b400 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4b200: + r31=0x549f8; + pc=0x4ac00; + run_4a800(); return; + case 0x549f8: + pc=0x54678; + run_54000(); return; + case 0x54a00: r5 = r0 + 43; r16 = r3 + r0; - /* 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; + pc=0x547e0; + run_54000(); return; + case 0x54a10: + page[(r29+1336)>>>2] = r3; + r3= page[(r29+1340)>>>2]; + page[(r29+1208)>>>2] = r7; + r16= page[(r3+0)>>>2]; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r20 = r3 + 4; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x4cca4; - run_4cc00(); - return; + if(r16 == r0) { + pc=0x564a4; + run_56000(); return; } r4 = r16 + r0; - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4cb84; - run_4ca00(); - return; + if(r30 < 0) { + pc=0x56384; + run_56000(); return; } r5 = r0 + r0; r6 = r30 + r0; - 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; + page[(r29+1284)>>>2] = r8; + r31=0x54a50; + pc=0x5ac00; + run_5a800(); return; + case 0x54a50: + r8= page[(r29+1284)>>>2]; + if(r2 == r0) { + pc=0x56638; + run_56000(); return; } r2 = r2 - r16; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + page[(r29+1216)>>>2] = r2; r2 = r30 < r2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4ca7c; - run_4ca00(); - return; + if(r2 != r0) { + pc=0x5627c; + run_56000(); 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 0x54a70: + r2= page[(r29+1216)>>>2]; + if(r2 < 0) { + pc=0x563a0; + run_56000(); return; } - 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 */ + case 0x54a80: + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; + page[(r29+1212)>>>2] = r2; + page[(r29+1340)>>>2] = r20; r30 = r0 + r0; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; - case 0x4b294: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4b2ac; + page[(r29+1232)>>>2] = r0; + case 0x54a94: + if(r3 == r0) { + pc=0x54aac; continue; } - case 0x4b29c: - r2 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + case 0x54a9c: + r2= page[(r29+1212)>>>2]; r2 = r2 + 1; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; - case 0x4b2ac: + page[(r29+1212)>>>2] = r2; + case 0x54aac: r4 = r17 & 2; - writePages[(r29 + 1224) >>> 12][((r29 + 1224) >>> 2) & 0x3ff] = r4; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b2cc; + page[(r29+1224)>>>2] = r4; + if(r4 == r0) { + pc=0x54acc; continue; } - r5 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + r5= page[(r29+1212)>>>2]; r5 = r5 + 2; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r5; - case 0x4b2cc: + page[(r29+1212)>>>2] = r5; + case 0x54acc: r2 = r17 & 132; - writePages[(r29 + 1228) >>> 12][((r29 + 1228) >>> 2) & 0x3ff] = r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4bc64; - run_4bc00(); - return; + page[(r29+1228)>>>2] = r2; + if(r2 != r0) { + pc=0x55464; + run_55000(); return; } - r4 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + r4= page[(r29+1208)>>>2]; + r5= page[(r29+1212)>>>2]; r20 = r4 - r5; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4bc64; - run_4bc00(); - return; + if(r20 <= 0) { + pc=0x55464; + run_55000(); return; } r2 = r20 < 17 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4cbac; - run_4ca00(); - return; + if(r2 != r0) { + pc=0x563ac; + run_56000(); 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= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; + page[(r29+1244)>>>2] = r19; r23 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4b32c; + pc=0x54b2c; continue; - case 0x4b318: + case 0x54b18: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4b388; + if(r4 != r0) { + pc=0x54b88; continue; } - case 0x4b32c: + case 0x54b2c: 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 = 0x4b318; + page[(r8+0)>>>2] = r19; + page[(r8+4)>>>2] = r23; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x54b18; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x54b64; + pc=0x5d200; + run_5d000(); return; + case 0x54b64: + if(r2 != r0) { + pc=0x549cc; + continue; } 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= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b32c; + if(r4 == r0) { + pc=0x54b2c; continue; } - case 0x4b388: + case 0x54b88: r3 = r3 + 1; - r4 = readPages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff]; + r4= page[(r29+1244)>>>2]; r2 = r20 + r2; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4c2e4; - run_4c200(); - return; + page[(r8+0)>>>2] = r4; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55ae4; + run_55800(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r8 = r8 + 8; - case 0x4b3b8: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4b3f4; + case 0x54bb8: + if(r3 == r0) { + pc=0x54bf4; continue; } r3 = r29 + 1206; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + page[(r8+0)>>>2] = r3; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c160; - run_4c000(); - return; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55960; + run_55800(); return; } r8 = r8 + 8; - 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 0x54bf4: + r3= page[(r29+1224)>>>2]; + if(r3 == r0) { + pc=0x54c38; + continue; } - 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: r3 = r29 + 1204; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + page[(r8+0)>>>2] = r3; r3 = r0 + 2; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; r2 = r2 + 2; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c134; - run_4c000(); - return; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55934; + run_55800(); return; } r8 = r8 + 8; - case 0x4b438: - r4 = readPages[(r29 + 1228) >>> 12][((r29 + 1228) >>> 2) & 0x3ff]; + case 0x54c38: + r4= page[(r29+1228)>>>2]; r3 = r0 + 128; - if (r4 == r3) { - /* Next insn is delay slot */ - pc = 0x4bfcc; - run_4be00(); - return; + if(r4 == r3) { + pc=0x557cc; + run_55000(); return; } - case 0x4b448: - r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + case 0x54c48: + r3= page[(r29+1216)>>>2]; r20 = r30 - r3; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4b518; + if(r20 <= 0) { + pc=0x54d18; continue; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c90c; - run_4c800(); - return; + if(r3 != r0) { + pc=0x5610c; + run_56000(); return; } r5 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r5 + -27076; + r3= page[(r29+1172)>>>2]; + r23 = r5 + 14564; r30 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4b494; + pc=0x54c94; continue; - case 0x4b480: + case 0x54c80: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4b4f0; + if(r4 != r0) { + pc=0x54cf0; continue; } - case 0x4b494: + case 0x54c94: 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 = 0x4b480; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r30; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x54c80; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x54ccc; + pc=0x5d200; + run_5d000(); return; + case 0x54ccc: + if(r2 != r0) { + pc=0x549cc; + continue; } 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= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b494; + if(r4 == r0) { + pc=0x54c94; continue; } - case 0x4b4f0: + case 0x54cf0: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4c108; - run_4c000(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55908; + run_55800(); return; } r8 = r8 + 8; - case 0x4b518: + case 0x54d18: r3 = r17 & 256; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4be64; - run_4be00(); - return; + if(r3 != r0) { + pc=0x55664; + run_55000(); return; } - r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + r3= page[(r29+1216)>>>2]; + page[(r8+0)>>>2] = 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; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; + page[(r29+1176)>>>2] = r2; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4bd68; - run_4bc00(); - return; + if(r3 == r0) { + pc=0x55568; + run_55000(); return; } - case 0x4b550: + case 0x54d50: r8 = r8 + 8; - case 0x4b554: + case 0x54d54: r17 = r17 & 4; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x4b650; - run_4b600(); - return; + if(r17 == r0) { + pc=0x54e50; + continue; } - r3 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + r3= page[(r29+1208)>>>2]; + r4= page[(r29+1212)>>>2]; r16 = r3 - r4; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x4b650; - run_4b600(); - return; + if(r16 <= 0) { + pc=0x54e50; + continue; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4cce8; - run_4cc00(); - return; + if(r3 != r0) { + pc=0x564e8; + run_56000(); return; } - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - writePages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff] = r19; + r3= page[(r29+1172)>>>2]; + page[(r29+1244)>>>2] = r19; r17 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4b5ac; + pc=0x54dac; continue; - case 0x4b598: + case 0x54d98: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4b608; - run_4b600(); - return; + if(r4 != r0) { + pc=0x54e08; + continue; } - case 0x4b5ac: + case 0x54dac: 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 = 0x4b598; + page[(r8+0)>>>2] = r19; + page[(r8+4)>>>2] = r17; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r6 != r0) { + pc=0x54d98; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x54de4; + pc=0x5d200; + run_5d000(); return; + case 0x54de4: + if(r2 != r0) { + pc=0x549cc; + continue; } 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= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - 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: - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b5ac; - run_4b400(); - return; + if(r4 == r0) { + pc=0x54dac; + continue; } - case 0x4b608: + case 0x54e08: r3 = r3 + 1; - r5 = readPages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff]; + r5= page[(r29+1244)>>>2]; r2 = r2 + r16; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4b650; + page[(r8+0)>>>2] = r5; + page[(r8+4)>>>2] = r16; + page[(r29+1176)>>>2] = r2; + if(r3 != r0) { + pc=0x54e50; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x54e44; + pc=0x5d200; + run_5d000(); return; + case 0x54e44: + if(r2 != r0) { + pc=0x549cc; + continue; } - 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]; + r2= page[(r29+1176)>>>2]; + case 0x54e50: + r3= page[(r29+1212)>>>2]; + r5= page[(r29+1208)>>>2]; r4 = r3 < r5 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b66c; + if(r4 == r0) { + pc=0x54e6c; continue; } r3 = r5 + r0; - case 0x4b66c: - r4 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; + case 0x54e6c: + r4= page[(r29+1220)>>>2]; r4 = r4 + r3; - writePages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff] = r4; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4bd94; - run_4bc00(); - return; + page[(r29+1220)>>>2] = r4; + if(r2 != r0) { + pc=0x55594; + run_55000(); return; } - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r0; + page[(r29+1172)>>>2] = r0; r8 = r29 + 40; - 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 */ + case 0x54e8c: + r3= page[(r29+1336)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4af24; - run_4ae00(); - return; + if(r2 != r0) { + pc=0x54724; + run_54000(); 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; + case 0x54ea4: + r16= page[(r29+1336)>>>2]; + pc=0x547b0; + run_54000(); return; + case 0x54eb0: + if(r5 != r0) { + pc=0x5481c; + continue; } r5 = r0 + 32; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4afe0; - run_4ae00(); - return; - case 0x4b6c8: + pc=0x547e0; + run_54000(); return; + case 0x54ec8: r17 = r17 | 1; r16 = r3 + r0; - /* 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 */ + pc=0x547e0; + run_54000(); return; + case 0x54ed8: + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r18 = tmp; r4 = r3 + 1; - if (r18 == r6) { - /* Next insn is delay slot */ - pc = 0x4d0fc; - run_4d000(); - return; + if(r18 == r6) { + pc=0x568fc; + run_56800(); 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 = 0x4b72c; + if(r3 == r0) { + pc=0x54f2c; continue; } - case 0x4b6fc: + case 0x54efc: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x4b6fc; + r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x54efc; continue; } - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4cad8; - run_4ca00(); - return; + if(r30 < 0) { + pc=0x562d8; + run_56000(); return; } - case 0x4b72c: + case 0x54f2c: r3 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x4afe8; - run_4ae00(); - return; - case 0x4b738: + pc=0x547e8; + run_54000(); return; + case 0x54f38: 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 = 0x4bb8c; - run_4ba00(); - return; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + if(r2 == r0) { + pc=0x5538c; + run_55000(); return; } - case 0x4b750: - r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + case 0x54f50: + r3= page[(r29+1340)>>>2]; r4 = r0 + r0; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r2= page[(r3+0)>>>2]; 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; + page[(r29+1340)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - case 0x4b76c: - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4b77c; + case 0x54f6c: + if(r30 < 0) { + pc=0x54f7c; continue; } r5 = r0 + -129; r17 = r17 & r5; - case 0x4b77c: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4bdc0; - run_4bc00(); - return; + case 0x54f7c: + if(r2 != r0) { + pc=0x555c0; + run_55000(); return; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4bdc0; - run_4bc00(); - return; + if(r30 != r0) { + pc=0x555c0; + run_55000(); return; } - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c1b4; - run_4c000(); - return; + if(r4 != r0) { + pc=0x559b4; + run_55800(); return; } r2 = r17 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4c1b4; - run_4c000(); - return; + if(r2 == r0) { + pc=0x559b4; + run_55800(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + 1; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + page[(r29+1216)>>>2] = r2; r16 = r29 + 1103; - case 0x4b7b4: - r2 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + case 0x54fb4: + r2= page[(r29+1216)>>>2]; r4 = r2 < r30 ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4b7cc; + if(r4 == r0) { + pc=0x54fcc; continue; } r2 = r30 + r0; - 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: + case 0x54fcc: + page[(r29+1212)>>>2] = r2; + page[(r29+1232)>>>2] = r0; + pc=0x54a94; + continue; + case 0x54fdc: 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 = 0x4bbd0; - run_4ba00(); - return; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + if(r2 == r0) { + pc=0x553d0; + run_55000(); return; } - case 0x4b7f4: - r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + case 0x54ff4: + r3= page[(r29+1340)>>>2]; r4 = r0 + 1; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; - case 0x4b800: - pc = 0x4b800; + r2= page[(r3+0)>>>2]; + case 0x55000: + pc=0x55000; 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_4b800() throws ExecutionException { /* 0x4b800 - 0x4ba00 */ + private final void run_55000() throws ExecutionException { /* 0x55000 - 0x55800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4b800: + for(;;) { + switch(pc) { + case 0x55000: 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; + page[(r29+1340)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4b818: + pc=0x54f6c; + run_54800(); return; + case 0x55018: r7 = r0 + r0; r2 = r18 + -48; - case 0x4b820: + case 0x55020: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x4b820; + r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x55020; continue; } - /* Next insn is delay slot */ - pc = 0x4afe8; - run_4ae00(); - return; - case 0x4b850: + pc=0x547e8; + run_54000(); return; + case 0x55050: 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 = 0x4babc; - run_4ba00(); - return; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x552bc; + continue; } - case 0x4b868: - r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x55068: + r3= page[(r29+1340)>>>2]; + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; - case 0x4b87c: - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4c634; - run_4c600(); - return; + page[(r29+1340)>>>2] = r3; + case 0x5507c: + if(r2 < 0) { + pc=0x55e34; + run_55800(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; r4 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4b894: + pc=0x54f6c; + run_54800(); return; + case 0x55094: r17 = r17 | 64; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4afe0; - run_4ae00(); - return; - case 0x4b8a4: + pc=0x547e0; + run_54000(); return; + case 0x550a4: r17 = r17 | 128; r16 = r3 + r0; - /* 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]; + pc=0x547e0; + run_54000(); return; + case 0x550b4: + page[(r29+1336)>>>2] = r3; + r3= page[(r29+1340)>>>2]; + page[(r29+1208)>>>2] = r7; + r2= page[(r3+0)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r29+1340)>>>2]; r17 = r17 | 2; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + page[(r29+1340)>>>2] = r3; r3 = 6 << 16; - r3 = r3 + -27848; - writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r3; + r3 = r3 + 13792; + page[(r29+1264)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4b908: + pc=0x54f6c; + run_54800(); return; + case 0x55108: 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 = 0x4c868; - run_4c800(); - return; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x56068; + run_56000(); return; } - r4 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r4= page[(r29+1340)>>>2]; r3 = r4 + 7; - case 0x4b92c: + case 0x5512c: 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 = 0x4b964; - pc = 0x3ee00; - run_3ee00(); - return; - case 0x4b964: + page[(r29+1340)>>>2] = r3; + f0= page[(r2+4)>>>2]; + f1= page[(r2+0)>>>2]; + page[(r29+1284)>>>2] = r8; + page[(r29+1252)>>>2] = f0; + f12= page[(r29+1252)>>>2]; + page[(r29+1248)>>>2] = f1; + f13= page[(r29+1248)>>>2]; + r31=0x55164; + pc=0x48600; + run_48000(); return; + case 0x55164: r3 = r0 + 1; - r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x4c650; - run_4c600(); - return; + r8= page[(r29+1284)>>>2]; + if(r2 != r3) { + pc=0x55e50; + run_55800(); return; } f0 = r0; - f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + f2= page[(r29+1252)>>>2]; 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 = 0x4cd44; - run_4cc00(); - return; + f3= page[(r29+1248)>>>2]; + 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)) { + pc=0x56544; + run_56000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - case 0x4b99c: + case 0x5519c: r2 = r18 < 72 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4cac8; - run_4ca00(); - return; + if(r2 == r0) { + pc=0x562c8; + run_56000(); return; } r16 = 6 << 16; - r16 = r16 + -27884; - case 0x4b9b0: + r16 = r16 + 13756; + case 0x551b0: 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; + page[(r29+1212)>>>2] = r2; + page[(r29+1216)>>>2] = r4; r30 = r0 + r0; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x4b294; - run_4b200(); - return; - case 0x4b9d8: + page[(r29+1232)>>>2] = r0; + pc=0x54a94; + run_54800(); return; + case 0x551d8: r17 = r17 | 8; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4afe0; - run_4ae00(); - return; - case 0x4b9e8: + pc=0x547e0; + run_54000(); return; + case 0x551e8: r2 = 6 << 16; - r2 = r2 + -27868; - writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r2; + r2 = r2 + 13772; + page[(r29+1264)>>>2] = 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_4ba00() throws ExecutionException { /* 0x4ba00 - 0x4bc00 */ - int addr, tmp; - 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; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x55304; continue; } - case 0x4ba0c: - r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x5520c: + r3= page[(r29+1340)>>>2]; + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; - case 0x4ba20: + page[(r29+1340)>>>2] = r3; + case 0x55220: r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c1c4; - run_4c000(); - return; + if(r3 == r0) { + pc=0x559c4; + run_55800(); return; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4c1c4; - run_4c000(); - return; + if(r2 == r0) { + pc=0x559c4; + run_55800(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+1205; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* 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]; + pc=0x54f6c; + run_54800(); return; + case 0x55258: + page[(r29+1336)>>>2] = r3; + r3= page[(r29+1340)>>>2]; + page[(r29+1208)>>>2] = r7; + r2= page[(r3+0)>>>2]; 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 0x4ba78: + addr=r29+1064; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1340)>>>2] = r3; + case 0x55278: 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; + page[(r29+1212)>>>2] = r4; + page[(r29+1216)>>>2] = r5; r30 = r0 + r0; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + page[(r29+1232)>>>2] = r0; r16 = r29 + 1064; - /* Next insn is delay slot */ - pc = 0x4b2ac; - run_4b200(); - return; - case 0x4baa0: + pc=0x54aac; + run_54800(); return; + case 0x552a0: 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 = 0x4b868; - run_4b800(); - return; - } - case 0x4babc: - r2 = r17 & 64; - 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 */ - r2 = tmp; - r3 = r3 + 4; - 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 = 0x4ba0c; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x55068; continue; } - case 0x4bb04: + case 0x552bc: r2 = r17 & 64; - r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4c854; - run_4c800(); - return; + r3= page[(r29+1340)>>>2]; + if(r2 == r0) { + pc=0x5609c; + run_56000(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4ba20; + page[(r29+1340)>>>2] = r3; + pc=0x5507c; continue; - case 0x4bb28: + case 0x552e0: + page[(r29+1336)>>>2] = r3; + r3 = 6 << 16; + r3 = r3 + 13792; 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 = 0x4bc34; - run_4bc00(); - return; + page[(r29+1208)>>>2] = r7; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1264)>>>2] = r3; + if(r2 != r0) { + pc=0x5520c; + continue; + } + case 0x55304: + r2 = r17 & 64; + r3= page[(r29+1340)>>>2]; + if(r2 == r0) { + pc=0x56054; + run_56000(); return; + } + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r2 = tmp; + r3 = r3 + 4; + page[(r29+1340)>>>2] = r3; + pc=0x55220; + continue; + case 0x55328: + r2 = r17 & 16; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x55434; + continue; } r17 = r17 & 64; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x4bc34; - run_4bc00(); - return; + if(r17 == r0) { + pc=0x55434; + continue; } - 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= page[(r29+1340)>>>2]; + r2= page[(r3+0)>>>2]; + r3= page[(r29+1220)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r29+1340)>>>2]; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4af0c; - run_4ae00(); - return; - case 0x4bb78: + page[(r29+1340)>>>2] = r3; + pc=0x5470c; + run_54000(); return; + case 0x55378: 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; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + if(r2 != r0) { + pc=0x54f50; + run_54800(); return; } - case 0x4bb8c: + case 0x5538c: 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; + r3= page[(r29+1340)>>>2]; + if(r2 == r0) { + pc=0x5607c; + run_56000(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + page[(r29+1340)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4bbbc: + pc=0x54f6c; + run_54800(); return; + case 0x553bc: 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; + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + if(r2 != r0) { + pc=0x54ff4; + run_54800(); return; } - case 0x4bbd0: + case 0x553d0: 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; + r3= page[(r29+1340)>>>2]; + if(r2 == r0) { + pc=0x560b0; + run_56000(); return; } - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + page[(r29+1340)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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_4bc00() throws ExecutionException { /* 0x4bc00 - 0x4be00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4bc00: - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; + pc=0x54f6c; + run_54800(); return; + case 0x55400: + page[(r29+1340)>>>2] = r2; r16 = r3 + r0; - /* 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; + pc=0x547e0; + run_54000(); return; + case 0x55410: + page[(r29+1208)>>>2] = r7; + page[(r29+1336)>>>2] = r3; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r18 == r0) { + pc=0x549a8; + run_54800(); 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 = 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]; + addr=r29+1064; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x55278; + continue; + case 0x55434: + r3= page[(r29+1340)>>>2]; + r2= page[(r3+0)>>>2]; + r3= page[(r29+1220)>>>2]; + page[(r2+0)>>>2] = r3; + r3= page[(r29+1340)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+1340)>>>2] = r3; + pc=0x5470c; + run_54000(); return; + case 0x55464: + r2= page[(r29+1176)>>>2]; + pc=0x54bb8; + run_54800(); return; + case 0x55470: + r4= page[(r29+1240)>>>2]; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + page[(r8+4)>>>2] = 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 = 0x4c0b0; - run_4c000(); - return; + page[(r8+0)>>>2] = r16; + page[(r29+1176)>>>2] = r2; + if(r3 != r0) { + pc=0x558b0; + run_55800(); return; } - case 0x4bc94: - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + case 0x55494: + r3= page[(r29+1172)>>>2]; 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 = 0x4c58c; - run_4c400(); - return; + page[(r29+1172)>>>2] = r3; + if(r4 == r0) { + pc=0x55d8c; + run_55800(); return; } r8 = r8 + 8; - case 0x4bcb4: - r4 = readPages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff]; + case 0x554b4: + r4= page[(r29+1256)>>>2]; r3 = r3 + 1; - r5 = readPages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff]; + r5= page[(r29+1236)>>>2]; r2 = r2 + r4; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + page[(r8+4)>>>2] = 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 = 0x4c5bc; - run_4c400(); - return; + page[(r8+0)>>>2] = r5; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 == r0) { + pc=0x55dbc; + run_55800(); return; } r8 = r8 + 8; - case 0x4bce4: + case 0x554e4: f0 = r0; - f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + f2= page[(r29+1252)>>>2]; 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 = 0x4c314; - run_4c200(); - return; + f3= page[(r29+1248)>>>2]; + 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)) { + pc=0x55b14; + run_55800(); return; } - r5 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + r5= page[(r29+1240)>>>2]; r16 = r16 + 1; r4 = r5 + -1; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r4; r2 = r2 + r4; - case 0x4bd20: + case 0x55520: 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 = 0x4c0d8; - run_4c000(); - return; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 == r0) { + pc=0x558d8; + run_55800(); return; } - case 0x4bd38: + case 0x55538: r8 = r8 + 8; - case 0x4bd3c: - r5 = readPages[(r29 + 1260) >>> 12][((r29 + 1260) >>> 2) & 0x3ff]; + case 0x5553c: + r5= page[(r29+1260)>>>2]; r4 = r29 + 1188; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; + page[(r8+0)>>>2] = r4; + page[(r8+4)>>>2] = r5; r2 = r5 + r2; - case 0x4bd50: + case 0x55550: r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4b550; - run_4b400(); - return; + page[(r29+1176)>>>2] = r2; + if(r3 != r0) { + pc=0x54d50; + run_54800(); return; } - case 0x4bd68: + case 0x55568: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x5557c; + pc=0x5d200; + run_5d000(); return; + case 0x5557c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b554; - run_4b400(); - return; - case 0x4bd94: + pc=0x54d54; + run_54800(); return; + case 0x55594: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x555a8; + pc=0x5d200; + run_5d000(); return; + case 0x555a8: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r0; + page[(r29+1172)>>>2] = r0; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b68c; - run_4b600(); - return; - case 0x4bdc0: + pc=0x54e8c; + run_54800(); return; + case 0x555c0: r5 = r0 + 1; - if (r4 == r5) { - /* Next insn is delay slot */ - pc = 0x4c18c; - run_4c000(); - return; + if(r4 == r5) { + pc=0x5598c; + run_55800(); return; } r6 = r29 + 1104; r5 = r0 + 2; r16 = r6 + r0; - if (r4 != r5) { - /* Next insn is delay slot */ - pc = 0x4be14; - run_4be00(); - return; + if(r4 != r5) { + pc=0x55614; + continue; } - r5 = readPages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff]; - case 0x4bde4: + r5= page[(r29+1264)>>>2]; + case 0x555e4: 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= page[(addr)>>>2]; + 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 = 0x4bde4; + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x555e4; continue; } - 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: - case 0x4be04: + case 0x55604: r6 = r6 - r16; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r6; - /* Next insn is delay slot */ - pc = 0x4b7b4; - run_4b600(); - return; - case 0x4be14: + page[(r29+1216)>>>2] = r6; + pc=0x54fb4; + run_54800(); return; + case 0x55614: 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 = 0x4be14; + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x55614; continue; } r2 = r17 & 1; r5 = r16 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4be04; + if(r2 == r0) { + pc=0x55604; continue; } r2 = r0 + 48; - if (r4 == r2) { - /* Next insn is delay slot */ - pc = 0x4be04; + if(r4 == r2) { + pc=0x55604; 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 = 0x4b7b4; - run_4b600(); - return; - case 0x4be64: + addr=r5+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1216)>>>2] = r6; + pc=0x54fb4; + run_54800(); return; + case 0x55664: r18 = r18 < 102 ? 1 : 0; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x4bc70; - run_4bc00(); - return; + if(r18 != r0) { + pc=0x55470; + continue; } f0 = r0; - f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + f2= page[(r29+1252)>>>2]; 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 = 0x4c1d8; - run_4c000(); - return; + f3= page[(r29+1248)>>>2]; + 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)) { + pc=0x559d8; + run_55800(); return; } - r3 = 5 << 16; - r3 = r3 + 30860; - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + 6368; + page[(r8+0)>>>2] = r3; r3 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c920; - run_4c800(); - return; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x56120; + run_56000(); return; } r8 = r8 + 8; - case 0x4becc: - r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x556cc: + r3= page[(r29+1200)>>>2]; + r4= page[(r29+1240)>>>2]; r3 = r3 < r4 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4bef0; + if(r3 != r0) { + pc=0x556f0; continue; } r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4b554; - run_4b400(); - return; + if(r3 == r0) { + pc=0x54d54; + run_54800(); return; } - 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]; + case 0x556f0: + r3= page[(r29+1236)>>>2]; + page[(r8+0)>>>2] = r3; + r3= page[(r29+1256)>>>2]; 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; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; + page[(r29+1176)>>>2] = r2; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = r3; r3 = r3 < 8 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4cb18; - run_4ca00(); - return; + if(r3 == r0) { + pc=0x56318; + run_56000(); return; } r8 = r8 + 8; - case 0x4bf2c: - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x5572c: + r3= page[(r29+1240)>>>2]; r16 = r3 + -1; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x4b554; - run_4b400(); - return; + if(r16 <= 0) { + pc=0x54d54; + run_54800(); return; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c3b0; - run_4c200(); - return; + if(r3 != r0) { + pc=0x55bb0; + run_55800(); return; } r5 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r5 + -27076; + r3= page[(r29+1172)>>>2]; + r23 = r5 + 14564; r18 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4bf78; + pc=0x55778; continue; - case 0x4bf64: + case 0x55764: r8 = r8 + 8; - case 0x4bf68: + case 0x55768: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c3bc; - run_4c200(); - return; + if(r4 != r0) { + pc=0x55bbc; + run_55800(); return; } - case 0x4bf78: + case 0x55778: 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 = 0x4bf64; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55764; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x557b0; + pc=0x5d200; + run_5d000(); return; + case 0x557b0: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4bf68; + pc=0x55768; continue; - case 0x4bfcc: - r3 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + case 0x557cc: + r3= page[(r29+1208)>>>2]; + r4= page[(r29+1212)>>>2]; r20 = r3 - r4; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4b448; - run_4b400(); - return; + if(r20 <= 0) { + pc=0x54c48; + run_54800(); return; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4cdb8; - run_4cc00(); - return; + if(r3 != r0) { + pc=0x565b8; + run_56000(); return; } r4 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r4 + -27076; + r3= page[(r29+1172)>>>2]; + r23 = r4 + 14564; r7 = r0 + 16; - case 0x4c000: - pc = 0x4c000; + case 0x55800: + pc=0x55800; 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_4c000() throws ExecutionException { /* 0x4c000 - 0x4c200 */ + private final void run_55800() throws ExecutionException { /* 0x55800 - 0x56000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4c000: - /* Next insn is delay slot */ - pc = 0x4c01c; + for(;;) { + switch(pc) { + case 0x55800: + pc=0x5581c; continue; - case 0x4c008: + case 0x55808: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c080; + if(r4 != r0) { + pc=0x55880; continue; } - case 0x4c01c: + case 0x5581c: 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 = 0x4c008; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r7; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55808; 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 = 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; + page[(r29+1280)>>>2] = r7; + r31=0x55858; + pc=0x5d200; + run_5d000(); return; + case 0x55858: + r7= page[(r29+1280)>>>2]; + if(r2 != r0) { + pc=0x549cc; + run_54800(); 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= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4c01c; + if(r4 == r0) { + pc=0x5581c; continue; } - case 0x4c080: + case 0x55880: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4c608; - run_4c600(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55e08; + continue; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc = 0x4b448; - run_4b400(); - return; - case 0x4c0b0: + pc=0x54c48; + run_54800(); return; + case 0x558b0: r3 = r17 & 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4bc94; - run_4bc00(); - return; + if(r3 != r0) { + pc=0x55494; + run_55000(); return; } - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r3= page[(r29+1172)>>>2]; 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 = 0x4bd38; - run_4bc00(); - return; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55538; + run_55000(); return; } - case 0x4c0d8: + case 0x558d8: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x558ec; + pc=0x5d200; + run_5d000(); return; + case 0x558ec: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4bd3c; - run_4bc00(); - return; - case 0x4c108: + pc=0x5553c; + run_55000(); return; + case 0x55908: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x5591c; + pc=0x5d200; + run_5d000(); return; + case 0x5591c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b518; - run_4b400(); - return; - case 0x4c134: + pc=0x54d18; + run_54800(); return; + case 0x55934: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55948; + pc=0x5d200; + run_5d000(); return; + case 0x55948: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b438; - run_4b400(); - return; - case 0x4c160: + pc=0x54c38; + run_54800(); return; + case 0x55960: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55974; + pc=0x5d200; + run_5d000(); return; + case 0x55974: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* 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; + pc=0x54bf4; + run_54800(); return; + case 0x5598c: + r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r4 == r0) { + pc=0x55bd0; + continue; } 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1216)>>>2] = r4; r16 = r29 + 1103; - /* Next insn is delay slot */ - pc = 0x4b7b4; - run_4b600(); - return; - case 0x4c1b4: - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r0; + pc=0x54fb4; + run_54800(); return; + case 0x559b4: + page[(r29+1216)>>>2] = r0; r16 = r29 + 1104; - /* Next insn is delay slot */ - pc = 0x4b7b4; - run_4b600(); - return; - case 0x4c1c4: + pc=0x54fb4; + run_54800(); return; + case 0x559c4: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* 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; + pc=0x54f6c; + run_54800(); return; + case 0x559d8: + r3= page[(r29+1200)>>>2]; + if(r3 <= 0) { + pc=0x5614c; + run_56000(); return; } - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + r3= page[(r29+1240)>>>2]; + r4= page[(r29+1232)>>>2]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c208; - run_4c200(); - 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: - r20 = r4 + r0; - case 0x4c208: - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4c23c; + if(r3 == r0) { + pc=0x55a08; continue; } - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r20 = r4 + r0; + case 0x55a08: + if(r20 <= 0) { + pc=0x55a3c; + continue; + } + r3= page[(r29+1172)>>>2]; r2 = r2 + r20; r3 = r3 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4cbcc; - run_4ca00(); - return; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x563cc; + run_56000(); return; } r8 = r8 + 8; - case 0x4c23c: - if (r20 < 0) { - /* Next insn is delay slot */ - pc = 0x4cbc0; - run_4ca00(); - return; + case 0x55a3c: + if(r20 < 0) { + pc=0x563c0; + run_56000(); return; } - case 0x4c244: - r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + case 0x55a44: + r3= page[(r29+1232)>>>2]; r20 = r3 - r20; - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4c438; - run_4c400(); - return; + if(r20 <= 0) { + pc=0x55c38; + continue; } r3 = r20 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c8d0; - run_4c800(); - return; + if(r3 != r0) { + pc=0x560d0; + run_56000(); return; } r5 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r5 + -27076; + r3= page[(r29+1172)>>>2]; + r23 = r5 + 14564; r30 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4c290; + pc=0x55a90; continue; - case 0x4c27c: + case 0x55a7c: r8 = r8 + 8; - case 0x4c280: + case 0x55a80: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c8dc; - run_4c800(); - return; + if(r4 != r0) { + pc=0x560dc; + run_56000(); return; } - case 0x4c290: + case 0x55a90: 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 = 0x4c27c; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r30; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55a7c; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55ac8; + pc=0x5d200; + run_5d000(); return; + case 0x55ac8: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c280; + pc=0x55a80; continue; - case 0x4c2e4: + case 0x55ae4: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55af8; + pc=0x5d200; + run_5d000(); return; + case 0x55af8: + if(r2 != r0) { + pc=0x549cc; + run_54800(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b3b8; - run_4b200(); - return; - case 0x4c314: - r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + pc=0x54bb8; + run_54800(); return; + case 0x55b14: + r4= page[(r29+1240)>>>2]; r16 = r4 + -1; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x4bd3c; - run_4bc00(); - return; + if(r16 <= 0) { + pc=0x5553c; + run_55000(); return; } r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c5ec; - run_4c400(); - return; + if(r4 != r0) { + pc=0x55dec; + continue; } r4 = 6 << 16; - r23 = r4 + -27076; + r23 = r4 + 14564; r18 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4c35c; + pc=0x55b5c; continue; - case 0x4c348: + case 0x55b48: r8 = r8 + 8; - case 0x4c34c: + case 0x55b4c: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c5f4; - run_4c400(); - return; + if(r4 != r0) { + pc=0x55df4; + continue; } - case 0x4c35c: + case 0x55b5c: 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 = 0x4c348; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55b48; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55b94; + pc=0x5d200; + run_5d000(); return; + case 0x55b94: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c34c; + pc=0x55b4c; continue; - case 0x4c3b0: + case 0x55bb0: 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; + r3= page[(r29+1172)>>>2]; + r23 = r4 + 14564; + case 0x55bbc: + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc = 0x4bd50; - run_4bc00(); - return; - case 0x4c3d0: + pc=0x55550; + run_55000(); return; + case 0x55bd0: r6 = r29 + 1104; r16 = r6 + r0; r4 = r0 + 10; - 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)); + case 0x55bdc: + if(r4 != r0) { + if(r4!=0) { + hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } - pc = 0x4c3e8; + pc=0x55be8; 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 0x4c3e8: + case 0x55be8: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = lo; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4c3dc; + if(r2 != r0) { + pc=0x55bdc; continue; } - 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: r6 = r6 - r16; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r6; - /* Next insn is delay slot */ - pc = 0x4b7b4; - run_4b600(); - return; - case 0x4c414: + page[(r29+1216)>>>2] = r6; + pc=0x54fb4; + run_54800(); return; + case 0x55c14: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55c28; + pc=0x5d200; + run_5d000(); return; + case 0x55c28: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - case 0x4c438: - r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x55c38: + r3= page[(r29+1232)>>>2]; + r5= page[(r29+1240)>>>2]; r16 = r16 + r3; - r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r3= page[(r29+1200)>>>2]; r4 = r3 < r5 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c464; + if(r4 != r0) { + pc=0x55c64; continue; } r4 = r17 & 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4c498; + if(r4 == r0) { + pc=0x55c98; continue; } - 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]; + case 0x55c64: + r4= page[(r29+1236)>>>2]; + r5= page[(r29+1256)>>>2]; + page[(r8+0)>>>2] = r4; + r4= page[(r29+1172)>>>2]; r2 = r2 + r5; r4 = r4 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; + page[(r29+1172)>>>2] = 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 = 0x4cbf8; - run_4ca00(); - return; + page[(r8+4)>>>2] = r5; + page[(r29+1176)>>>2] = r2; + if(r4 == r0) { + pc=0x563f8; + run_56000(); return; } r8 = r8 + 8; - case 0x4c498: - r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x55c98: + r4= page[(r29+1240)>>>2]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4c4b8; + if(r4 == r0) { + pc=0x55cb8; continue; } r20 = r18 + r0; - case 0x4c4b8: - if (r20 <= 0) { - /* Next insn is delay slot */ - pc = 0x4c4ec; + case 0x55cb8: + if(r20 <= 0) { + pc=0x55cec; continue; } - r4 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r4= page[(r29+1172)>>>2]; r2 = r2 + r20; r4 = r4 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; + page[(r29+1172)>>>2] = 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 = 0x4cc6c; - run_4cc00(); - return; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r4 == r0) { + pc=0x5646c; + run_56000(); return; } r8 = r8 + 8; - case 0x4c4ec: - if (r20 < 0) { - /* Next insn is delay slot */ - pc = 0x4cc60; - run_4cc00(); - return; + case 0x55cec: + if(r20 < 0) { + pc=0x56460; + run_56000(); return; } - case 0x4c4f4: + case 0x55cf4: r16 = r3 - r20; - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x4b554; - run_4b400(); - return; + if(r16 <= 0) { + pc=0x54d54; + run_54800(); return; } r3 = r16 < 17 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c3b0; - run_4c200(); - return; + if(r3 != r0) { + pc=0x55bb0; + continue; } r5 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r5 + -27076; + r3= page[(r29+1172)>>>2]; + r23 = r5 + 14564; r18 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4c538; + pc=0x55d38; continue; - case 0x4c524: + case 0x55d24: r8 = r8 + 8; - case 0x4c528: + case 0x55d28: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4c3bc; - run_4c200(); - return; + if(r4 != r0) { + pc=0x55bbc; + continue; } - case 0x4c538: + case 0x55d38: 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 = 0x4c524; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x55d24; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31 = 0x4c570; - pc = 0x53a00; - run_53a00(); - return; - case 0x4c570: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4b1cc; - run_4b000(); - return; + r31=0x55d70; + pc=0x5d200; + run_5d000(); return; + case 0x55d70: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c528; + pc=0x55d28; continue; - case 0x4c58c: + case 0x55d8c: 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; + r31=0x55da0; + pc=0x5d200; + run_5d000(); return; + case 0x55da0: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4bcb4; - run_4bc00(); - return; - case 0x4c5bc: + pc=0x554b4; + run_55000(); return; + case 0x55dbc: 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; + r31=0x55dd0; + pc=0x5d200; + run_5d000(); return; + case 0x55dd0: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4bce4; - run_4bc00(); - return; - case 0x4c5ec: + pc=0x554e4; + run_55000(); return; + case 0x55dec: 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; + r23 = r5 + 14564; + case 0x55df4: + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = 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_4c600() throws ExecutionException { /* 0x4c600 - 0x4c800 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4c600: - /* Next insn is delay slot */ - pc = 0x4bd20; - run_4bc00(); - return; - case 0x4c608: + pc=0x55520; + run_55000(); return; + case 0x55e08: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x55e1c; + pc=0x5d200; + run_5d000(); return; + case 0x55e1c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4b448; - run_4b400(); - return; - case 0x4c634: + pc=0x54c48; + run_54800(); return; + case 0x55e34: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; - /* 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; + pc=0x54f6c; + run_54800(); return; + case 0x55e50: + f12= page[(r29+1252)>>>2]; + page[(r29+1284)>>>2] = r8; + f13= page[(r29+1248)>>>2]; + r31=0x55e64; + pc=0x48600; + run_48000(); return; + case 0x55e64: + r8= page[(r29+1284)>>>2]; + if(r2 == r0) { + pc=0x56288; + run_56000(); return; } r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; - if (r30 == r2) { - /* Next insn is delay slot */ - pc = 0x4cff4; - run_4ce00(); - return; + if(r30 == r2) { + pc=0x567f4; + run_56000(); return; } r2 = r0 + 71; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4cf14; - run_4ce00(); - return; + if(r20 == r2) { + pc=0x56714; + run_56000(); return; } - case 0x4c690: - r2 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + case 0x55e90: + r2= page[(r29+1248)>>>2]; r23 = r17 | 256; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4cf68; - run_4ce00(); - return; + if(r2 < 0) { + pc=0x56768; + run_56000(); 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 0x4c6b8: + f0= page[(r29+1252)>>>2]; + page[(r29+1212)>>>2] = r0; + f1= page[(r29+1248)>>>2]; + page[(r29+1276)>>>2] = f0; + page[(r29+1272)>>>2] = f1; + case 0x55eb8: r2 = r0 + 102; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4cd68; - run_4cc00(); - return; + if(r18 == r2) { + pc=0x56568; + run_56000(); return; } r2 = r0 + 70; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4cd68; - run_4cc00(); - return; + if(r18 == r2) { + pc=0x56568; + run_56000(); return; } r2 = r0 + 69; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4cf5c; - run_4ce00(); - return; + if(r20 == r2) { + pc=0x5675c; + run_56000(); return; } r5 = r30 + r0; - case 0x4c6e0: + case 0x55ee0: r2 = r0 + 2; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = r2; r2 = r29 + 1200; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + page[(r29+24)>>>2] = r2; r2 = r29 + 1196; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; - r7 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; + page[(r29+28)>>>2] = r2; + r7= page[(r29+1276)>>>2]; 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= page[(r29+1272)>>>2]; + page[(r29+20)>>>2] = r5; + page[(r29+32)>>>2] = 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 = 0x4c720; - pc = 0x4e600; - run_4e600(); - return; - case 0x4c720: + page[(r29+1280)>>>2] = r5; + page[(r29+1284)>>>2] = r8; + r31=0x55f20; + pc=0x57e00; + run_57800(); return; + case 0x55f20: 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 = 0x4c744; + r5= page[(r29+1280)>>>2]; + r8= page[(r29+1284)>>>2]; + if(r18 == r2) { + pc=0x55f44; continue; } r2 = r0 + 71; - if (r18 != r2) { - /* Next insn is delay slot */ - pc = 0x4c750; + if(r18 != r2) { + pc=0x55f50; continue; } - case 0x4c744: + case 0x55f44: r2 = r17 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4d000; - run_4d000(); - return; + if(r2 == r0) { + pc=0x56800; + run_56800(); return; } - case 0x4c750: + case 0x55f50: r2 = r0 + 70; r4 = r16 + r5; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4cdd8; - run_4cc00(); - return; + if(r20 == r2) { + pc=0x565d8; + run_56000(); return; } - case 0x4c760: + case 0x55f60: f0 = r0; - f2 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; + f2= page[(r29+1276)>>>2]; 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 = 0x4cdcc; - run_4cc00(); - return; + f3= page[(r29+1272)>>>2]; + 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)) { + pc=0x565cc; + run_56000(); return; } - r2 = readPages[(r29 + 1180) >>> 12][((r29 + 1180) >>> 2) & 0x3ff]; + r2= page[(r29+1180)>>>2]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4c7bc; + if(r3 == r0) { + pc=0x55fbc; continue; } r5 = r0 + 48; - case 0x4c79c: + case 0x55f9c: 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]; + page[(r29+1180)>>>2] = r3; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r29+1180)>>>2]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c79c; + if(r3 != r0) { + pc=0x55f9c; continue; } - case 0x4c7bc: + case 0x55fbc: r2 = r2 - r16; - writePages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff] = r2; + page[(r29+1240)>>>2] = r2; r2 = r0 + 71; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4cd18; - run_4cc00(); - return; + if(r20 == r2) { + pc=0x56518; + run_56000(); return; } r2 = r18 < 102 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d1a0; - run_4d000(); - return; + if(r2 != r0) { + pc=0x569a0; + run_56800(); return; } - r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r3= page[(r29+1200)>>>2]; r2 = r0 + 102; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r3; - if (r18 == r2) { - /* Next insn is delay slot */ - pc = 0x4d00c; - run_4d000(); - return; + page[(r29+1232)>>>2] = r3; + if(r18 == r2) { + pc=0x5680c; + run_56800(); return; } - case 0x4c7f0: - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + case 0x55ff0: + r3= page[(r29+1240)>>>2]; + r4= page[(r29+1232)>>>2]; r2 = r4 < r3 ? 1 : 0; - case 0x4c800: - pc = 0x4c800; + case 0x56000: + pc=0x56000; 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_4c800() throws ExecutionException { /* 0x4c800 - 0x4ca00 */ + private final void run_56000() throws ExecutionException { /* 0x56000 - 0x56800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4c800: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4cf90; - run_4ce00(); - return; + for(;;) { + switch(pc) { + case 0x56000: + if(r2 != r0) { + pc=0x56790; + continue; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4cfc8; - run_4ce00(); - return; + if(r17 != r0) { + pc=0x567c8; + continue; } r2 = r4 + r0; - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x4d1bc; - run_4d000(); - return; + if(r4 < 0) { + pc=0x569bc; + run_56800(); return; } - case 0x4c820: - r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + case 0x56020: + r3= page[(r29+1232)>>>2]; r18 = r0 + 103; - 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; + page[(r29+1216)>>>2] = r3; + case 0x5602c: + r5= page[(r29+1212)>>>2]; + if(r5 != r0) { + pc=0x564f8; + continue; } - 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + page[(r29+1212)>>>2] = r2; r17 = r23 + r0; r30 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b294; - run_4b200(); - return; - case 0x4c854: - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + pc=0x54a94; + run_54800(); return; + case 0x56054: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+1340)>>>2] = r3; + pc=0x55220; + run_55000(); return; + case 0x56068: + r2= page[(r29+1340)>>>2]; r3 = r2 + 7; - /* Next insn is delay slot */ - pc = 0x4b92c; - run_4b800(); - return; - case 0x4c87c: - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + pc=0x5512c; + run_55000(); return; + case 0x5607c: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + page[(r29+1340)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4c89c: - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + pc=0x54f6c; + run_54800(); return; + case 0x5609c: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - 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]; + page[(r29+1340)>>>2] = r3; + pc=0x5507c; + run_55000(); return; + case 0x560b0: + r2= page[(r3+0)>>>2]; r3 = r3 + 4; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + page[(r29+1340)>>>2] = 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b76c; - run_4b600(); - return; - case 0x4c8d0: + pc=0x54f6c; + run_54800(); return; + case 0x560d0: r4 = 6 << 16; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; - r23 = r4 + -27076; - case 0x4c8dc: + r3= page[(r29+1172)>>>2]; + r23 = r4 + 14564; + case 0x560dc: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + page[(r29+1172)>>>2] = 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 = 0x4c414; - run_4c400(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + if(r3 == r0) { + pc=0x55c14; + run_55800(); return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc = 0x4c438; - run_4c400(); - return; - case 0x4c90c: + pc=0x55c38; + run_55800(); return; + case 0x5610c: 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: + r3= page[(r29+1172)>>>2]; + r23 = r4 + 14564; + pc=0x54cf0; + run_54800(); return; + case 0x56120: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x56134; + pc=0x5d200; + run_5d000(); return; + case 0x56134: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* 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; + pc=0x556cc; + run_55000(); return; + case 0x5614c: + r4 = 6 << 16; + r4 = r4 + 6368; + page[(r8+0)>>>2] = r4; r4 = r0 + 1; - writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; - r4 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + page[(r8+4)>>>2] = r4; + r4= page[(r29+1172)>>>2]; r2 = r2 + 1; r4 = r4 + 1; - writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; + page[(r29+1172)>>>2] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4cae8; - run_4ca00(); - return; + page[(r29+1176)>>>2] = r2; + if(r4 == r0) { + pc=0x562e8; + continue; } r8 = r8 + 8; r18 = r3 + r0; - case 0x4c988: - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x4c9ac; + case 0x56188: + if(r18 != r0) { + pc=0x561ac; continue; } - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4c9ac; + r3= page[(r29+1240)>>>2]; + if(r3 != r0) { + pc=0x561ac; continue; } r3 = r17 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4b554; - run_4b400(); - return; + if(r3 == r0) { + pc=0x54d54; + run_54800(); return; } - 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]; + case 0x561ac: + r3= page[(r29+1236)>>>2]; + page[(r8+0)>>>2] = r3; + r3= page[(r29+1256)>>>2]; 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; + page[(r8+4)>>>2] = r3; + r3= page[(r29+1172)>>>2]; + page[(r29+1176)>>>2] = 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 = 0x4cf28; - run_4ce00(); - return; + page[(r29+1172)>>>2] = r3; + if(r4 == r0) { + pc=0x56728; + continue; } r8 = r8 + 8; - case 0x4c9e8: + case 0x561e8: r18 = r0 - r18; - if (r18 <= 0) { - /* Next insn is delay slot */ - pc = 0x4cb6c; - run_4ca00(); - return; + if(r18 <= 0) { + pc=0x5636c; + continue; } r4 = r18 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4cc28; - run_4cc00(); - return; + if(r4 != r0) { + pc=0x56428; + continue; } - 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: r5 = 6 << 16; - r23 = r5 + -27076; + r23 = r5 + 14564; r20 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x4ca28; + pc=0x56228; continue; - case 0x4ca14: + case 0x56214: r8 = r8 + 8; - case 0x4ca18: + case 0x56218: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4cc30; - run_4cc00(); - return; + if(r4 != r0) { + pc=0x56430; + continue; } - case 0x4ca28: + case 0x56228: 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 = 0x4ca14; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r20; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 != r0) { + pc=0x56214; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x56260; + pc=0x5d200; + run_5d000(); return; + case 0x56260: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4ca18; + pc=0x56218; continue; - case 0x4ca7c: - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r30; - /* Next insn is delay slot */ - pc = 0x4b270; - run_4b200(); - return; - case 0x4ca88: + case 0x5627c: + page[(r29+1216)>>>2] = r30; + pc=0x54a70; + run_54800(); return; + case 0x56288: r2 = r18 < 72 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4cd58; - run_4cc00(); - return; + if(r2 == r0) { + pc=0x56558; + continue; } r16 = 6 << 16; - r16 = r16 + -27876; - case 0x4ca9c: + r16 = r16 + 13764; + case 0x5629c: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r5; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + page[(r29+1212)>>>2] = r5; + page[(r29+1216)>>>2] = r2; r30 = r0 + r0; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x4b294; - run_4b200(); - return; - case 0x4cac8: + page[(r29+1232)>>>2] = r0; + pc=0x54a94; + run_54800(); return; + case 0x562c8: r16 = 6 << 16; - r16 = r16 + -27880; - /* Next insn is delay slot */ - pc = 0x4b9b0; - run_4b800(); - return; - case 0x4cad8: + r16 = r16 + 13760; + pc=0x551b0; + run_55000(); return; + case 0x562d8: r30 = r0 + -1; r3 = r4 + r0; - /* Next insn is delay slot */ - pc = 0x4afe8; - run_4ae00(); - return; - case 0x4cae8: + pc=0x547e8; + run_54000(); return; + case 0x562e8: 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; + r31=0x562fc; + pc=0x5d200; + run_5d000(); return; + case 0x562fc: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r18 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r18= page[(r29+1200)>>>2]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c988; - run_4c800(); - return; - case 0x4cb18: + pc=0x56188; + continue; + case 0x56318: 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; + r31=0x5632c; + pc=0x5d200; + run_5d000(); return; + case 0x5632c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4bf2c; - run_4be00(); - return; - case 0x4cb44: + pc=0x5572c; + run_55000(); return; + case 0x56344: 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; + r31=0x56358; + pc=0x5d200; + run_5d000(); return; + case 0x56358: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; 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; + case 0x5636c: + r4= page[(r29+1240)>>>2]; + page[(r8+0)>>>2] = r16; + page[(r8+4)>>>2] = 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; + pc=0x55550; + run_55000(); return; + case 0x56384: + page[(r29+1284)>>>2] = r8; + r31=0x56390; + pc=0x10268; + run_10000(); return; + case 0x56390: + page[(r29+1216)>>>2] = r2; + r8= page[(r29+1284)>>>2]; + if(r2 >= 0) { + pc=0x54a80; + run_54800(); return; } - case 0x4cba0: + case 0x563a0: 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: + pc=0x54a80; + run_54800(); return; + case 0x563ac: + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; + page[(r29+1244)>>>2] = r19; + pc=0x54b88; + run_54800(); return; + case 0x563c0: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4c244; - run_4c200(); - return; - case 0x4cbcc: + pc=0x55a44; + run_55800(); return; + case 0x563cc: 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; + r31=0x563e0; + pc=0x5d200; + run_5d000(); return; + case 0x563e0: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c23c; - run_4c200(); - return; - case 0x4cbf8: + pc=0x55a3c; + run_55800(); return; + case 0x563f8: 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_4cc00() throws ExecutionException { /* 0x4cc00 - 0x4ce00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4cc00: r6 = r29 + 1168; - /* 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; + r31=0x5640c; + pc=0x5d200; + run_5d000(); return; + case 0x5640c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); return; } - r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; - r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3= page[(r29+1200)>>>2]; + r2= page[(r29+1176)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c498; - run_4c400(); - return; - case 0x4cc28: + pc=0x55c98; + run_55800(); return; + case 0x56428: r4 = 6 << 16; - r23 = r4 + -27076; - case 0x4cc30: + r23 = r4 + 14564; + case 0x56430: 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 = 0x4cb44; - run_4ca00(); - return; + page[(r8+0)>>>2] = r23; + page[(r8+4)>>>2] = r18; + page[(r29+1176)>>>2] = r2; + page[(r29+1172)>>>2] = r3; + if(r4 == r0) { + pc=0x56344; + continue; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc = 0x4cb6c; - run_4ca00(); - return; - case 0x4cc60: + pc=0x5636c; + continue; + case 0x56460: r20 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4c4f4; - run_4c400(); - return; - case 0x4cc6c: + pc=0x55cf4; + run_55800(); return; + case 0x5646c: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x56480; + pc=0x5d200; + run_5d000(); return; + case 0x56480: + if(r2 != r0) { + pc=0x549cc; + run_54800(); 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= page[(r29+1200)>>>2]; + r5= page[(r29+1240)>>>2]; + r2= page[(r29+1176)>>>2]; r3 = r5 - r3; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c4ec; - run_4c400(); - return; - case 0x4cca4: - r3 = (r30 & 0xffffffffL) < (7 & 0xffffffffL) ? 1 : 0; + pc=0x55cec; + run_55800(); return; + case 0x564a4: + r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r2 = r30 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4ccb8; + if(r3 != r0) { + pc=0x564b8; continue; } r2 = r0 + 6; - 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 0x564b8: + page[(r29+1216)>>>2] = r2; + if(r2 < 0) { + pc=0x568f0; + run_56800(); return; } - case 0x4ccc4: + case 0x564c4: r16 = 6 << 16; - writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; + page[(r29+1212)>>>2] = r2; + page[(r29+1340)>>>2] = r20; r3 = r0 + r0; r30 = r0 + r0; - 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: + page[(r29+1232)>>>2] = r0; + r16 = r16 + 13812; + pc=0x54aac; + run_54800(); return; + case 0x564e8: + r3= page[(r29+1172)>>>2]; + page[(r29+1244)>>>2] = r19; + pc=0x54e08; + run_54800(); return; + case 0x564f8: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+1212)>>>2] = r2; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4b29c; - run_4b200(); - return; - case 0x4cd18: - r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + pc=0x54a9c; + run_54800(); return; + case 0x56518: + r2= page[(r29+1200)>>>2]; r3 = r2 < -3 ? 1 : 0; - 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 = 0x4ce58; - run_4ce00(); - return; - } - 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; - r3 = r0 + 45; - /* 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; - r2 = r29 + 1200; - 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]; - 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; - r4 = r21 + r0; - 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 = 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 = 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 = 0x4cdfc; + if(r3 != r0) { + pc=0x56658; continue; } - case 0x4cde8: - r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r3 = r30 < r2 ? 1 : 0; + if(r3 != r0) { + pc=0x56658; + continue; + } + page[(r29+1232)>>>2] = r2; + pc=0x55ff0; + run_55800(); return; + case 0x56544: + r2 = r0 + 45; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3 = r0 + 45; + pc=0x5519c; + run_55000(); return; + case 0x56558: + r16 = 6 << 16; + r16 = r16 + 13768; + pc=0x5629c; + continue; + case 0x56568: + r2 = r0 + 3; + page[(r29+16)>>>2] = r2; + r2 = r29 + 1200; + page[(r29+24)>>>2] = r2; + r2 = r29 + 1196; + page[(r29+28)>>>2] = r2; + r7= page[(r29+1276)>>>2]; + r2 = r29 + 1180; + r6= page[(r29+1272)>>>2]; + page[(r29+20)>>>2] = r30; + page[(r29+32)>>>2] = r2; + r4 = r21 + r0; + page[(r29+1284)>>>2] = r8; + r31=0x565a4; + pc=0x57e00; + run_57800(); return; + case 0x565a4: + r16 = r2 + r0; + r5 = r30 + r0; + r8= page[(r29+1284)>>>2]; + pc=0x55f50; + run_55800(); return; + case 0x565b8: + r5 = 6 << 16; + r3= page[(r29+1172)>>>2]; + r23 = r5 + 14564; + pc=0x55880; + run_55800(); return; + case 0x565cc: + r2 = r4 + r0; + pc=0x55fbc; + run_55800(); return; + case 0x565d8: + addr=r16+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r3 = tmp; + r2 = r0 + 48; + if(r3 == r2) { + pc=0x565fc; + continue; + } + case 0x565e8: + r2= page[(r29+1200)>>>2]; r4 = r4 + r2; - /* Next insn is delay slot */ - pc = 0x4c760; - run_4c600(); - return; - case 0x4cdfc: + pc=0x55f60; + run_55800(); return; + case 0x565fc: 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_4ce00() throws ExecutionException { /* 0x4ce00 - 0x4d000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4ce00: - f2 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; + f2= page[(r29+1276)>>>2]; 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 = 0x4cde8; - run_4cc00(); - return; + f3= page[(r29+1272)>>>2]; + 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)) { + pc=0x565e8; + continue; } r2 = r0 + 1; r2 = r2 - r5; - writePages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff] = r2; + page[(r29+1200)>>>2] = r2; r4 = r4 + r2; - /* 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 */ + pc=0x55f60; + run_55800(); return; + case 0x56638: + page[(r29+1212)>>>2] = r30; + page[(r29+1216)>>>2] = r30; + addr=r29+1206; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; + page[(r29+1340)>>>2] = r20; r30 = r0 + r0; - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x4b294; - run_4b200(); - return; - case 0x4ce58: + page[(r29+1232)>>>2] = r0; + pc=0x54a94; + run_54800(); return; + case 0x56658: r18 = r18 + -2; - case 0x4ce5c: + case 0x5665c: 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 = 0x4d13c; - run_4d000(); - return; + page[(r29+1200)>>>2] = r2; + addr=r29+1188; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 < 0) { + pc=0x5693c; + run_56800(); 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 0x4ce78: + addr=r29+1189; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x56678: r3 = r2 < 10 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d038; - run_4d000(); - return; + if(r3 == r0) { + pc=0x56838; + run_56800(); 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + addr=r29+1190; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r29 + 1192; r4 = r29 + 1188; - case 0x4ce9c: - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x5669c: + r3= page[(r29+1240)>>>2]; 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; + page[(r29+1216)>>>2] = r3; + r3= page[(r29+1240)>>>2]; + page[(r29+1260)>>>2] = r4; r2 = r3 < 2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4cee8; + if(r2 != r0) { + pc=0x566e8; continue; } - case 0x4cec0: - r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + case 0x566c0: + r3= page[(r29+1216)>>>2]; r3 = r3 + 1; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + page[(r29+1216)>>>2] = r3; r2 = r3 + r0; - if (r3 < 0) { - /* Next insn is delay slot */ - pc = 0x4cf04; + if(r3 < 0) { + pc=0x56704; continue; } - case 0x4cedc: - writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4cee8: + case 0x566dc: + page[(r29+1232)>>>2] = r0; + pc=0x5602c; + continue; + case 0x566e8: r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4cec0; + if(r17 != r0) { + pc=0x566c0; continue; } - r2 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x4cedc; + r2= page[(r29+1216)>>>2]; + if(r2 >= 0) { + pc=0x566dc; continue; } - case 0x4cf04: + case 0x56704: r2 = r0 + r0; - 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; + page[(r29+1232)>>>2] = r0; + pc=0x5602c; + continue; + case 0x56714: + if(r30 != r0) { + pc=0x55e90; + run_55800(); return; } r30 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4c690; - run_4c600(); - return; - case 0x4cf28: + pc=0x55e90; + run_55800(); return; + case 0x56728: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* 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; + r31=0x5673c; + pc=0x5d200; + run_5d000(); return; + case 0x5673c: + if(r2 != r0) { + pc=0x549cc; + run_54800(); 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= page[(r29+1200)>>>2]; + r2= page[(r29+1176)>>>2]; + r3= page[(r29+1172)>>>2]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc = 0x4c9e8; - run_4c800(); - return; - case 0x4cf5c: + pc=0x561e8; + continue; + case 0x5675c: r5 = r30 + 1; - /* Next insn is delay slot */ - pc = 0x4c6e0; - run_4c600(); - return; - case 0x4cf68: - r3 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + pc=0x55ee0; + run_55800(); return; + case 0x56768: + r3= page[(r29+1248)>>>2]; r2 = 32768 << 16; - r4 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + r4= page[(r29+1252)>>>2]; 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 = 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; + page[(r29+1272)>>>2] = r2; + page[(r29+1276)>>>2] = r4; + page[(r29+1212)>>>2] = r5; + pc=0x55eb8; + run_55800(); return; + case 0x56790: + r3= page[(r29+1232)>>>2]; + if(r3 <= 0) { + pc=0x5692c; + run_56800(); return; } r2 = r0 + 1; - case 0x4cfa4: - r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + case 0x567a4: + r3= page[(r29+1240)>>>2]; r2 = r2 + r3; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x4cfe4; + page[(r29+1216)>>>2] = r2; + if(r2 < 0) { + pc=0x567e4; continue; } - case 0x4cfbc: + case 0x567bc: r18 = r0 + 103; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4cfc8: - r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + pc=0x5602c; + continue; + case 0x567c8: + r3= page[(r29+1232)>>>2]; r3 = r3 + 1; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + page[(r29+1216)>>>2] = r3; r2 = r3 + r0; - if (r3 >= 0) { - /* Next insn is delay slot */ - pc = 0x4cfbc; + if(r3 >= 0) { + pc=0x567bc; continue; } - case 0x4cfe4: + case 0x567e4: r2 = r0 + r0; r18 = r0 + 103; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4cff4: + pc=0x5602c; + continue; + case 0x567f4: r30 = r0 + 6; - /* Next insn is delay slot */ - pc = 0x4c690; - run_4c600(); + pc=0x55e90; + run_55800(); return; + case 0x56800: + pc=0x56800; return; - case 0x4d000: - pc = 0x4d000; - 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_4d000() throws ExecutionException { /* 0x4d000 - 0x4d200 */ + private final void run_56800() throws ExecutionException { /* 0x56800 - 0x57000 */ int addr, tmp; - 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; + for(;;) { + switch(pc) { + case 0x56800: + r2= page[(r29+1180)>>>2]; + pc=0x55fbc; + run_55800(); return; + case 0x5680c: + if(r3 <= 0) { + pc=0x56950; continue; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4d0cc; + if(r30 != r0) { + pc=0x568cc; continue; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4d0cc; + if(r17 != r0) { + pc=0x568cc; continue; } r2 = r3 + r0; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4d038: + page[(r29+1216)>>>2] = r3; + pc=0x5602c; + run_56000(); return; + case 0x56838: r6 = r29 + 1187; r3 = r6 + r0; r4 = r0 + 10; - case 0x4d044: - if (r4 != r0) { - /* Next insn is delay slot */ - hi = r2 % r4; - lo = r2 / r4; - pc = 0x4d050; + case 0x56844: + if(r4 != r0) { + hi = r2%r4; lo = r2/r4; + pc=0x56850; continue; } - hi = r2 % r4; - lo = r2 / r4; + hi = r2%r4; lo = r2/r4; throw new ExecutionException("Break"); - case 0x4d050: + case 0x56850: 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = lo; r5 = r2 < 10 ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4d044; + if(r5 == r0) { + pc=0x56844; continue; } r2 = r2 + 48; @@ -61267,1120 +65320,886 @@ 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 = 0x4d1ac; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 == r0) { + pc=0x569ac; continue; } r2 = r29 + 1190; - /* Next insn is delay slot */ - pc = 0x4d0a0; + pc=0x568a0; continue; - 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 */ + case 0x5689c: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - case 0x4d0a0: + case 0x568a0: 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 = 0x4d09c; + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r4 != r6) { + pc=0x5689c; continue; } r4 = r29 + 1188; r2 = r4 - r3; r3 = r29 + 1190; r2 = r3 + r2; - /* Next insn is delay slot */ - pc = 0x4ce9c; - run_4ce00(); - return; - case 0x4d0cc: - r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + pc=0x5669c; + run_56000(); return; + case 0x568cc: + r3= page[(r29+1232)>>>2]; r2 = r30 + 1; r2 = r3 + r2; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; - if (r2 >= 0) { - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; + page[(r29+1216)>>>2] = r2; + if(r2 >= 0) { + pc=0x5602c; + run_56000(); return; } - case 0x4d0e4: + case 0x568e4: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4d0f0: + pc=0x5602c; + run_56000(); return; + case 0x568f0: r2 = r0 + r0; - /* 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]; + pc=0x564c4; + run_56000(); return; + case 0x568fc: + r3= page[(r29+1340)>>>2]; + r30= page[(r3+0)>>>2]; r2 = r3 + 4; r3 = r4 + r0; - if (r30 >= 0) { - /* Next insn is delay slot */ - pc = 0x4bc00; - run_4bc00(); - return; + if(r30 >= 0) { + pc=0x55400; + run_55000(); return; } - writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; + page[(r29+1340)>>>2] = r2; r30 = r0 + -1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4afe0; - run_4ae00(); - return; - case 0x4d12c: + pc=0x547e0; + run_54000(); return; + case 0x5692c: r2 = r0 + 2; r2 = r2 - r3; - /* Next insn is delay slot */ - pc = 0x4cfa4; - run_4ce00(); - return; - case 0x4d13c: + pc=0x567a4; + run_56000(); return; + case 0x5693c: 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 = 0x4ce78; - run_4ce00(); - return; - case 0x4d150: - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4d184; + addr=r29+1189; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x56678; + run_56000(); return; + case 0x56950: + if(r30 != r0) { + pc=0x56984; continue; } r17 = r17 & 1; - if (r17 != r0) { - /* Next insn is delay slot */ - pc = 0x4d184; + if(r17 != r0) { + pc=0x56984; continue; } r3 = r0 + 1; r2 = r0 + 1; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; - case 0x4d178: + page[(r29+1216)>>>2] = r3; + pc=0x5602c; + run_56000(); return; + case 0x56978: r16 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x4b118; - run_4b000(); - return; - case 0x4d184: + pc=0x54918; + run_54800(); return; + case 0x56984: r30 = r30 + 2; - writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r30; + page[(r29+1216)>>>2] = r30; r2 = r30 + r0; - if (r30 >= 0) { - /* Next insn is delay slot */ - pc = 0x4c82c; - run_4c800(); - return; + if(r30 >= 0) { + pc=0x5602c; + run_56000(); return; } - /* Next insn is delay slot */ - pc = 0x4d0e4; + pc=0x568e4; continue; - case 0x4d1a0: - r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4ce5c; - run_4ce00(); - return; - case 0x4d1ac: + case 0x569a0: + r2= page[(r29+1200)>>>2]; + pc=0x5665c; + run_56000(); return; + case 0x569ac: r2 = r29 + 1190; r4 = r29 + 1188; - /* Next insn is delay slot */ - pc = 0x4ce9c; - run_4ce00(); - return; - case 0x4d1bc: + pc=0x5669c; + run_56000(); return; + case 0x569bc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4c820; - run_4c800(); - 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: + pc=0x56020; + run_56000(); return; + case 0x56a00: 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; + page[(r29+24)>>>2] = r18; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; r17 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4d238; + if(r4 == r0) { + pc=0x56a38; continue; } - r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4d3e4; + r2= page[(r4+56)>>>2]; + if(r2 == r0) { + pc=0x56be4; continue; } - 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 */ + case 0x56a38: + r2= page[(r16+24)>>>2]; + page[(r16+8)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; r3 = r2 & 65535; r4 = r3 & 8; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4d3b8; + if(r4 == r0) { + pc=0x56bb8; continue; } - r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4d3b8; + r4= page[(r16+16)>>>2]; + if(r4 == r0) { + pc=0x56bb8; continue; } - case 0x4d26c: + case 0x56a6c: r3 = r3 & 8192; r18 = r18 & 255; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d2f4; + if(r3 == r0) { + pc=0x56af4; continue; } - r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r3= page[(r16+0)>>>2]; + r2= page[(r16+20)>>>2]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4d324; + if(r2 == r0) { + pc=0x56b24; continue; } - case 0x4d294: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + case 0x56a94: + r2= page[(r16+8)>>>2]; r4 = r4 + 1; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + page[(r16+8)>>>2] = 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 = 0x4d368; + page[(r16+0)>>>2] = r2; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+20)>>>2]; + if(r2 == r4) { + pc=0x56b68; continue; } - case 0x4d2c0: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x56ac0: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 1; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d38c; + if(r2 != r0) { + pc=0x56b8c; continue; } - case 0x4d2d4: + case 0x56ad4: r2 = r18 + r0; - 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]; + case 0x56ad8: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d2f4: - r3 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; + case 0x56af4: + r3= page[(r16+100)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = 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= page[(r16+0)>>>2]; + page[(r16+100)>>>2] = r2; + r2= page[(r16+20)>>>2]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d294; + if(r2 != r0) { + pc=0x56a94; continue; } - case 0x4d324: + case 0x56b24: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4d334; - pc = 0x40c00; - run_40c00(); - return; - case 0x4d334: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d380; + r31=0x56b34; + pc=0x4a400; + run_4a000(); return; + case 0x56b34: + if(r2 != r0) { + pc=0x56b80; continue; } - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; - r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2= page[(r16+8)>>>2]; + r3= page[(r16+0)>>>2]; r2 = r2 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + page[(r16+8)>>>2] = 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]; + page[(r16+0)>>>2] = r2; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+20)>>>2]; r4 = r0 + 1; - if (r2 != r4) { - /* Next insn is delay slot */ - pc = 0x4d2c0; + if(r2 != r4) { + pc=0x56ac0; continue; } - case 0x4d368: + case 0x56b68: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4d378; - pc = 0x40c00; - run_40c00(); - return; - case 0x4d378: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4d2d4; + r31=0x56b78; + pc=0x4a400; + run_4a000(); return; + case 0x56b78: + if(r2 == r0) { + pc=0x56ad4; continue; } - case 0x4d380: + case 0x56b80: r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x4d2d8; + pc=0x56ad8; continue; - case 0x4d38c: + case 0x56b8c: r2 = r0 + 10; - if (r18 != r2) { - /* Next insn is delay slot */ - pc = 0x4d2d4; + if(r18 != r2) { + pc=0x56ad4; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4d3a8; - pc = 0x40c00; - run_40c00(); - return; - case 0x4d3a8: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4d2d4; + r31=0x56ba8; + pc=0x4a400; + run_4a000(); return; + case 0x56ba8: + if(r2 == r0) { + pc=0x56ad4; continue; } - /* Next insn is delay slot */ - pc = 0x4d380; + pc=0x56b80; continue; - case 0x4d3b8: + case 0x56bb8: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4d3c8; - pc = 0x4d400; - run_4d400(); - return; - case 0x4d3c8: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d380; + r31=0x56bc8; + pc=0x56c00; + continue; + case 0x56bc8: + if(r2 != r0) { + pc=0x56b80; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r2 = tmp; - r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r4= page[(r16+16)>>>2]; r3 = r2 & 65535; - /* Next insn is delay slot */ - pc = 0x4d26c; + pc=0x56a6c; continue; - case 0x4d3e4: - /* Next insn is delay slot */ - r31 = 0x4d3ec; - pc = 0x41400; - run_41400(); - return; - case 0x4d3ec: - /* Next insn is delay slot */ - pc = 0x4d238; + case 0x56be4: + r31=0x56bec; + pc=0x4ac00; + run_4a800(); return; + case 0x56bec: + pc=0x56a38; continue; - 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: + case 0x56c00: r29 = r29 + -32; - writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + page[(r29+24)>>>2] = r17; r17 = r4 + r0; - 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; + r4= page[(r28+-31512)>>>2]; + page[(r29+20)>>>2] = r16; + page[(r29+28)>>>2] = r31; r16 = r5 + r0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4d434; + if(r4 == r0) { + pc=0x56c34; continue; } - r3 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d544; + r3= page[(r4+56)>>>2]; + if(r3 == r0) { + pc=0x56d44; continue; } - 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 */ + case 0x56c34: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r6 = tmp; r2 = r6 & 65535; r3 = r2 & 8; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d4a4; + if(r3 == r0) { + pc=0x56ca4; continue; } - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d4d4; + r3= page[(r16+16)>>>2]; + if(r3 == r0) { + pc=0x56cd4; continue; } - case 0x4d45c: + case 0x56c5c: r4 = r2 & 1; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4d504; + if(r4 != r0) { + pc=0x56d04; continue; } r2 = r2 & 2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d554; + if(r2 != r0) { + pc=0x56d54; continue; } - 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; + r2= page[(r16+20)>>>2]; + page[(r16+8)>>>2] = r2; + case 0x56c80: + if(r3 == r0) { + pc=0x56d1c; continue; } - case 0x4d488: + case 0x56c88: r2 = r0 + r0; - 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]; + case 0x56c8c: + r31= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d4a4: + case 0x56ca4: r3 = r2 & 16; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4d5b0; + if(r3 == r0) { + pc=0x56db0; continue; } r2 = r2 & 4; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4d564; + if(r2 != r0) { + pc=0x56d64; continue; } - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - case 0x4d4c0: + r3= page[(r16+16)>>>2]; + case 0x56cc0: 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r2 & 65535; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4d45c; + if(r3 != r0) { + pc=0x56c5c; continue; } - case 0x4d4d4: + case 0x56cd4: r5 = r2 & 640; r4 = r0 + 512; - if (r5 == r4) { - /* Next insn is delay slot */ - pc = 0x4d45c; + if(r5 == r4) { + pc=0x56c5c; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* 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; + r31=0x56cf4; + pc=0x4dc00; + run_4d800(); return; + case 0x56cf4: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4d45c; + r3= page[(r16+16)>>>2]; + pc=0x56c5c; continue; - case 0x4d504: - r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + case 0x56d04: + r2= page[(r16+20)>>>2]; + page[(r16+8)>>>2] = r0; r2 = r0 - r2; - writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4d488; + page[(r16+24)>>>2] = r2; + if(r3 != r0) { + pc=0x56c88; continue; } - 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 */ + case 0x56d1c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r3 = tmp; r2 = r0 + r0; r4 = r3 & 128; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4d48c; + if(r4 == r0) { + pc=0x56c8c; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x4d48c; + pc=0x56c8c; continue; - case 0x4d544: - /* Next insn is delay slot */ - r31 = 0x4d54c; - pc = 0x41400; - run_41400(); - return; - case 0x4d54c: - /* Next insn is delay slot */ - pc = 0x4d434; + case 0x56d44: + r31=0x56d4c; + pc=0x4ac00; + run_4a800(); return; + case 0x56d4c: + pc=0x56c34; continue; - case 0x4d554: + case 0x56d54: r2 = r0 + r0; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x4d480; + page[(r16+8)>>>2] = r2; + pc=0x56c80; continue; - case 0x4d564: - r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4d594; + case 0x56d64: + r5= page[(r16+48)>>>2]; + if(r5 == r0) { + pc=0x56d94; continue; } r2 = r16 + 64; - if (r5 == r2) { - /* Next insn is delay slot */ - pc = 0x4d590; + if(r5 == r2) { + pc=0x56d90; continue; } r4 = r17 + r0; - /* 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 */ + r31=0x56d8c; + pc=0x4c400; + run_4c000(); return; + case 0x56d8c: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; r6 = tmp; - case 0x4d590: - writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; - case 0x4d594: - r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x56d90: + page[(r16+48)>>>2] = r0; + case 0x56d94: + r3= page[(r16+16)>>>2]; 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 = 0x4d4c0; + page[(r16+4)>>>2] = r0; + page[(r16+0)>>>2] = r3; + pc=0x56cc0; continue; - case 0x4d5b0: + case 0x56db0: 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; + page[(r17+0)>>>2] = r2; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r6&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x4d48c; + pc=0x56c8c; continue; - 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: + case 0x56e00: r2 = r0 + 1; - pc = 0x4d604; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56e04; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d608; + pc = 0x56e08; return; } - case 0x4d608: - /* Next insn is delay slot */ - pc = r31; + case 0x56e08: + pc=r31; return; - case 0x4d610: + case 0x56e10: r2 = r0 + 3; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d624; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56e24; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d628; + pc = 0x56e28; return; } - case 0x4d628: + case 0x56e28: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d640; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56e40; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d640: + case 0x56e40: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d650: + pc=0x57000; + run_57000(); return; + case 0x56e50: r2 = r0 + 4; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d664; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56e64; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d668; + pc = 0x56e68; return; } - case 0x4d668: + case 0x56e68: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d680; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56e80; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d680: + case 0x56e80: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d690: + pc=0x57000; + run_57000(); return; + case 0x56e90: r2 = r0 + 5; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d6a4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56ea4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d6a8; + pc = 0x56ea8; return; } - case 0x4d6a8: + case 0x56ea8: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d6c0; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56ec0; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d6c0: + case 0x56ec0: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d6d0: + pc=0x57000; + run_57000(); return; + case 0x56ed0: r2 = r0 + 6; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d6e4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56ee4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d6e8; + pc = 0x56ee8; return; } - case 0x4d6e8: + case 0x56ee8: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d700; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56f00; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d700: + case 0x56f00: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d710: + pc=0x57000; + run_57000(); return; + case 0x56f10: r2 = r0 + 7; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d724; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56f24; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d728; + pc = 0x56f28; return; } - case 0x4d728: + case 0x56f28: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d740; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56f40; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d740: + case 0x56f40: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d750: + pc=0x57000; + run_57000(); return; + case 0x56f50: r2 = r0 + 8; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d764; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56f64; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d768; + pc = 0x56f68; return; } - case 0x4d768: + case 0x56f68: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d780; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56f80; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d780: + case 0x56f80: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d790: + pc=0x57000; + run_57000(); return; + case 0x56f90: r2 = r0 + 10; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x4d7a4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56fa4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d7a8; + pc = 0x56fa8; return; } - case 0x4d7a8: + case 0x56fa8: r11 = r2 + 255; - r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x4d7c0; + r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r11 != r0) { + pc=0x56fc0; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4d7c0: + case 0x56fc0: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d800; - run_4d800(); - return; - case 0x4d7d0: + pc=0x57000; + run_57000(); return; + case 0x56fd0: r2 = r0 + 19; - pc = 0x4d7d4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56fd4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d7d8; + pc = 0x56fd8; return; } - case 0x4d7d8: - /* Next insn is delay slot */ - pc = r31; + case 0x56fd8: + pc=r31; return; - case 0x4d7e0: + case 0x56fe0: r2 = r0 + 37; - pc = 0x4d7e4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56fe4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d7e8; + pc = 0x56fe8; return; } - case 0x4d7e8: - /* Next insn is delay slot */ - pc = r31; + case 0x56fe8: + pc=r31; return; - case 0x4d7f0: + case 0x56ff0: r2 = r0 + 38; - pc = 0x4d7f4; - r2 = syscall(r2, r4, r5, r6, r7, r8, r9); + pc = 0x56ff4; + r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { - pc = 0x4d7f8; + pc = 0x56ff8; return; } - case 0x4d7f8: - /* Next insn is delay slot */ - pc = r31; + case 0x56ff8: + pc=r31; return; - case 0x4d800: - pc = 0x4d800; + case 0x57000: + pc=0x57000; 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 */ + private final void run_57000() throws ExecutionException { /* 0x57000 - 0x57800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4d800: + for(;;) { + switch(pc) { + case 0x57000: r5 = r0 - r5; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; + page[(r4+0)>>>2] = r5; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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) { - case 0x4da00: + case 0x57200: r4 = r5 + r0; - /* Next insn is delay slot */ - pc = 0x50c00; - run_50c00(); - return; - case 0x4dc00: - pc = 0x4dc00; - return; - 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) { - case 0x4dc00: + pc=0x5a400; + run_5a000(); return; + case 0x57400: r29 = r29 + -48; - 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; + page[(r29+36)>>>2] = r16; + r16= page[(r28+-31516)>>>2]; + page[(r29+40)>>>2] = r17; + r2= page[(r16+328)>>>2]; + page[(r29+44)>>>2] = r31; r17 = r4 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4dd30; + if(r2 == r0) { + pc=0x57530; continue; } - case 0x4dc24: - r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + case 0x57424: + r3= page[(r2+4)>>>2]; r8 = r3 < 32 ? 1 : 0; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x4dcac; + if(r8 != r0) { + pc=0x574ac; continue; } - r2 = 4 << 16; - r2 = r2 + 17920; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4dc64; + r2 = 5 << 16; + r2 = r2 + -8704; + if(r2 != r0) { + pc=0x57464; continue; } - 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]; + case 0x57448: + r31= page[(r29+44)>>>2]; + r17= page[(r29+40)>>>2]; + r16= page[(r29+36)>>>2]; r2 = r0 + -1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4dc64: + case 0x57464: 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 = 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; + page[(r29+16)>>>2] = r5; + page[(r29+20)>>>2] = r6; + page[(r29+24)>>>2] = r7; + r31=0x5747c; + pc=0x4de00; + run_4d800(); return; + case 0x5747c: + r5= page[(r29+16)>>>2]; + r6= page[(r29+20)>>>2]; + r7= page[(r29+24)>>>2]; + if(r2 == r0) { + pc=0x57448; 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= page[(r16+328)>>>2]; + page[(r2+4)>>>2] = r0; + page[(r2+0)>>>2] = r3; + page[(r16+328)>>>2] = r2; r3 = r0 + r0; - 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; + page[(r2+392)>>>2] = r0; + page[(r2+396)>>>2] = r0; + case 0x574ac: + if(r17 != r0) { + pc=0x574e8; continue; } - case 0x4dcb4: + case 0x574b4: r4 = r3 + 1; r3 = r3 + 2; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31= page[(r29+44)>>>2]; r3 = r3 << 2; - writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + page[(r2+4)>>>2] = 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]; + page[(r2+0)>>>2] = r5; + r17= page[(r29+40)>>>2]; + r16= page[(r29+36)>>>2]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4dce8: + case 0x574e8: r4 = r3 << 2; r4 = r2 + r4; - writePages[(r4 + 136) >>> 12][((r4 + 136) >>> 2) & 0x3ff] = r6; - r8 = readPages[(r2 + 392) >>> 12][((r2 + 392) >>> 2) & 0x3ff]; + page[(r4+136)>>>2] = r6; + r8= page[(r2+392)>>>2]; 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; + page[(r2+392)>>>2] = r8; + page[(r4+264)>>>2] = r7; r4 = r0 + 2; - if (r17 != r4) { - /* Next insn is delay slot */ - pc = 0x4dcb4; + if(r17 != r4) { + pc=0x574b4; continue; } - r4 = readPages[(r2 + 396) >>> 12][((r2 + 396) >>> 2) & 0x3ff]; + r4= page[(r2+396)>>>2]; r6 = r4 | r6; - writePages[(r2 + 396) >>> 12][((r2 + 396) >>> 2) & 0x3ff] = r6; - /* Next insn is delay slot */ - pc = 0x4dcb4; + page[(r2+396)>>>2] = r6; + pc=0x574b4; continue; - case 0x4dd30: + case 0x57530: r2 = r16 + 332; - writePages[(r16 + 328) >>> 12][((r16 + 328) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x4dc24; + page[(r16+328)>>>2] = r2; + pc=0x57424; 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 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + case 0x57600: + r2= page[(r28+-31516)>>>2]; 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; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+36)>>>2] = r19; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; + page[(r29+64)>>>2] = r4; r19 = r5 + r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = r2; r20 = r0 + 1; r21 = r0 + -1; - 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; + case 0x57648: + r2= page[(r28+-31516)>>>2]; + r23= page[(r2+328)>>>2]; + if(r23 == r0) { + pc=0x576cc; continue; } - r30 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; - case 0x4de64: - r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + r30= page[(r29+16)>>>2]; + case 0x57664: + r3= page[(r23+4)>>>2]; r16 = r3 + -1; - if (r16 < 0) { - /* Next insn is delay slot */ - pc = 0x4debc; + if(r16 < 0) { + pc=0x576bc; continue; } r18 = r3 + 1; @@ -62389,221 +66208,174 @@ public final class AcmeCrossAssembler extends UnixRuntime { r18 = r18 << 2; r17 = r17 + r4; r18 = r23 + r18; - case 0x4de90: - if (r19 == r0) { - /* Next insn is delay slot */ - pc = 0x4df00; + case 0x57690: + if(r19 == r0) { + pc=0x57700; continue; } - r3 = readPages[(r17 + 128) >>> 12][((r17 + 128) >>> 2) & 0x3ff]; - if (r3 == r19) { - /* Next insn is delay slot */ - pc = 0x4df00; + r3= page[(r17+128)>>>2]; + if(r3 == r19) { + pc=0x57700; continue; } - case 0x4dea8: + case 0x576a8: r16 = r16 + -1; r17 = r17 + -4; r18 = r18 + -4; - if (r16 != r21) { - /* Next insn is delay slot */ - pc = 0x4de90; + if(r16 != r21) { + pc=0x57690; continue; } - case 0x4debc: - r2 = 4 << 16; - r2 = r2 + 18432; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4dfb4; + case 0x576bc: + r2 = 5 << 16; + r2 = r2 + -8192; + if(r2 != r0) { + pc=0x577b4; continue; } - 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]; + case 0x576cc: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4df00: - r4 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; - r3 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + case 0x57700: + r4= page[(r23+4)>>>2]; + r3= page[(r18+0)>>>2]; r4 = r4 + -1; - if (r4 == r16) { - /* Next insn is delay slot */ - pc = 0x4df94; + if(r4 == r16) { + pc=0x57794; continue; } - writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r0; - case 0x4df18: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4dea8; + page[(r18+0)>>>2] = r0; + case 0x57718: + if(r3 == r0) { + pc=0x576a8; continue; } - r5 = readPages[(r23 + 392) >>> 12][((r23 + 392) >>> 2) & 0x3ff]; - r4 = r20 << (r16 & 0x1f); + r5= page[(r23+392)>>>2]; + 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 = 0x4df84; + r22= page[(r23+4)>>>2]; + if(r5 == r0) { + pc=0x57784; continue; } - r5 = readPages[(r23 + 396) >>> 12][((r23 + 396) >>> 2) & 0x3ff]; + r5= page[(r23+396)>>>2]; r4 = r4 & r5; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4dfa0; + if(r4 != r0) { + pc=0x577a0; 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 = 0x4df5c; + r4= page[(r29+64)>>>2]; + r5= page[(r17+0)>>>2]; + pc=r3; + r31=0x5775c; return; - case 0x4df5c: - r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; - if (r3 != r22) { - /* Next insn is delay slot */ - pc = 0x4de48; + case 0x5775c: + r3= page[(r23+4)>>>2]; + if(r3 != r22) { + pc=0x57648; continue; } - r3 = readPages[(r30 + 0) >>> 12][((r30 + 0) >>> 2) & 0x3ff]; - if (r3 == r23) { - /* Next insn is delay slot */ - pc = 0x4dea8; + r3= page[(r30+0)>>>2]; + if(r3 == r23) { + pc=0x576a8; continue; } - /* Next insn is delay slot */ - pc = 0x4de48; + pc=0x57648; continue; - case 0x4df84: - /* Next insn is delay slot */ - pc = r3; - r31 = 0x4df8c; + case 0x57784: + pc=r3; + r31=0x5778c; return; - case 0x4df8c: - /* Next insn is delay slot */ - pc = 0x4df5c; + case 0x5778c: + pc=0x5775c; continue; - case 0x4df94: - writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r16; - /* Next insn is delay slot */ - pc = 0x4df18; + case 0x57794: + page[(r23+4)>>>2] = r16; + pc=0x57718; continue; - case 0x4dfa0: - r4 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r3; - r31 = 0x4dfac; + case 0x577a0: + r4= page[(r17+0)>>>2]; + pc=r3; + r31=0x577ac; return; - case 0x4dfac: - /* Next insn is delay slot */ - pc = 0x4df5c; + case 0x577ac: + pc=0x5775c; continue; - case 0x4dfb4: - r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4dffc; + case 0x577b4: + r3= page[(r23+4)>>>2]; + if(r3 != r0) { + pc=0x577fc; continue; } - r3 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4e010; - run_4e000(); - return; + r3= page[(r23+0)>>>2]; + if(r3 == r0) { + pc=0x57810; + run_57800(); return; } r4 = r23 + r0; - 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; + page[(r30+0)>>>2] = r3; + r31=0x577e4; + pc=0x4e000; + run_4e000(); return; + case 0x577e4: + r23= page[(r30+0)>>>2]; + case 0x577ec: + if(r23 != r0) { + pc=0x57664; continue; } - /* Next insn is delay slot */ - pc = 0x4decc; + pc=0x576cc; continue; - case 0x4dffc: - r3 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; - case 0x4e000: - pc = 0x4e000; + case 0x577fc: + r3= page[(r23+0)>>>2]; + case 0x57800: + pc=0x57800; 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_4e000() throws ExecutionException { /* 0x4e000 - 0x4e200 */ + private final void run_57800() throws ExecutionException { /* 0x57800 - 0x58000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4e000: + for(;;) { + switch(pc) { + case 0x57800: r30 = r23 + r0; r23 = r3 + r0; - /* Next insn is delay slot */ - pc = 0x4dfec; - run_4de00(); - return; - case 0x4e010: + pc=0x577ec; + run_57000(); return; + case 0x57810: r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4e000; + pc=0x57800; continue; - 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: + case 0x57a00: 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= page[(r4+16)>>>2]; + page[(r29+20)>>>2] = r17; + r17= page[(r5+16)>>>2]; + page[(r29+32)>>>2] = 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; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + page[(r29+16)>>>2] = r16; r20 = r4 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4e474; - run_4e400(); - return; + if(r2 != r0) { + pc=0x57c74; + continue; } r17 = r17 + -1; r12 = r17 << 2; @@ -62611,53 +66383,43 @@ 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= page[(r18+0)>>>2]; + r2= page[(r12+0)>>>2]; 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) { + if(r22!=0) { + hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc = 0x4e26c; + pc=0x57a6c; 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 0x4e26c: + case 0x57a6c: r22 = lo; r21 = lo; - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x4e368; + if(r22 == r0) { + pc=0x57b68; continue; } r6 = r16 + r0; r3 = r19 + r0; r4 = r0 + r0; r2 = r0 + r0; - case 0x4e28c: + case 0x57a8c: 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 = (long) (r22) * ((long) r10); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + r11= page[(r6+-4)>>>2]; + r8= page[(r3+0)>>>2]; + 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 = (long) (r22) * ((long) 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; @@ -62674,74 +66436,63 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r7 & 65535; r8 = r8 << 16; r7 = r8 | r7; - writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r7; + page[(r3+-4)>>>2] = r7; r7 = ((r18 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x4e28c; + if(r7 == r0) { + pc=0x57a8c; continue; } - r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4e368; + r2= page[(r12+0)>>>2]; + if(r2 != r0) { + pc=0x57b68; continue; } r2 = r12 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4e364; + if(r3 == r0) { + pc=0x57b64; continue; } - r3 = readPages[(r12 + -4) >>> 12][((r12 + -4) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4e350; + r3= page[(r12+-4)>>>2]; + if(r3 == r0) { + pc=0x57b50; continue; } - /* Next insn is delay slot */ - pc = 0x4e364; + pc=0x57b64; continue; - case 0x4e340: - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4e364; + case 0x57b40: + r3= page[(r2+0)>>>2]; + if(r3 != r0) { + pc=0x57b64; continue; } - case 0x4e350: + case 0x57b50: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4e340; + if(r3 != r0) { + pc=0x57b40; continue; } - case 0x4e364: - writePages[(r20 + 16) >>> 12][((r20 + 16) >>> 2) & 0x3ff] = r17; - case 0x4e368: + case 0x57b64: + page[(r20+16)>>>2] = r17; + case 0x57b68: r4 = r20 + r0; - /* 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; + r31=0x57b74; + pc=0x5c400; + run_5c000(); return; + case 0x57b74: + if(r2 < 0) { + pc=0x57c44; + continue; } r21 = r22 + 1; r3 = r19 + r0; r8 = r0 + r0; - case 0x4e388: + case 0x57b88: r16 = r16 + 4; - r7 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; - r6 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r7= page[(r16+-4)>>>2]; + r6= page[(r3+0)>>>2]; r5 = r7 & 65535; r2 = r6 & 65535; r5 = r8 - r5; @@ -62756,761 +66507,533 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r6 << 16; r5 = r6 | r5; r3 = r3 + 4; - writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r5; + page[(r3+-4)>>>2] = r5; r5 = ((r18 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x4e388; + if(r5 == r0) { + pc=0x57b88; 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 = 0x4e444; - run_4e400(); - return; + r2= page[(r3+0)>>>2]; + if(r2 != r0) { + pc=0x57c44; + continue; } r2 = r3 + -4; r4 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4e440; - run_4e400(); - 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 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4e42c; + if(r4 == r0) { + pc=0x57c40; continue; } - /* Next insn is delay slot */ - pc = 0x4e440; + r3= page[(r3+-4)>>>2]; + if(r3 == r0) { + pc=0x57c2c; + continue; + } + pc=0x57c40; continue; - case 0x4e41c: - r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4e440; + case 0x57c1c: + r3= page[(r2+0)>>>2]; + if(r3 != r0) { + pc=0x57c40; continue; } - case 0x4e42c: + case 0x57c2c: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4e41c; + if(r3 != r0) { + pc=0x57c1c; continue; } - case 0x4e440: - writePages[(r20 + 16) >>> 12][((r20 + 16) >>> 2) & 0x3ff] = r17; - case 0x4e444: + case 0x57c40: + page[(r20+16)>>>2] = r17; + case 0x57c44: r2 = r21 + r0; - 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]; + case 0x57c48: + r31= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x4e474: + case 0x57c74: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4e448; + pc=0x57c48; continue; - 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: - r5 = readPages[(r4 + 64) >>> 12][((r4 + 64) >>> 2) & 0x3ff]; + case 0x57e00: + r5= page[(r4+64)>>>2]; 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; + page[(r29+84)>>>2] = r17; + page[(r29+80)>>>2] = r16; + page[(r29+116)>>>2] = r31; + page[(r29+112)>>>2] = r30; + page[(r29+108)>>>2] = r23; + page[(r29+104)>>>2] = r22; + page[(r29+100)>>>2] = r21; + page[(r29+96)>>>2] = r20; + page[(r29+92)>>>2] = r19; + page[(r29+88)>>>2] = r18; + page[(r29+124)>>>2] = f20; + page[(r29+120)>>>2] = 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 = 0x4e670; + r17= page[(r29+156)>>>2]; + page[(r29+36)>>>2] = r7; + page[(r29+32)>>>2] = r6; + if(r5 == r0) { + pc=0x57e70; continue; } - r2 = readPages[(r4 + 68) >>> 12][((r4 + 68) >>> 2) & 0x3ff]; + r2= page[(r4+68)>>>2]; 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 = 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; + page[(r5+4)>>>2] = r2; + r2 = r3 << (r2&0x1f); + page[(r5+8)>>>2] = r2; + r31=0x57e6c; + pc=0x5b200; + run_5b000(); return; + case 0x57e6c: + page[(r16+64)>>>2] = r0; + case 0x57e70: + r2= page[(r29+32)>>>2]; + if(r2 < 0) { + pc=0x57f7c; continue; } - r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; - writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; - case 0x4e688: + r18= page[(r29+32)>>>2]; + page[(r17+0)>>>2] = r0; + case 0x57e88: r2 = 32752 << 16; r3 = r18 & r2; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x4e724; + if(r3 == r2) { + pc=0x57f24; continue; } - f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f20= page[(r29+36)>>>2]; f0 = r0; - f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + f21= page[(r29+32)>>>2]; 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 = 0x4e7a0; + 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)) { + pc=0x57fa0; continue; } - r9 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; - r3 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + r9= page[(r29+152)>>>2]; + r3= page[(r29+160)>>>2]; r2 = r0 + 1; - writePages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff] = r2; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4ed6c; - run_4ec00(); - return; + page[(r9+0)>>>2] = r2; + if(r3 == r0) { + pc=0x5856c; + run_58000(); return; } - 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; - return; - 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 = 0x4ed0c; - run_4ec00(); - return; - } - 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; + r2 = r2 + 6369; + page[(r3+0)>>>2] = r2; + r2 = 6 << 16; + r2 = r2 + 6368; + case 0x57ee8: + f20= page[(r29+124)>>>2]; + r31= page[(r29+116)>>>2]; + r30= page[(r29+112)>>>2]; + r23= page[(r29+108)>>>2]; + r22= page[(r29+104)>>>2]; + r21= page[(r29+100)>>>2]; + r20= page[(r29+96)>>>2]; + r19= page[(r29+92)>>>2]; + r18= page[(r29+88)>>>2]; + r17= page[(r29+84)>>>2]; + r16= page[(r29+80)>>>2]; + f21= page[(r29+120)>>>2]; + r29 = r29 + 128; + pc=r31; + return; + case 0x57f24: + r8= page[(r29+152)>>>2]; + r9= page[(r29+36)>>>2]; + r2 = r0 + 9999; + page[(r8+0)>>>2] = r2; + if(r9 == r0) { + pc=0x5850c; + run_58000(); return; + } + case 0x57f3c: + r2 = 6 << 16; + r2 = r2 + 14992; + case 0x57f44: + r3= page[(r29+160)>>>2]; + if(r3 == r0) { + pc=0x57ee8; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4ed30; - run_4ec00(); - return; + if(r3 != r0) { + pc=0x58530; + run_58000(); return; } r3 = r2 + 3; - 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; + case 0x57f68: + r8= page[(r29+160)>>>2]; + page[(r8+0)>>>2] = r3; + pc=0x57ee8; continue; - case 0x4e77c: - r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + case 0x57f7c: + r3= page[(r29+32)>>>2]; 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 = 0x4e688; + page[(r17+0)>>>2] = r2; + page[(r29+32)>>>2] = r18; + pc=0x57e88; continue; - case 0x4e7a0: + case 0x57fa0: r2 = r29 + 24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + page[(r29+16)>>>2] = 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 = 0x4e7c4; - pc = 0x53000; - run_53000(); - return; - case 0x4e7c4: + page[(r29+20)>>>2] = r2; + r31=0x57fc4; + pc=0x5c800; + run_5c800(); return; + case 0x57fc4: r4 = r18 >>> 20; r17 = r2 + r0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4ed3c; - run_4ec00(); - return; + if(r4 != r0) { + pc=0x5853c; + run_58000(); return; } - r5 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5= page[(r29+28)>>>2]; + r4= page[(r29+24)>>>2]; r4 = r5 + r4; r2 = r4 < -1041 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f3f0; - run_4f200(); - return; + if(r2 != r0) { + pc=0x58bf0; + run_58800(); return; } r2 = r0 + -1010; r2 = r2 - r4; - r6 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; - r18 = r18 << (r2 & 0x1f); - case 0x4e800: - pc = 0x4e800; + r6= page[(r29+36)>>>2]; + r18 = r18 << (r2&0x1f); + case 0x58000: + pc=0x58000; 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_4e800() throws ExecutionException { /* 0x4e800 - 0x4ea00 */ + private final void run_58000() throws ExecutionException { /* 0x58000 - 0x58800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4e800: + for(;;) { + switch(pc) { + case 0x58000: r2 = r4 + 1042; - r2 = r6 >>> (r2 & 0x1f); + r2 = r6 >>> (r2&0x1f); r18 = r18 | r2; - 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 0x5800c: + f0 = r18; + { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } + if(r18 < 0) { + pc=0x59198; + run_59000(); return; } - case 0x4e820: + case 0x58020: r2 = f3; r6 = 65040 << 16; r3 = f2; r2 = r6 + r2; r4 = r4 + -1; r19 = r0 + 1; - case 0x4e838: + case 0x58038: f4 = r3; - f0 = readPages[(r28 + -31484) >>> 12][((r28 + -31484) >>> 2) & 0x3ff]; + f0= page[(r28+-31484)>>>2]; f5 = r2; - 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; - } + f1= page[(r28+-31488)>>>2]; + 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= page[(r28+-31476)>>>2]; + f1= page[(r28+-31480)>>>2]; + { 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= page[(r28+-31468)>>>2]; + f1= page[(r28+-31472)>>>2]; + { 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= page[(r28+-31460)>>>2]; + { long l = Double.doubleToLongBits(((double)f6)); f3 = (int)(l >>> 32); f2 = (int)l; } + f1= page[(r28+-31464)>>>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; } + { 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; + page[(r29+44)>>>2] = 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 = 0x4f384; - run_4f200(); - 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)) { + pc=0x58b84; + run_58800(); 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; + case 0x580dc: + r8= page[(r29+44)>>>2]; + r2 = (r8&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x58b4c; + run_58800(); return; } r3 = 6 << 16; r2 = r8 << 3; - r3 = r3 + -26584; + r3 = r3 + 15056; 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 = 0x4f408; - run_4f400(); - return; + f0= page[(r2+4)>>>2]; + f2= page[(r29+36)>>>2]; + f1= page[(r2+0)>>>2]; + f3= page[(r29+32)>>>2]; + 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)) { + pc=0x58c08; + run_58800(); return; } r8 = r8 + -1; - writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r8; - writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r0; - case 0x4e930: + page[(r29+44)>>>2] = r8; + page[(r29+60)>>>2] = r0; + case 0x58130: r4 = r5 - r4; r23 = r4 + -1; - if (r23 < 0) { - /* Next insn is delay slot */ - pc = 0x4f374; - run_4f200(); - return; + if(r23 < 0) { + pc=0x58b74; + run_58800(); return; } r18 = r0 + r0; - case 0x4e944: - r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; - if (r8 < 0) { - /* Next insn is delay slot */ - pc = 0x4f35c; - run_4f200(); - return; + case 0x58144: + r8= page[(r29+44)>>>2]; + if(r8 < 0) { + pc=0x58b5c; + run_58800(); return; } r23 = r23 + r8; - writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r8; + page[(r29+48)>>>2] = r8; r22 = r0 + r0; - 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; + case 0x58160: + r3= page[(r29+144)>>>2]; + r2 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x5857c; + continue; } r2 = r3 < 6 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4fdf8; - run_4fc00(); - return; + if(r2 != r0) { + pc=0x595f8; + run_59000(); return; } r3 = r3 + -4; - writePages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff] = r3; + page[(r29+144)>>>2] = r3; r8 = r0 + r0; - case 0x4e98c: - r9 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + case 0x5818c: + r9= page[(r29+144)>>>2]; r2 = r0 + 3; - if (r9 == r2) { - /* Next insn is delay slot */ - pc = 0x4f9b4; - run_4f800(); - return; + if(r9 == r2) { + pc=0x591b4; + run_59000(); return; } r2 = r9 < 4 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f82c; - run_4f800(); - return; + if(r2 != r0) { + pc=0x5902c; + run_59000(); return; } - r3 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + r3= page[(r29+144)>>>2]; r2 = r0 + 4; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x4f5fc; - run_4f400(); - return; + if(r3 == r2) { + pc=0x58dfc; + run_58800(); return; } r2 = r0 + 5; - if (r3 != r2) { - /* Next insn is delay slot */ - pc = 0x4ed80; - run_4ec00(); - return; + if(r3 != r2) { + pc=0x58580; + continue; } r3 = r0 + 1; - 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]; + page[(r29+52)>>>2] = r3; + case 0x581cc: + r9= page[(r29+148)>>>2]; + r3= page[(r29+44)>>>2]; r9 = r9 + r3; r30 = r9 + 1; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r9; - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x4fa18; - run_4fa00(); - return; + page[(r29+64)>>>2] = r9; + if(r30 <= 0) { + pc=0x59218; + run_59000(); return; } r6 = r30 + r0; - 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 0x581f0: + r2 = (r6&0xffffffffL) < (24&0xffffffffL) ? 1 : 0; + page[(r16+68)>>>2] = r0; + if(r2 != r0) { + pc=0x59604; + run_59000(); 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 = r0 + 1; r2 = r0 + 4; - case 0x4ea08: + case 0x58208: 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 = 0x4ea08; + if(r4 == r0) { + pc=0x58208; continue; } - writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r5; + page[(r16+68)>>>2] = r5; r21 = r6 + r0; - case 0x4ea2c: + case 0x5822c: 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 = 0x4ea40; - pc = 0x51800; - run_51800(); - return; - case 0x4ea40: + page[(r29+68)>>>2] = r8; + r21 = (r21&0xffffffffL) < (15&0xffffffffL) ? 1 : 0; + r31=0x58240; + pc=0x5b000; + run_5b000(); return; + case 0x58240: 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 = 0x4edb4; - run_4ec00(); - return; + page[(r16+64)>>>2] = r2; + r8= page[(r29+68)>>>2]; + if(r21 == r0) { + pc=0x585b4; + continue; } - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x4edb4; - run_4ec00(); - return; + if(r8 == r0) { + pc=0x585b4; + continue; } - 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; + f8= page[(r29+36)>>>2]; + r8= page[(r29+44)>>>2]; + f9= page[(r29+32)>>>2]; + if(r8 <= 0) { + pc=0x5922c; + run_59000(); return; } r3 = r8 & 15; r2 = 6 << 16; r3 = r3 << 3; - r2 = r2 + -26584; + r2 = r2 + 15056; r2 = r3 + r2; - f2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; - f3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + f2= page[(r2+4)>>>2]; + f3= page[(r2+0)>>>2]; r2 = r8 >> 4; r3 = r2 & 16; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4f9e0; - run_4f800(); - return; + if(r3 == r0) { + pc=0x591e0; + run_59000(); return; } r3 = 6 << 16; - f0 = readPages[(r3 + -26588) >>> 12][((r3 + -26588) >>> 2) & 0x3ff]; + f0= page[(r3+15052)>>>2]; r2 = r2 & 15; - 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; + f1= page[(r3+15048)>>>2]; + 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 0x582b8: + if(r2 == r0) { + pc=0x582f8; continue; } r3 = 6 << 16; - r3 = r3 + -26624; - case 0x4eac8: + r3 = r3 + 15016; + case 0x582c8: r4 = r2 & 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4eae8; + if(r4 == r0) { + pc=0x582e8; continue; } - f4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f4= page[(r3+4)>>>2]; 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 0x4eae8: + f5= page[(r3+0)>>>2]; + { 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 0x582e8: r2 = r2 >> 1; r3 = r3 + 8; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4eac8; + if(r2 != r0) { + pc=0x582c8; continue; } - 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; + case 0x582f8: + { 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 0x582fc: + r3= page[(r29+60)>>>2]; + if(r3 == r0) { + pc=0x5832c; continue; } - 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; + f2= page[(r28+-31452)>>>2]; + f3= page[(r28+-31456)>>>2]; + 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)) { + pc=0x594b4; + run_59000(); return; } - case 0x4eb2c: + case 0x5832c: 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 + -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; - } + 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= page[(r28+-31436)>>>2]; + f3= page[(r28+-31440)>>>2]; + { 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 = 0x4f900; - run_4f800(); - return; + if(r30 == r0) { + pc=0x59100; + run_59000(); return; } - r2 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2= page[(r29+44)>>>2]; r4 = r30 + r0; - case 0x4eb6c: - r3 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + case 0x5836c: + r3= page[(r29+52)>>>2]; r5 = r4 + -1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4fb74; - run_4fa00(); - return; + if(r3 == r0) { + pc=0x59374; + run_59000(); return; } r3 = 6 << 16; r5 = r5 << 3; - r3 = r3 + -26584; + r3 = r3 + 15056; r3 = r5 + r3; - 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]; + f2= page[(r3+4)>>>2]; + f4= page[(r28+-31420)>>>2]; + f3= page[(r3+0)>>>2]; + f5= page[(r28+-31424)>>>2]; 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; @@ -63518,226 +67041,123 @@ 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 = 0x4ecc0; - run_4ec00(); - return; + addr=r20+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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)) { + pc=0x584c0; + continue; } - 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: - 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; + f10= page[(r28+-31452)>>>2]; + f11= page[(r28+-31456)>>>2]; + { 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)) { + pc=0x59580; + run_59000(); return; } r5 = r4 < 2 ? 1 : 0; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x4f968; - run_4f800(); - return; + if(r5 != r0) { + pc=0x59168; + run_59000(); return; } - f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; + f6= page[(r28+-31444)>>>2]; r4 = r20 + r4; - f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4ec64; + f7= page[(r28+-31448)>>>2]; + pc=0x58464; continue; - 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; + case 0x58448: + { 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)) { + pc=0x59580; + run_59000(); return; } - if (r3 == r4) { - /* Next insn is delay slot */ - pc = 0x4f968; - run_4f800(); - return; + if(r3 == r4) { + pc=0x59168; + run_59000(); return; } - 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; - } + case 0x58464: + { 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 = 0x4ec48; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(((fcsr&0x800000)!=0) == (0!=0)) { + pc=0x58448; continue; } - case 0x4ecc0: - writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; - case 0x4ecc4: + case 0x584c0: + page[(r29+44)>>>2] = r2; + case 0x584c4: r4 = r16 + r0; r5 = r17 + r0; - 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]; + page[(r29+72)>>>2] = r3; + r31=0x584d8; + pc=0x5b200; + run_5b000(); return; + case 0x584d8: + r8= page[(r29+44)>>>2]; + r3= page[(r29+72)>>>2]; 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 = 0x4f820; - run_4f800(); - return; + r9= page[(r29+152)>>>2]; + r8= page[(r29+160)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r9+0)>>>2] = r2; + if(r8 == r0) { + pc=0x59020; + run_59000(); return; } - writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + page[(r8+0)>>>2] = r3; r2 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x4e6e8; - run_4e600(); - return; - case 0x4ed0c: + pc=0x57ee8; + run_57800(); return; + case 0x5850c: r2 = 15 << 16; r2 = r2 | 65535; r18 = r18 & r2; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x4e73c; - run_4e600(); - return; + if(r18 != r0) { + pc=0x57f3c; + run_57800(); return; } r2 = 6 << 16; - r2 = r2 + -26660; - /* Next insn is delay slot */ - pc = 0x4e744; - run_4e600(); - return; - case 0x4ed30: + r2 = r2 + 14980; + pc=0x57f44; + run_57800(); return; + case 0x58530: r3 = r2 + 8; - /* Next insn is delay slot */ - pc = 0x4e768; - run_4e600(); - return; - case 0x4ed3c: + pc=0x57f68; + run_57800(); return; + case 0x5853c: r2 = f21; r6 = 15 << 16; r6 = r6 | 65535; @@ -63746,2920 +67166,2052 @@ public final class AcmeCrossAssembler extends UnixRuntime { r2 = r6 | r5; r3 = f20; r4 = r4 + -1023; - r5 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r5= page[(r29+28)>>>2]; r19 = r0 + 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; + pc=0x58038; + continue; + case 0x5856c: + r2 = 6 << 16; + r2 = r2 + 6368; + pc=0x57ee8; + run_57800(); return; + case 0x5857c: + page[(r29+144)>>>2] = r0; + case 0x58580: + page[(r16+68)>>>2] = r0; r4 = r16 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x4ed94; - pc = 0x51800; - run_51800(); - return; - case 0x4ed94: + r31=0x58594; + pc=0x5b000; + run_5b000(); return; + case 0x58594: 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; + page[(r16+64)>>>2] = r2; + page[(r29+148)>>>2] = r0; + page[(r29+64)>>>2] = r8; r30 = r0 + -1; - 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; + page[(r29+52)>>>2] = r9; + case 0x585b4: + r2= page[(r29+24)>>>2]; + if(r2 < 0) { + pc=0x5877c; + continue; } - r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r8= page[(r29+44)>>>2]; r3 = r8 < 15 ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x4ef7c; - run_4ee00(); - return; + if(r3 == r0) { + pc=0x5877c; + continue; } r3 = 6 << 16; r2 = r8 << 3; - r3 = r3 + -26584; + r3 = r3 + 15056; 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 = 0x4f628; - run_4f600(); - return; + f2= page[(r2+4)>>>2]; + r9= page[(r29+148)>>>2]; + f3= page[(r2+0)>>>2]; + if(r9 < 0) { + pc=0x58e28; + run_58800(); return; } - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_4ee00() throws ExecutionException { /* 0x4ee00 - 0x4f000 */ - int addr, tmp; - 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; - } + case 0x585fc: + f6= page[(r29+36)>>>2]; + f7= page[(r29+32)>>>2]; + { 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 = 0x4ef00; + addr=r20+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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) { + pc=0x58700; continue; } - f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; + f6= page[(r28+-31444)>>>2]; f8 = r0; - 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; + f7= page[(r28+-31448)>>>2]; + 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)) { + pc=0x584c4; + continue; } r2 = r20 + 2; r30 = r20 + r30; - /* Next insn is delay slot */ - pc = 0x4eeac; + pc=0x586ac; continue; - 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; - } + case 0x58694: + { 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 = 0x4ecc4; - run_4ec00(); - 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)) { + pc=0x584c4; + continue; } - 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; - } + case 0x586ac: + { 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 = 0x4ee94; + addr=r2+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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) { + pc=0x58694; continue; } - 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; + case 0x58700: + { 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)) { + pc=0x58738; 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 = 0x4ecc4; - run_4ec00(); - 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)) { + pc=0x584c4; + continue; } r4 = f10; r2 = r4 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4ecc4; - run_4ec00(); - return; + if(r2 == r0) { + pc=0x584c4; + continue; } - 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 */ + case 0x58738: + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - case 0x4ef3c: + case 0x5873c: r4 = r0 + 57; - /* Next insn is delay slot */ - pc = 0x4ef58; + pc=0x58758; continue; - case 0x4ef48: - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4fab4; - run_4fa00(); - return; + case 0x58748: + if(r20 == r2) { + pc=0x592b4; + run_59000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; r3 = r2 + r0; - case 0x4ef58: + case 0x58758: r2 = r3 + -1; - if (r5 == r4) { - /* Next insn is delay slot */ - pc = 0x4ef48; + if(r5 == r4) { + pc=0x58748; 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 = 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; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x584c4; + continue; + case 0x5877c: + r8= page[(r29+52)>>>2]; + if(r8 == r0) { + pc=0x58bb8; + run_58800(); return; } - r9 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + r9= page[(r29+144)>>>2]; r9 = r9 < 2 ? 1 : 0; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r9; - if (r9 != r0) { - /* Next insn is delay slot */ - pc = 0x4f6fc; - run_4f600(); - return; + page[(r29+56)>>>2] = r9; + if(r9 != r0) { + pc=0x58efc; + run_58800(); return; } r3 = r30 + -1; r2 = r22 < r3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f9c0; - run_4f800(); - return; + if(r2 != r0) { + pc=0x591c0; + run_59000(); return; } r3 = r22 - r3; - case 0x4efb8: - if (r30 < 0) { - /* Next insn is delay slot */ - pc = 0x4fc78; - run_4fc00(); - return; + case 0x587b8: + if(r30 < 0) { + pc=0x59478; + run_59000(); return; } r21 = r18 + r0; r2 = r30 + r0; - case 0x4efc8: + case 0x587c8: r4 = r16 + r0; r5 = r0 + 1; - writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + page[(r29+72)>>>2] = r3; r18 = r18 + r2; r23 = r23 + r2; - /* Next insn is delay slot */ - r31 = 0x4efe4; - pc = 0x52200; - run_52200(); - return; - case 0x4efe4: - r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r31=0x587e4; + pc=0x5ba00; + run_5b800(); return; + case 0x587e4: + r3= page[(r29+72)>>>2]; r19 = r2 + r0; - case 0x4efec: - if (r21 == r0) { - /* Next insn is delay slot */ - pc = 0x4f018; - run_4f000(); - return; + case 0x587ec: + if(r21 == r0) { + pc=0x58818; + run_58800(); return; } - if (r23 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f018; - run_4f000(); - return; + if(r23 <= 0) { + pc=0x58818; + run_58800(); return; } r4 = r21 < r23 ? 1 : 0; - case 0x4f000: - pc = 0x4f000; + case 0x58800: + pc=0x58800; 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_4f000() throws ExecutionException { /* 0x4f000 - 0x4f200 */ + private final void run_58800() throws ExecutionException { /* 0x58800 - 0x59000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4f000: + for(;;) { + switch(pc) { + case 0x58800: r2 = r23 + r0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4f5f0; - run_4f400(); - return; + if(r4 != r0) { + pc=0x58df0; + continue; } - case 0x4f00c: + case 0x5880c: r18 = r18 - r2; r21 = r21 - r2; r23 = r23 - r2; - case 0x4f018: - if (r22 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f094; + case 0x58818: + if(r22 <= 0) { + pc=0x58894; continue; } - r9 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x4f978; - run_4f800(); - return; + r9= page[(r29+52)>>>2]; + if(r9 == r0) { + pc=0x59178; + run_59000(); return; } - if (r3 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f088; + if(r3 <= 0) { + pc=0x58888; 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 = 0x4f050; - pc = 0x52800; - run_52800(); - return; - case 0x4f050: + page[(r29+72)>>>2] = r3; + r31=0x58850; + pc=0x5c000; + run_5c000(); return; + case 0x58850: r5 = r2 + r0; r6 = r17 + r0; r4 = r16 + r0; r19 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x4f068; - pc = 0x52400; - run_52400(); - return; - case 0x4f068: + r31=0x58868; + pc=0x5bc00; + run_5b800(); return; + case 0x58868: r5 = r17 + r0; r4 = r16 + r0; - 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]; + page[(r29+68)>>>2] = r2; + r31=0x5887c; + pc=0x5b200; + run_5b000(); return; + case 0x5887c: + r2= page[(r29+68)>>>2]; + r3= page[(r29+72)>>>2]; r17 = r2 + r0; - case 0x4f088: + case 0x58888: r6 = r22 - r3; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x4f6a4; - run_4f600(); - return; + if(r6 != r0) { + pc=0x58ea4; + continue; } - case 0x4f094: + case 0x58894: r4 = r16 + r0; r5 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x4f0a4; - pc = 0x52200; - run_52200(); - return; - case 0x4f0a4: - r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r31=0x588a4; + pc=0x5ba00; + run_5b800(); return; + case 0x588a4: + r3= page[(r29+48)>>>2]; r22 = r2 + r0; - if (r3 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f0cc; + if(r3 <= 0) { + pc=0x588cc; continue; } r4 = r16 + r0; r5 = r2 + r0; r6 = r3 + r0; - /* Next insn is delay slot */ - r31 = 0x4f0c8; - pc = 0x52800; - run_52800(); - return; - case 0x4f0c8: + r31=0x588c8; + pc=0x5c000; + run_5c000(); return; + case 0x588c8: r22 = r2 + r0; - 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 0x588cc: + r7= page[(r29+56)>>>2]; + if(r7 != r0) { + pc=0x58da0; + continue; } - 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; + case 0x588dc: + page[(r29+56)>>>2] = r0; + case 0x588e0: + r7= page[(r29+48)>>>2]; + if(r7 != r0) { + pc=0x58ff0; + continue; } r2 = r0 + 1; - case 0x4f0f4: + case 0x588f4: r2 = r2 + r23; r2 = r2 & 31; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4f3d8; - run_4f200(); - return; + if(r2 == r0) { + pc=0x58bd8; + continue; } r3 = r0 + 32; r3 = r3 - r2; r4 = r3 < 5 ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x4fddc; - run_4fc00(); - return; + if(r4 != r0) { + pc=0x595dc; + run_59000(); return; } r3 = r0 + 28; r2 = r3 - r2; r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; - case 0x4f12c: - if (r18 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f14c; + case 0x5892c: + if(r18 <= 0) { + pc=0x5894c; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x4f148; - pc = 0x52a00; - run_52a00(); - return; - case 0x4f148: + r31=0x58948; + pc=0x5c200; + run_5c000(); return; + case 0x58948: r17 = r2 + r0; - case 0x4f14c: - if (r23 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f16c; + case 0x5894c: + if(r23 <= 0) { + pc=0x5896c; continue; } r5 = r22 + r0; r4 = r16 + r0; r6 = r23 + r0; - /* Next insn is delay slot */ - r31 = 0x4f168; - pc = 0x52a00; - run_52a00(); - return; - case 0x4f168: + r31=0x58968; + pc=0x5c200; + run_5c000(); return; + case 0x58968: r22 = r2 + r0; - 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 0x5896c: + r8= page[(r29+60)>>>2]; + if(r8 != r0) { + pc=0x58d48; + continue; } - case 0x4f17c: - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f844; - run_4f800(); - return; + case 0x5897c: + if(r30 <= 0) { + pc=0x59044; + run_59000(); 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; + case 0x58984: + r9= page[(r29+52)>>>2]; + if(r9 == r0) { + pc=0x58c14; + continue; } - if (r21 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f1b4; + if(r21 <= 0) { + pc=0x589b4; continue; } r5 = r19 + r0; r4 = r16 + r0; r6 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x4f1b0; - pc = 0x52a00; - run_52a00(); - return; - case 0x4f1b0: + r31=0x589b0; + pc=0x5c200; + run_5c000(); return; + case 0x589b0: r19 = r2 + r0; - case 0x4f1b4: - r3 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4fad8; - run_4fa00(); - return; + case 0x589b4: + r3= page[(r29+56)>>>2]; + if(r3 != r0) { + pc=0x592d8; + run_59000(); return; } r21 = r19 + r0; - case 0x4f1c8: - r8 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + case 0x589c8: + r8= page[(r29+36)>>>2]; 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 0x4f1e0: + page[(r29+48)>>>2] = r30; + page[(r29+52)>>>2] = r8; + case 0x589e0: r9 = r18 + -1; r4 = r17 + r0; r5 = r22 + r0; - writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r9; - /* Next insn is delay slot */ - r31 = 0x4f1f8; - pc = 0x4e200; - run_4e200(); - return; - case 0x4f1f8: + page[(r29+40)>>>2] = r9; + r31=0x589f8; + pc=0x57a00; + run_57800(); return; + case 0x589f8: r4 = r17 + r0; r5 = r19 + r0; - 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: - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + page[(r29+32)>>>2] = r2; r23 = r2 + 48; - /* Next insn is delay slot */ - r31 = 0x4f210; - pc = 0x52c00; - run_52c00(); - return; - case 0x4f210: + r31=0x58a10; + pc=0x5c400; + run_5c000(); return; + case 0x58a10: r4 = r16 + r0; r5 = r22 + r0; r6 = r21 + r0; r30 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x4f228; - pc = 0x52e00; - run_52e00(); - return; - case 0x4f228: + r31=0x58a28; + pc=0x5c600; + run_5c000(); return; + case 0x58a28: r3 = r2 + r0; - r2 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f7d4; - run_4f600(); - return; + r2= page[(r2+12)>>>2]; + if(r2 != r0) { + pc=0x58fd4; + continue; } r5 = r3 + r0; r4 = r17 + r0; - 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]; + page[(r29+72)>>>2] = r3; + r31=0x58a50; + pc=0x5c400; + run_5c000(); return; + case 0x58a50: + r3= page[(r29+72)>>>2]; r4 = r16 + r0; r5 = r3 + r0; - 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; + page[(r29+68)>>>2] = r2; + r31=0x58a68; + pc=0x5b200; + run_5b000(); return; + case 0x58a68: + r2= page[(r29+68)>>>2]; + if(r2 != r0) { + pc=0x58a98; continue; } - r3 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4f298; + r3= page[(r29+144)>>>2]; + if(r3 != r0) { + pc=0x58a98; continue; } - r8 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x4f790; - run_4f600(); - 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 = 0x4f2c8; + r8= page[(r29+52)>>>2]; + if(r8 == r0) { + pc=0x58f90; continue; } - r8 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; - if (r8 != r0) { - /* Next insn is delay slot */ - pc = 0x4f2c8; + case 0x58a98: + if(r30 < 0) { + pc=0x58f24; continue; } - r9 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x4f724; - run_4f600(); - return; + if(r30 != r0) { + pc=0x58ac8; + continue; } - case 0x4f2c8: - if (r2 > 0) { - /* Next insn is delay slot */ - pc = 0x4fb28; - run_4fa00(); - return; + r8= page[(r29+144)>>>2]; + if(r8 != r0) { + pc=0x58ac8; + continue; } - r8 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r9= page[(r29+52)>>>2]; + if(r9 == r0) { + pc=0x58f24; + continue; + } + case 0x58ac8: + if(r2 > 0) { + pc=0x59328; + run_59000(); return; + } + r8= page[(r29+48)>>>2]; 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 = 0x4fb54; - run_4fa00(); - return; + addr=r18+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r18 == r8) { + pc=0x59354; + run_59000(); return; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x4f2fc; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f2fc: + r31=0x58afc; + pc=0x5b400; + run_5b000(); return; + case 0x58afc: r17 = r2 + r0; r4 = r16 + r0; r5 = r19 + r0; r6 = r0 + 10; r7 = r0 + r0; - if (r19 == r21) { - /* Next insn is delay slot */ - pc = 0x4f7b8; - run_4f600(); - return; + if(r19 == r21) { + pc=0x58fb8; + continue; } - /* Next insn is delay slot */ - r31 = 0x4f320; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f320: + r31=0x58b20; + pc=0x5b400; + run_5b000(); return; + case 0x58b20: r5 = r21 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; r19 = r2 + r0; - /* Next insn is delay slot */ - r31 = 0x4f33c; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f33c: + r31=0x58b3c; + pc=0x5b400; + run_5b000(); return; + case 0x58b3c: r21 = r2 + r0; r18 = r18 + 1; - /* Next insn is delay slot */ - pc = 0x4f1e0; - run_4f000(); - return; - case 0x4f34c: + pc=0x589e0; + continue; + case 0x58b4c: r3 = r0 + 1; - 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; + page[(r29+60)>>>2] = r3; + pc=0x58130; + run_58000(); return; + case 0x58b5c: + r9= page[(r29+44)>>>2]; + page[(r29+48)>>>2] = r0; r18 = r18 - r9; r22 = r0 - r9; - /* Next insn is delay slot */ - pc = 0x4e960; - run_4e800(); - return; - case 0x4f374: + pc=0x58160; + run_58000(); return; + case 0x58b74: r18 = r0 - r23; r23 = r0 + r0; - /* 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; + pc=0x58144; + run_58000(); return; + case 0x58b84: + f4= page[(r29+44)>>>2]; + { 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)) { + pc=0x580dc; + run_58000(); return; } r3 = f4; r3 = r3 + -1; - 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]; + page[(r29+44)>>>2] = r3; + pc=0x580dc; + run_58000(); return; + case 0x58bb8: + r8= page[(r29+144)>>>2]; 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 = 0x4efec; - run_4ee00(); - return; - case 0x4f3d8: + page[(r29+56)>>>2] = r8; + pc=0x587ec; + run_58000(); return; + case 0x58bd8: r2 = r0 + 28; - case 0x4f3dc: + case 0x58bdc: r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; - /* Next insn is delay slot */ - pc = 0x4f12c; - run_4f000(); - return; - 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_4f400() throws ExecutionException { /* 0x4f400 - 0x4f600 */ - int addr, tmp; - 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 = 0x4f43c; + pc=0x5892c; continue; - case 0x4f420: + case 0x58bf0: + r18 = r0 + -1042; + r7= page[(r29+36)>>>2]; + r18 = r18 - r4; + r18 = r7 << (r18&0x1f); + pc=0x5800c; + run_58000(); return; + case 0x58c08: + page[(r29+60)>>>2] = r0; + pc=0x58130; + run_58000(); return; + case 0x58c14: + r18 = r20 + r0; + pc=0x58c3c; + continue; + case 0x58c20: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x4f438; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f438: + r31=0x58c38; + pc=0x5b400; + run_5b000(); return; + case 0x58c38: r17 = r2 + r0; - case 0x4f43c: + case 0x58c3c: r4 = r17 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31 = 0x4f44c; - pc = 0x4e200; - run_4e200(); - return; - case 0x4f44c: + r31=0x58c4c; + pc=0x57a00; + run_57800(); return; + case 0x58c4c: 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 = 0x4f420; + addr=r18+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r2 != r0) { + pc=0x58c20; continue; } - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f718; - run_4f600(); - return; + if(r30 <= 0) { + pc=0x58f18; + continue; } - case 0x4f470: + case 0x58c70: r3 = r20 + r30; r18 = r0 + r0; - case 0x4f478: + case 0x58c78: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; - writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - r31 = 0x4f490; - pc = 0x52a00; - run_52a00(); - return; - case 0x4f490: + page[(r29+72)>>>2] = r3; + r31=0x58c90; + pc=0x5c200; + run_5c000(); return; + case 0x58c90: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; - /* 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; + r31=0x58ca4; + pc=0x5c400; + run_5c000(); return; + case 0x58ca4: + r3= page[(r29+72)>>>2]; + if(r2 <= 0) { + pc=0x58ec0; + continue; } - 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 */ + case 0x58cb0: + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; - case 0x4f4b4: + case 0x58cb4: r5 = r0 + 57; - /* Next insn is delay slot */ - pc = 0x4f4d0; + pc=0x58cd0; continue; - case 0x4f4c0: - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x4f8b4; - run_4f800(); - return; + case 0x58cc0: + if(r20 == r2) { + pc=0x590b4; + run_59000(); 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r4 = tmp; r3 = r2 + r0; - case 0x4f4d0: + case 0x58cd0: r2 = r3 + -1; - if (r4 == r5) { - /* Next insn is delay slot */ - pc = 0x4f4c0; + if(r4 == r5) { + pc=0x58cc0; 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 0x4f4e4: + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + case 0x58ce4: r4 = r16 + r0; r5 = r22 + r0; - 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; + page[(r29+72)>>>2] = r3; + r31=0x58cf8; + pc=0x5b200; + run_5b000(); return; + case 0x58cf8: + r3= page[(r29+72)>>>2]; + if(r19 == r0) { + pc=0x584c4; + run_58000(); return; } - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x4f528; + if(r18 == r0) { + pc=0x58d28; continue; } - if (r18 == r19) { - /* Next insn is delay slot */ - pc = 0x4f528; + if(r18 == r19) { + pc=0x58d28; continue; } r4 = r16 + r0; r5 = r18 + r0; - /* 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: + r31=0x58d24; + pc=0x5b200; + run_5b000(); return; + case 0x58d24: + r3= page[(r29+72)>>>2]; + case 0x58d28: r4 = r16 + r0; r5 = r19 + r0; - 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: + page[(r29+72)>>>2] = r3; + r31=0x58d3c; + pc=0x5b200; + run_5b000(); return; + case 0x58d3c: + r3= page[(r29+72)>>>2]; + pc=0x584c4; + run_58000(); return; + case 0x58d48: r4 = r17 + r0; r5 = r22 + r0; - /* 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; + r31=0x58d58; + pc=0x5c400; + run_5c000(); return; + case 0x58d58: + if(r2 >= 0) { + pc=0x5897c; + continue; } - r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r9= page[(r29+44)>>>2]; 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 = 0x4f584; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f584: - r3 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + page[(r29+44)>>>2] = r9; + r31=0x58d84; + pc=0x5b400; + run_5b000(); return; + case 0x58d84: + r3= page[(r29+52)>>>2]; r17 = r2 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x4fda8; - run_4fc00(); - return; + if(r3 != r0) { + pc=0x595a8; + run_59000(); 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; + r30= page[(r29+64)>>>2]; + pc=0x5897c; + continue; + case 0x58da0: + r8= page[(r29+36)>>>2]; + if(r8 != r0) { + pc=0x588dc; + continue; } r2 = 15 << 16; - r9 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r9= page[(r29+32)>>>2]; r2 = r2 | 65535; r2 = r2 & r9; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f0dc; - run_4f000(); - return; + if(r2 != r0) { + pc=0x588dc; + continue; } r2 = 32752 << 16; r2 = r2 & r9; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4f0dc; - run_4f000(); - return; + if(r2 == r0) { + pc=0x588dc; + continue; } r3 = r0 + 1; r18 = r18 + 1; r23 = r23 + 1; - writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = 0x4f0e0; - run_4f000(); - return; - case 0x4f5f0: + page[(r29+56)>>>2] = r3; + pc=0x588e0; + continue; + case 0x58df0: r2 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4f00c; - run_4f000(); - return; - case 0x4f5fc: + pc=0x5880c; + continue; + case 0x58dfc: 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_4f600() throws ExecutionException { /* 0x4f600 - 0x4f800 */ - int addr, tmp; - 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; + page[(r29+52)>>>2] = r9; + case 0x58e04: + r4= page[(r29+148)>>>2]; + if(r4 <= 0) { + pc=0x591f0; + run_59000(); return; } r6 = r4 + r0; - writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r4; + page[(r29+64)>>>2] = r4; r30 = r4 + r0; - /* 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; + pc=0x581f0; + run_58000(); return; + case 0x58e28: + if(r30 > 0) { + pc=0x585fc; + run_58000(); return; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4f958; - run_4f800(); - return; + if(r30 != r0) { + pc=0x59158; + run_59000(); return; } - f0 = readPages[(r28 + -31428) >>> 12][((r28 + -31428) >>> 2) & 0x3ff]; + f0= page[(r28+-31428)>>>2]; r22 = r0 + r0; - 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; + f1= page[(r28+-31432)>>>2]; + 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= page[(r29+36)>>>2]; + f1= page[(r29+32)>>>2]; + 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)) { + pc=0x59094; + run_59000(); return; } - case 0x4f66c: - r9 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + case 0x58e6c: + r9= page[(r29+148)>>>2]; r3 = r20 + r0; r9 = ~(r0 | r9); - writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r9; - case 0x4f67c: + page[(r29+44)>>>2] = r9; + case 0x58e7c: r4 = r16 + r0; r5 = r22 + r0; - 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; + page[(r29+72)>>>2] = r3; + r31=0x58e90; + pc=0x5b200; + run_5b000(); return; + case 0x58e90: + r3= page[(r29+72)>>>2]; + if(r19 != r0) { + pc=0x58d28; + continue; } - /* Next insn is delay slot */ - pc = 0x4ecc4; - run_4ec00(); - return; - case 0x4f6a4: + pc=0x584c4; + run_58000(); return; + case 0x58ea4: r5 = r17 + r0; r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4f6b4; - pc = 0x52800; - run_52800(); - return; - case 0x4f6b4: + r31=0x58eb4; + pc=0x5c000; + run_5c000(); return; + case 0x58eb4: r17 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4f094; - run_4f000(); - return; - case 0x4f6c0: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f6d4; + pc=0x58894; + continue; + case 0x58ec0: + if(r2 != r0) { + pc=0x58ed4; continue; } r23 = r23 & 1; - if (r23 != r0) { - /* Next insn is delay slot */ - pc = 0x4f4b0; - run_4f400(); - return; - } - case 0x4f6d4: - r5 = r0 + 48; - /* Next insn is delay slot */ - pc = 0x4f6e4; - continue; - case 0x4f6e0: - r3 = r4 + r0; - 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 = 0x4f6e0; + if(r23 != r0) { + pc=0x58cb0; continue; } - /* 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; + case 0x58ed4: + r5 = r0 + 48; + pc=0x58ee4; + continue; + case 0x58ee0: + r3 = r4 + r0; + case 0x58ee4: + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r2 = tmp; + r4 = r3 + -1; + if(r2 == r5) { + pc=0x58ee0; + continue; + } + pc=0x58ce4; + continue; + case 0x58efc: + if(r19 == r0) { + pc=0x59488; + run_59000(); return; } r2 = r2 + 1075; r3 = r22 + r0; r21 = r18 + r0; - /* Next insn is delay slot */ - pc = 0x4efc8; - run_4ee00(); - return; - case 0x4f718: + pc=0x587c8; + run_58000(); return; + case 0x58f18: r30 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4f470; - run_4f400(); - return; - case 0x4f724: - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f774; + pc=0x58c70; + continue; + case 0x58f24: + if(r2 <= 0) { + pc=0x58f74; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x4f740; - pc = 0x52a00; - run_52a00(); - return; - case 0x4f740: + r31=0x58f40; + pc=0x5c200; + run_5c000(); return; + case 0x58f40: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; - /* 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; + r31=0x58f54; + pc=0x5c400; + run_5c000(); return; + case 0x58f54: + if(r2 <= 0) { + pc=0x5958c; + run_59000(); return; } - case 0x4f75c: + case 0x58f5c: r2 = r0 + 57; - if (r23 == r2) { - /* Next insn is delay slot */ - pc = 0x4fd1c; - run_4fc00(); - return; + if(r23 == r2) { + pc=0x5951c; + run_59000(); return; } - r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r3= page[(r29+32)>>>2]; r23 = r3 + 49; - case 0x4f774: - r7 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + case 0x58f74: + r7= page[(r29+40)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r19 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4f4e4; - run_4f400(); - return; - case 0x4f790: + pc=0x58ce4; + continue; + case 0x58f90: r2 = r0 + 57; - if (r23 == r2) { - /* Next insn is delay slot */ - pc = 0x4fd1c; - run_4fc00(); - return; + if(r23 == r2) { + pc=0x5951c; + run_59000(); return; } - if (r30 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f774; + if(r30 <= 0) { + pc=0x58f74; continue; } - r9 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r9= page[(r29+32)>>>2]; r23 = r9 + 49; - /* Next insn is delay slot */ - pc = 0x4f774; + pc=0x58f74; continue; - case 0x4f7b8: - /* Next insn is delay slot */ - r31 = 0x4f7c0; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f7c0: + case 0x58fb8: + r31=0x58fc0; + pc=0x5b400; + run_5b000(); return; + case 0x58fc0: r19 = r2 + r0; r21 = r2 + r0; r18 = r18 + 1; - /* Next insn is delay slot */ - pc = 0x4f1e0; - run_4f000(); - return; - case 0x4f7d4: + pc=0x589e0; + continue; + case 0x58fd4: r4 = r16 + r0; r5 = r3 + r0; - /* Next insn is delay slot */ - r31 = 0x4f7e4; - pc = 0x51a00; - run_51a00(); - return; - case 0x4f7e4: + r31=0x58fe4; + pc=0x5b200; + run_5b000(); return; + case 0x58fe4: r2 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x4f298; - run_4f200(); - return; - case 0x4f7f0: - r2 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; + pc=0x58a98; + continue; + case 0x58ff0: + r2= page[(r22+16)>>>2]; r2 = r2 + 3; r2 = r2 << 2; - case 0x4f800: - pc = 0x4f800; + case 0x59000: + pc=0x59000; 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_4f800() throws ExecutionException { /* 0x4f800 - 0x4fa00 */ + private final void run_59000() throws ExecutionException { /* 0x59000 - 0x59800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x4f800: + for(;;) { + switch(pc) { + case 0x59000: r2 = r22 + r2; - r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - r31 = 0x4f810; - pc = 0x51e00; - run_51e00(); - return; - case 0x4f810: + r4= page[(r2+4)>>>2]; + r31=0x59010; + pc=0x5b600; + run_5b000(); return; + case 0x59010: r3 = r0 + 32; r2 = r3 - r2; - /* Next insn is delay slot */ - pc = 0x4f0f4; - run_4f000(); - return; - case 0x4f820: + pc=0x588f4; + run_58800(); return; + case 0x59020: r2 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x4e6e8; - run_4e600(); - return; - case 0x4f82c: + pc=0x57ee8; + run_57800(); return; + case 0x5902c: r2 = r0 + 2; - if (r9 != r2) { - /* Next insn is delay slot */ - pc = 0x4ed80; - run_4ec00(); - return; + if(r9 != r2) { + pc=0x58580; + run_58000(); return; } - 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]; + page[(r29+52)>>>2] = r0; + pc=0x58e04; + run_58800(); return; + case 0x59044: + r8= page[(r29+144)>>>2]; r2 = r8 < 3 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4f184; - run_4f000(); - return; + if(r2 != r0) { + pc=0x58984; + run_58800(); return; } - if (r30 != r0) { - /* Next insn is delay slot */ - pc = 0x4f66c; - run_4f600(); - return; + if(r30 != r0) { + pc=0x58e6c; + run_58800(); return; } r5 = r22 + r0; r4 = r16 + r0; r6 = r0 + 5; r7 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x4f878; - pc = 0x51c00; - run_51c00(); - return; - case 0x4f878: + r31=0x59078; + pc=0x5b400; + run_5b000(); return; + case 0x59078: r5 = r2 + r0; r4 = r17 + r0; r22 = r2 + r0; - /* 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; + r31=0x5908c; + pc=0x5c400; + run_5c000(); return; + case 0x5908c: + if(r2 <= 0) { + pc=0x58e6c; + run_58800(); return; } - case 0x4f894: - r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x59094: + r8= page[(r29+44)>>>2]; 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 = 0x4f67c; - run_4f600(); - return; - case 0x4f8b4: - r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + addr=r20+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + page[(r29+44)>>>2] = r8; + pc=0x58e7c; + run_58800(); return; + case 0x590b4: + r9= page[(r29+44)>>>2]; 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 = 0x4f4e4; - run_4f400(); - return; - case 0x4f8d0: + page[(r29+44)>>>2] = r9; + addr=r20+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x58ce4; + run_58800(); return; + case 0x590d0: 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 + -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; - } + 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= page[(r28+-31436)>>>2]; + f3= page[(r28+-31440)>>>2]; + { 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 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; - } + case 0x59100: + f2= page[(r28+-31428)>>>2]; + f3= page[(r28+-31432)>>>2]; + { 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 = 0x4fb64; - run_4fa00(); - 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)) { + pc=0x59364; + continue; } 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 = 0x4f968; + 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)) { + pc=0x59168; continue; } - case 0x4f958: + case 0x59158: r22 = r0 + r0; r19 = r0 + r0; - /* 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: + pc=0x58e6c; + run_58800(); return; + case 0x59168: + page[(r29+36)>>>2] = f8; + page[(r29+32)>>>2] = f9; + pc=0x585b4; + run_58000(); return; + case 0x59178: r5 = r17 + r0; r4 = r16 + r0; r6 = r22 + r0; - /* Next insn is delay slot */ - r31 = 0x4f98c; - pc = 0x52800; - run_52800(); - return; - case 0x4f98c: + r31=0x5918c; + pc=0x5c000; + run_5c000(); return; + case 0x5918c: r17 = r2 + r0; - /* 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]; + pc=0x58894; + run_58800(); return; + case 0x59198: + f0= page[(r28+-31492)>>>2]; + f1= page[(r28+-31496)>>>2]; + { 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; } + pc=0x58020; + run_58000(); return; + case 0x591b4: + page[(r29+52)>>>2] = r0; + pc=0x581cc; + run_58000(); return; + case 0x591c0: + r7= page[(r29+48)>>>2]; r22 = r3 - r22; r7 = r7 + r22; - writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r7; + page[(r29+48)>>>2] = r7; r22 = r3 + r0; r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4efb8; - run_4ee00(); - return; - case 0x4f9e0: + pc=0x587b8; + run_58000(); return; + case 0x591e0: f0 = f8; f1 = f9; r8 = r0 + 2; - /* Next insn is delay slot */ - pc = 0x4eab8; - run_4ea00(); - return; - case 0x4f9f0: + pc=0x582b8; + run_58000(); return; + case 0x591f0: r3 = r0 + 1; r4 = r0 + 1; r21 = r0 + 1; - 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)); - } - /* NOT REACHED */ - } - } - - private final void run_4fa00() throws ExecutionException { /* 0x4fa00 - 0x4fc00 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4fa00: + page[(r29+64)>>>2] = r3; r30 = r0 + 1; - writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; - writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; + page[(r29+148)>>>2] = r4; + page[(r16+68)>>>2] = r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4ea2c; - run_4ea00(); - return; - case 0x4fa18: + pc=0x5822c; + run_58000(); return; + case 0x59218: r21 = r30 + r0; - writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; + page[(r16+68)>>>2] = r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4ea2c; - run_4ea00(); - return; - case 0x4fa2c: - r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + pc=0x5822c; + run_58000(); return; + case 0x5922c: + r9= page[(r29+44)>>>2]; r2 = r0 - r9; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4fca4; - run_4fc00(); - return; + if(r2 == r0) { + pc=0x594a4; + continue; } r4 = r2 & 15; r3 = 6 << 16; r4 = r4 << 3; - r3 = r3 + -26584; + r3 = r3 + 15056; r3 = r4 + r3; - f0 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f0= page[(r3+4)>>>2]; 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 = 0x4fdd0; - run_4fc00(); - return; + f1= page[(r3+0)>>>2]; + { 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) { + pc=0x595d0; + continue; } r3 = 6 << 16; - r3 = r3 + -26624; + r3 = r3 + 15016; r8 = r0 + 2; - case 0x4fa7c: + case 0x5927c: r4 = r2 & 1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x4fa9c; + if(r4 == r0) { + pc=0x5929c; continue; } - f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f2= page[(r3+4)>>>2]; 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 0x4fa9c: + f3= page[(r3+0)>>>2]; + { 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 0x5929c: r2 = r2 >> 1; r3 = r3 + 8; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x4fa7c; + if(r2 != r0) { + pc=0x5927c; continue; } - /* Next insn is delay slot */ - pc = 0x4eafc; - run_4ea00(); - return; - case 0x4fab4: - r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + pc=0x582fc; + run_58000(); return; + case 0x592b4: + r8= page[(r29+44)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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 = 0x4ecc4; - run_4ec00(); - return; - case 0x4fad8: - r5 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + page[(r29+44)>>>2] = r8; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + pc=0x584c4; + run_58000(); return; + case 0x592d8: + r5= page[(r19+4)>>>2]; r4 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x4fae8; - pc = 0x51800; - run_51800(); - return; - case 0x4fae8: - r6 = readPages[(r19 + 16) >>> 12][((r19 + 16) >>> 2) & 0x3ff]; + r31=0x592e8; + pc=0x5b000; + run_5b000(); return; + case 0x592e8: + r6= page[(r19+16)>>>2]; r18 = r2 + r0; r6 = r6 + 2; r4 = r2 + 12; r5 = r19 + 12; r6 = r6 << 2; - /* Next insn is delay slot */ - r31 = 0x4fb08; - pc = 0x4d7e0; - run_4d600(); - return; - case 0x4fb08: + r31=0x59308; + pc=0x56fe0; + run_56800(); return; + case 0x59308: r4 = r16 + r0; r5 = r18 + r0; r6 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x4fb1c; - pc = 0x52a00; - run_52a00(); - return; - case 0x4fb1c: + r31=0x5931c; + pc=0x5c200; + run_5c000(); return; + case 0x5931c: r21 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4f1c8; - run_4f000(); - return; - case 0x4fb28: + pc=0x589c8; + run_58800(); return; + case 0x59328: r2 = r0 + 57; - if (r23 == r2) { - /* Next insn is delay slot */ - pc = 0x4fd1c; - run_4fc00(); - return; + if(r23 == r2) { + pc=0x5951c; + continue; } - r9 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r9= page[(r29+40)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r19 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4f4e4; - run_4f400(); - return; - case 0x4fb54: + pc=0x58ce4; + run_58800(); return; + case 0x59354: r18 = r19 + r0; r19 = r21 + r0; - /* Next insn is delay slot */ - pc = 0x4f478; - run_4f400(); - return; - case 0x4fb64: + pc=0x58c78; + run_58800(); return; + case 0x59364: r22 = r0 + r0; r19 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4f894; - run_4f800(); - return; - case 0x4fb74: + pc=0x59094; + continue; + case 0x59374: r3 = 6 << 16; r6 = r5 << 3; - r3 = r3 + -26584; + r3 = r3 + 15056; r3 = r6 + r3; - f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f2= page[(r3+4)>>>2]; f4 = r9; - f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + f3= page[(r3+0)>>>2]; 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 = 0x4fc44; - run_4fc00(); - return; + addr=r20+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = 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) { + pc=0x59444; + continue; } - f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; + f6= page[(r28+-31444)>>>2]; r4 = r20 + r4; - f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; + f7= page[(r28+-31448)>>>2]; r6 = r3 + r0; - 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; - } + case 0x593f4: + { 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 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: 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 = 0x4fbf4; - run_4fa00(); - return; - } - r3 = r3 + r5; - 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; + 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r10&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r6 != r4) { + pc=0x593f4; 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 */ + r3 = r3 + r5; + case 0x59444: + f2= page[(r28+-31420)>>>2]; + f3= page[(r28+-31424)>>>2]; + { 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)) { + pc=0x59540; + continue; + } + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; - /* Next insn is delay slot */ - pc = 0x4ef3c; - run_4ee00(); - return; - case 0x4fc78: + page[(r29+44)>>>2] = r2; + pc=0x5873c; + run_58000(); return; + case 0x59478: r21 = r18 - r30; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4efc8; - run_4ee00(); - return; - case 0x4fc88: - r2 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + pc=0x587c8; + run_58000(); return; + case 0x59488: + r2= page[(r29+28)>>>2]; r3 = r0 + 54; r2 = r3 - r2; r21 = r18 + r0; r3 = r22 + r0; - /* Next insn is delay slot */ - pc = 0x4efc8; - run_4ee00(); - return; - case 0x4fca4: + pc=0x587c8; + run_58000(); return; + case 0x594a4: f0 = f8; f1 = f9; r8 = r0 + 2; - /* 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; + pc=0x582fc; + run_58000(); return; + case 0x594b4: + if(r30 == r0) { + pc=0x590d0; + continue; } - r9 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; - if (r9 <= 0) { - /* Next insn is delay slot */ - pc = 0x4f968; - run_4f800(); - return; + r9= page[(r29+64)>>>2]; + if(r9 <= 0) { + pc=0x59168; + continue; } - f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; + f6= page[(r28+-31444)>>>2]; r8 = r8 + 1; - 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]; + f7= page[(r28+-31448)>>>2]; + 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= page[(r29+44)>>>2]; + r4= page[(r29+64)>>>2]; + 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= page[(r28+-31436)>>>2]; r3 = 64704 << 16; - 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; - } + f3= page[(r28+-31440)>>>2]; + { 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 = 0x4eb6c; - run_4ea00(); - return; - case 0x4fd1c: - r8 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + pc=0x5836c; + run_58000(); return; + case 0x5951c: + r8= page[(r29+40)>>>2]; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r19 = r21 + r0; r4 = r0 + 57; - /* 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 = 0x4fd64; - continue; - case 0x4fd60: - r3 = r5 + r0; - 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 = 0x4fd60; + pc=0x58cb4; + run_58800(); return; + case 0x59540: + { 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)) { + pc=0x59168; continue; } - 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; + r6 = r0 + 48; + pc=0x59564; + continue; + case 0x59560: + r3 = r5 + r0; + case 0x59564: + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; + r4 = tmp; + r5 = r3 + -1; + if(r4 == r6) { + pc=0x59560; + continue; + } + page[(r29+44)>>>2] = r2; + pc=0x584c4; + run_58000(); return; + case 0x59580: + page[(r29+44)>>>2] = r2; + pc=0x5873c; + run_58000(); return; + case 0x5958c: + if(r2 != r0) { + pc=0x58f74; + run_58800(); return; } r2 = r23 & 1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x4f774; - run_4f600(); - return; + if(r2 == r0) { + pc=0x58f74; + run_58800(); return; } - /* Next insn is delay slot */ - pc = 0x4f75c; - run_4f600(); - return; - case 0x4fda8: + pc=0x58f5c; + run_58800(); return; + case 0x595a8: r5 = r19 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x4fdc0; - pc = 0x51c00; - run_51c00(); - return; - case 0x4fdc0: + r31=0x595c0; + pc=0x5b400; + run_5b000(); return; + case 0x595c0: r19 = r2 + r0; - r30 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = 0x4f17c; - run_4f000(); - return; - case 0x4fdd0: + r30= page[(r29+64)>>>2]; + pc=0x5897c; + run_58800(); return; + case 0x595d0: r8 = r0 + 2; - /* Next insn is delay slot */ - pc = 0x4eafc; - run_4ea00(); - return; - case 0x4fddc: + pc=0x582fc; + run_58000(); return; + case 0x595dc: r4 = r0 + 4; - if (r3 == r4) { - /* Next insn is delay slot */ - pc = 0x4f12c; - run_4f000(); - return; + if(r3 == r4) { + pc=0x5892c; + run_58800(); return; } r3 = r0 + 60; r2 = r3 - r2; - /* Next insn is delay slot */ - pc = 0x4f3dc; - run_4f200(); - return; - case 0x4fdf8: + pc=0x58bdc; + run_58800(); return; + case 0x595f8: 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_4fe00() throws ExecutionException { /* 0x4fe00 - 0x50000 */ - int addr, tmp; - for (;;) { - switch (pc) { - case 0x4fe00: - case 0x4fe04: + pc=0x5818c; + run_58000(); return; + case 0x59604: r21 = r6 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x4ea2c; - run_4ea00(); + pc=0x5822c; + run_58000(); return; + case 0x59800: + pc=0x59800; return; - case 0x50000: - pc = 0x50000; - 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_50000() throws ExecutionException { /* 0x50000 - 0x50200 */ + private final void run_59800() throws ExecutionException { /* 0x59800 - 0x5a000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x50000: - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x59800: + pc=r31; return; - case 0x50200: - pc = 0x50200; + case 0x59a00: + pc=r31; 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: - /* Next insn is delay slot */ - pc = r31; - 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: - addr = r5 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; - if ((tmp & 0x80) != 0) - tmp |= 0xffffff00; /* sign extend */ + case 0x59c00: + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r2 = tmp; r3 = r0 + 114; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x50498; + if(r2 == r3) { + pc=0x59c98; continue; } r3 = r0 + 119; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x50484; + if(r2 == r3) { + pc=0x59c84; continue; } r3 = r0 + 97; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x5043c; + if(r2 == r3) { + pc=0x59c3c; continue; } r2 = r0 + 22; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + page[(r4+0)>>>2] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x5043c: + case 0x59c3c: r7 = r0 + 520; r4 = r0 + 1; r2 = r0 + 264; - 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 */ + case 0x59c48: + addr=r5+1; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x50474; + if(r3 == r0) { + pc=0x59c74; continue; } r8 = r0 + 43; - if (r3 == r8) { - /* Next insn is delay slot */ - pc = 0x504ac; + if(r3 == r8) { + pc=0x59cac; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r3 = tmp; - if (r3 == r8) { - /* Next insn is delay slot */ - pc = 0x504ac; + if(r3 == r8) { + pc=0x59cac; continue; } - case 0x50474: + case 0x59c74: r4 = r4 | r7; - writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r4; - /* Next insn is delay slot */ - pc = r31; + page[(r6+0)>>>2] = r4; + pc=r31; return; - case 0x50484: + case 0x59c84: r7 = r0 + 1536; r4 = r0 + 1; r2 = r0 + 8; - /* Next insn is delay slot */ - pc = 0x50448; + pc=0x59c48; continue; - case 0x50498: + case 0x59c98: r7 = r0 + r0; r4 = r0 + r0; r2 = r0 + 4; - /* Next insn is delay slot */ - pc = 0x50448; + pc=0x59c48; continue; - case 0x504ac: + case 0x59cac: 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; + page[(r6+0)>>>2] = r4; + pc=r31; 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: - r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + case 0x59e00: + r2= page[(r6+8)>>>2]; 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; + page[(r29+36)>>>2] = r19; + page[(r29+60)>>>2] = r31; + page[(r29+56)>>>2] = r30; + page[(r29+52)>>>2] = r23; + page[(r29+48)>>>2] = r22; + page[(r29+44)>>>2] = r21; + page[(r29+40)>>>2] = r20; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; r19 = r6 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x506d4; + if(r2 == r0) { + pc=0x59ed4; continue; } - addr = r5 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r5+12; + tmp= page[(addr)>>>2]; + 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 = 0x5070c; + if(r3 == r0) { + pc=0x59f0c; continue; } - r3 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x5070c; + r3= page[(r5+16)>>>2]; + if(r3 == r0) { + pc=0x59f0c; continue; } r3 = r2 & 2; - r17 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x50738; + r17= page[(r19+0)>>>2]; + if(r3 == r0) { + pc=0x59f38; continue; } - case 0x50674: + case 0x59e74: r20 = r0 + r0; r18 = r0 + r0; - case 0x5067c: - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x507fc; + case 0x59e7c: + if(r18 == r0) { + pc=0x59ffc; 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= page[(r16+28)>>>2]; r7 = r18 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x5069c; + if(r2 != r0) { + pc=0x59e9c; continue; } r7 = r0 + 1024; - case 0x5069c: - r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + case 0x59e9c: + r2= page[(r16+36)>>>2]; r4 = r21 + r0; r6 = r20 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x506b0; + pc=r2; + r31=0x59eb0; return; - case 0x506b0: - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x5083c; - run_50800(); - return; + case 0x59eb0: + if(r2 <= 0) { + pc=0x5a03c; + run_5a000(); return; } - r3 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + r3= page[(r19+8)>>>2]; 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 = 0x5067c; + page[(r19+8)>>>2] = r2; + if(r2 != r0) { + pc=0x59e7c; continue; } - case 0x506d4: + case 0x59ed4: r2 = r0 + r0; - 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]; + case 0x59ed8: + r31= page[(r29+60)>>>2]; + r30= page[(r29+56)>>>2]; + r23= page[(r29+52)>>>2]; + r22= page[(r29+48)>>>2]; + r21= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x5070c: + case 0x59f0c: r4 = r21 + r0; r5 = r16 + r0; - /* 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; + r31=0x59f1c; + pc=0x56c00; + run_56800(); return; + case 0x59f1c: + if(r2 != r0) { + pc=0x5a3ec; + run_5a000(); return; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - r17 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + r17= page[(r19+0)>>>2]; r3 = r2 & 2; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x50674; + if(r3 != r0) { + pc=0x59e74; continue; } - case 0x50738: + case 0x59f38: r3 = r2 & 1; r22 = r0 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x50858; - run_50800(); - return; + if(r3 != r0) { + pc=0x5a058; + run_5a000(); return; } r18 = r0 + r0; - case 0x5074c: - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x507e8; + case 0x59f4c: + if(r18 == r0) { + pc=0x59fe8; continue; } - case 0x50754: + case 0x59f54: r3 = r2 & 512; - r20 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x50938; - run_50800(); - return; + r20= page[(r16+8)>>>2]; + if(r3 == r0) { + pc=0x5a138; + run_5a000(); return; } r3 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x50a00; - run_50a00(); - return; + if(r3 != r0) { + pc=0x5a200; + run_5a000(); return; } r3 = r2 & 1152; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x50a84; - run_50a00(); - return; + if(r3 != r0) { + pc=0x5a284; + run_5a000(); return; } - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4= page[(r16+0)>>>2]; r23 = r20 + r0; r30 = r20 + r0; r20 = r18 + r0; - case 0x5078c: + case 0x59f8c: r5 = r22 + r0; r6 = r23 + r0; - /* Next insn is delay slot */ - r31 = 0x5079c; - pc = 0x51600; - run_51600(); - return; - case 0x5079c: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r31=0x59f9c; + pc=0x5ae00; + run_5a800(); return; + case 0x59f9c: + r2= page[(r16+8)>>>2]; r30 = r2 - r30; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r30; + r2= page[(r16+0)>>>2]; + page[(r16+8)>>>2] = r30; r3 = r2 + r23; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + page[(r16+0)>>>2] = r3; r2 = r18 + r0; - case 0x507bc: + case 0x59fbc: r22 = r22 + r2; r18 = r18 - r2; - r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + r2= page[(r19+8)>>>2]; r20 = r2 - r20; - writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r20; - if (r20 == r0) { - /* Next insn is delay slot */ - pc = 0x506d4; + page[(r19+8)>>>2] = r20; + if(r20 == r0) { + pc=0x59ed4; continue; } - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x50754; + if(r18 != r0) { + pc=0x59f54; continue; } - case 0x507e8: - r22 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + case 0x59fe8: + r22= page[(r17+0)>>>2]; + r18= page[(r17+4)>>>2]; r17 = r17 + 8; - /* Next insn is delay slot */ - pc = 0x5074c; + pc=0x59f4c; continue; - case 0x507fc: - r20 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - case 0x50800: - pc = 0x50800; + case 0x59ffc: + r20= page[(r17+0)>>>2]; + case 0x5a000: + pc=0x5a000; 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_50800() throws ExecutionException { /* 0x50800 - 0x50a00 */ + private final void run_5a000() throws ExecutionException { /* 0x5a000 - 0x5a800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x50800: - r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x5a000: + r18= page[(r17+4)>>>2]; r17 = r17 + 8; - /* 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: + pc=0x59e7c; + run_59800(); return; + case 0x5a010: + r31=0x5a018; + pc=0x4fc00; + run_4f800(); return; + case 0x5a018: r30 = r2 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x50b10; - run_50a00(); - return; + if(r2 != r0) { + pc=0x5a310; + continue; } - r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r5= page[(r16+16)>>>2]; r4 = r21 + r0; - /* Next insn is delay slot */ - r31 = 0x50834; - pc = 0x42c00; - run_42c00(); - return; - case 0x50834: + r31=0x5a034; + pc=0x4c400; + run_4c000(); return; + case 0x5a034: r2 = r0 + 12; - 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; + page[(r21+0)>>>2] = r2; + case 0x5a03c: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x506d8; - run_50600(); - return; - case 0x50858: + pc=0x59ed8; + run_59800(); return; + case 0x5a058: r3 = r0 + r0; r30 = r0 + r0; r18 = r0 + r0; - case 0x50864: - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x50920; + case 0x5a064: + if(r18 == r0) { + pc=0x5a120; continue; } - case 0x5086c: - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x50a54; - run_50a00(); - return; + case 0x5a06c: + if(r3 == r0) { + pc=0x5a254; + continue; } - case 0x50874: + case 0x5a074: r2 = ((r18 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x50888; + if(r2 == r0) { + pc=0x5a088; continue; } r23 = r18 + r0; - case 0x50888: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x5a088: + r4= page[(r16+0)>>>2]; + r2= page[(r16+16)>>>2]; 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 = 0x508b8; + r6= page[(r16+8)>>>2]; + r7= page[(r16+20)>>>2]; + if(r2 == r0) { + pc=0x5a0b8; continue; } r8 = r6 + r7; r2 = r8 < r23 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x50b3c; - run_50a00(); - return; + if(r2 != r0) { + pc=0x5a33c; + continue; } - case 0x508b8: + case 0x5a0b8: r2 = r23 < r7 ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x509a0; + if(r2 != r0) { + pc=0x5a1a0; continue; } - r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; - r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r2= page[(r16+36)>>>2]; + r5= page[(r16+28)>>>2]; r4 = r21 + r0; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r3; + page[(r29+20)>>>2] = r3; r6 = r30 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x508e0; + pc=r2; + r31=0x5a0e0; return; - case 0x508e0: + case 0x5a0e0: r20 = r2 + r0; - r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x5083c; + r3= page[(r29+20)>>>2]; + if(r2 <= 0) { + pc=0x5a03c; continue; } - case 0x508f0: + case 0x5a0f0: r22 = r22 - r20; - if (r22 == r0) { - /* Next insn is delay slot */ - pc = 0x509dc; + if(r22 == r0) { + pc=0x5a1dc; continue; } - case 0x508fc: - r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + case 0x5a0fc: + r2= page[(r19+8)>>>2]; 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 = 0x506d4; - run_50600(); - return; + page[(r19+8)>>>2] = r20; + if(r20 == r0) { + pc=0x59ed4; + run_59800(); return; } - if (r18 != r0) { - /* Next insn is delay slot */ - pc = 0x5086c; + if(r18 != r0) { + pc=0x5a06c; continue; } - case 0x50920: - r30 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + case 0x5a120: + r30= page[(r17+0)>>>2]; + r18= page[(r17+4)>>>2]; r3 = r0 + r0; r17 = r17 + 8; - /* Next insn is delay slot */ - pc = 0x50864; + pc=0x5a064; continue; - case 0x50938: - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; - r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x5a138: + r4= page[(r16+0)>>>2]; + r2= page[(r16+16)>>>2]; r2 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x5095c; + if(r2 == r0) { + pc=0x5a15c; continue; } r2 = ((r20 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x50b90; - run_50a00(); - return; + if(r2 != r0) { + pc=0x5a390; + continue; } - case 0x5095c: - r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + case 0x5a15c: + r7= page[(r16+20)>>>2]; r2 = ((r18 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x50a18; - run_50a00(); - return; + if(r2 != r0) { + pc=0x5a218; + continue; } - r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; - r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r2= page[(r16+36)>>>2]; + r5= page[(r16+28)>>>2]; r4 = r21 + r0; r6 = r22 + r0; - /* Next insn is delay slot */ - pc = r2; - r31 = 0x50988; + pc=r2; + r31=0x5a188; return; - case 0x50988: + case 0x5a188: r20 = r2 + r0; - if (r2 <= 0) { - /* Next insn is delay slot */ - pc = 0x5083c; + if(r2 <= 0) { + pc=0x5a03c; continue; } r2 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x507bc; - run_50600(); - return; - case 0x509a0: + pc=0x59fbc; + run_59800(); return; + case 0x5a1a0: r6 = r23 + r0; r5 = r30 + r0; - 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]; + page[(r29+20)>>>2] = r3; + r31=0x5a1b4; + pc=0x5ae00; + run_5a800(); return; + case 0x5a1b4: + r2= page[(r16+8)>>>2]; 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]; + page[(r16+8)>>>2] = r2; + r2= page[(r16+0)>>>2]; + r3= page[(r29+20)>>>2]; r23 = r2 + r23; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r23; - if (r22 != r0) { - /* Next insn is delay slot */ - pc = 0x508fc; + page[(r16+0)>>>2] = r23; + if(r22 != r0) { + pc=0x5a0fc; continue; } - case 0x509dc: + case 0x5a1dc: r4 = r21 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x509ec; - pc = 0x40c00; - run_40c00(); - return; - case 0x509ec: - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x5083c; + r31=0x5a1ec; + pc=0x4a400; + run_4a000(); return; + case 0x5a1ec: + if(r2 != r0) { + pc=0x5a03c; continue; } r3 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x508fc; + pc=0x5a0fc; continue; - 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: + case 0x5a200: r30 = r18 + r0; - r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4= page[(r16+0)>>>2]; r20 = r18 + r0; r23 = r18 + r0; - /* Next insn is delay slot */ - pc = 0x5078c; - run_50600(); - return; - case 0x50a18: + pc=0x59f8c; + run_59800(); return; + case 0x5a218: r5 = r22 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x50a28; - pc = 0x51600; - run_51600(); - return; - case 0x50a28: - r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r31=0x5a228; + pc=0x5ae00; + run_5a800(); return; + case 0x5a228: + r2= page[(r16+8)>>>2]; r20 = r18 + r0; r2 = r2 - r18; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + page[(r16+8)>>>2] = r2; + r2= page[(r16+0)>>>2]; r2 = r2 + r18; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = r2; r2 = r18 + r0; - /* Next insn is delay slot */ - pc = 0x507bc; - run_50600(); - return; - case 0x50a54: + pc=0x59fbc; + run_59800(); return; + case 0x5a254: r4 = r30 + r0; r5 = r0 + 10; r6 = r18 + r0; - /* Next insn is delay slot */ - r31 = 0x50a68; - pc = 0x51400; - run_51400(); - return; - case 0x50a68: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x50bdc; + r31=0x5a268; + pc=0x5ac00; + run_5a800(); return; + case 0x5a268: + if(r2 == r0) { + pc=0x5a3dc; continue; } r22 = r2 + 1; r22 = r22 - r30; r3 = r0 + 1; - /* 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]; + pc=0x5a074; + continue; + case 0x5a284: + r4= page[(r16+20)>>>2]; + r5= page[(r16+16)>>>2]; r6 = r4 << 1; - r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3= page[(r16+0)>>>2]; r4 = r6 + r4; r20 = r4 >>> 31; r23 = r3 - r5; @@ -66668,345 +69220,235 @@ 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 = 0x50bd0; + if(r4 == r0) { + pc=0x5a3d0; continue; } r20 = r6 + r0; - case 0x50ac0: + case 0x5a2c0: r2 = r2 & 1024; r4 = r21 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x50810; - run_50800(); - return; + if(r2 == r0) { + pc=0x5a010; + continue; } r5 = r6 + r0; - /* Next insn is delay slot */ - r31 = 0x50adc; - pc = 0x44a00; - run_44a00(); - return; - case 0x50adc: + r31=0x5a2dc; + pc=0x4e200; + run_4e000(); return; + case 0x5a2dc: r30 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x50834; - run_50800(); - return; + if(r2 == r0) { + pc=0x5a034; + continue; } - r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r5= page[(r16+16)>>>2]; r4 = r2 + r0; r6 = r23 + r0; - /* 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; + r31=0x5a2fc; + pc=0x56fe0; + run_56800(); return; + case 0x5a2fc: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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 0x50b10: + addr=r16+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x5a310: 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; + page[(r16+16)>>>2] = r30; + page[(r16+20)>>>2] = r20; + page[(r16+0)>>>2] = r4; r30 = r18 + r0; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + page[(r16+8)>>>2] = r3; r20 = r18 + r0; r23 = r18 + r0; - /* Next insn is delay slot */ - pc = 0x5078c; - run_50600(); - return; - case 0x50b3c: + pc=0x59f8c; + run_59800(); return; + case 0x5a33c: 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 = 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]; + page[(r29+20)>>>2] = r3; + page[(r29+16)>>>2] = r8; + r31=0x5a354; + pc=0x5ae00; + run_5a800(); return; + case 0x5a354: + r8= page[(r29+16)>>>2]; + r2= page[(r16+0)>>>2]; r4 = r21 + r0; r2 = r2 + r8; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = r2; r5 = r16 + r0; - /* 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; + r31=0x5a374; + pc=0x4a400; + run_4a000(); return; + case 0x5a374: + r3= page[(r29+20)>>>2]; + r8= page[(r29+16)>>>2]; + if(r2 != r0) { + pc=0x5a03c; + continue; } r20 = r8 + r0; - /* Next insn is delay slot */ - pc = 0x508f0; - run_50800(); - return; - case 0x50b90: + pc=0x5a0f0; + continue; + case 0x5a390: r5 = r22 + r0; r6 = r20 + r0; - /* Next insn is delay slot */ - r31 = 0x50ba0; - pc = 0x51600; - run_51600(); - return; - case 0x50ba0: - r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r31=0x5a3a0; + pc=0x5ae00; + run_5a800(); return; + case 0x5a3a0: + r2= page[(r16+0)>>>2]; r4 = r21 + r0; r2 = r2 + r20; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r16+0)>>>2] = r2; r5 = r16 + r0; - /* 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; + r31=0x5a3bc; + pc=0x4a400; + run_4a000(); return; + case 0x5a3bc: + if(r2 != r0) { + pc=0x5a03c; + continue; } r2 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x507bc; - run_50600(); - return; - case 0x50bd0: + pc=0x59fbc; + run_59800(); return; + case 0x5a3d0: r6 = r20 + r0; - /* Next insn is delay slot */ - pc = 0x50ac0; + pc=0x5a2c0; continue; - case 0x50bdc: + case 0x5a3dc: r22 = r18 + 1; r3 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x50874; - run_50800(); - return; - case 0x50bec: + pc=0x5a074; + continue; + case 0x5a3ec: r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x506d8; - run_50600(); - 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: - /* Next insn is delay slot */ - pc = 0x53c00; - run_53c00(); - 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: + pc=0x59ed8; + run_59800(); return; + case 0x5a400: + pc=0x5d400; + run_5d000(); return; + case 0x5a600: r2 = 6 << 16; - r2 = r2 + -15432; - /* Next insn is delay slot */ - pc = r31; + r2 = r2 + 26208; + pc=r31; return; - case 0x51000: - pc = 0x51000; + case 0x5a800: + pc=0x5a800; 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_51000() throws ExecutionException { /* 0x51000 - 0x51200 */ + private final void run_5a800() throws ExecutionException { /* 0x5a800 - 0x5b000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x51000: - r2 = readPages[(r28 + -31416) >>> 12][((r28 + -31416) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - pc = r31; + for(;;) { + switch(pc) { + case 0x5a800: + r2= page[(r28+-31416)>>>2]; + pc=r31; 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: + case 0x5aa00: r2 = 6 << 16; - r2 = r2 + -15400; - /* Next insn is delay slot */ - pc = r31; + r2 = r2 + 26240; + pc=r31; 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: + case 0x5ac00: r2 = r4 & 3; r7 = r5 & 255; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x5145c; + if(r2 == r0) { + pc=0x5ac5c; continue; } r2 = r6 + -1; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x51440; + if(r6 != r0) { + pc=0x5ac40; continue; } - /* Next insn is delay slot */ - pc = 0x514b0; + pc=0x5acb0; continue; - case 0x51424: + case 0x5ac24: r4 = r4 + 1; r3 = r4 & 3; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x51460; + if(r3 == r0) { + pc=0x5ac60; continue; } - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x514b0; + if(r2 == r0) { + pc=0x5acb0; continue; } r2 = r2 + -1; - case 0x51440: - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x5ac40: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - if (r3 != r7) { - /* Next insn is delay slot */ - pc = 0x51424; + if(r3 != r7) { + pc=0x5ac24; continue; } - case 0x51450: + case 0x5ac50: r2 = r4 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x5145c: + case 0x5ac5c: r2 = r6 + r0; - case 0x51460: - r3 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x514bc; + case 0x5ac60: + r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r3 == r0) { + pc=0x5acbc; continue; } - case 0x5146c: + case 0x5ac6c: r5 = r2 + -1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x514b0; + if(r2 == r0) { + pc=0x5acb0; continue; } - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; - if (r2 == r7) { - /* Next insn is delay slot */ - pc = 0x51450; + if(r2 == r7) { + pc=0x5ac50; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x514a4; + pc=0x5aca4; continue; - case 0x51494: - addr = r4 + 0; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + case 0x5ac94: + addr=r4+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r2 + 1; - if (r3 == r7) { - /* Next insn is delay slot */ - pc = 0x51450; + if(r3 == r7) { + pc=0x5ac50; continue; } - case 0x514a4: + case 0x5aca4: r4 = r4 + 1; - if (r2 != r5) { - /* Next insn is delay slot */ - pc = 0x51494; + if(r2 != r5) { + pc=0x5ac94; continue; } - case 0x514b0: + case 0x5acb0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x514bc: + case 0x5acbc: r5 = r5 & 255; r3 = r5 << 8; r3 = r3 | r5; @@ -67016,119 +69458,93 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r9 | r3; r8 = r8 | 65279; r6 = r6 | 32896; - case 0x514e0: - r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x5ace0: + r3= page[(r4+0)>>>2]; r3 = r9 ^ r3; r5 = r3 + r8; r3 = ~(r0 | r3); r3 = r5 & r3; r3 = r3 & r6; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x5146c; + if(r3 != r0) { + pc=0x5ac6c; 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 = 0x514e0; + if(r3 == r0) { + pc=0x5ace0; continue; } - /* Next insn is delay slot */ - pc = 0x5146c; + pc=0x5ac6c; continue; - 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: + case 0x5ae00: r3 = ((r5 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r2 = r4 + r0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x51650; + if(r3 == r0) { + pc=0x5ae50; continue; } r7 = r5 + r6; r3 = ((r4 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x51650; + if(r3 == r0) { + pc=0x5ae50; continue; } r3 = r4 + r6; r5 = r3 - r6; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x51748; + if(r6 == r0) { + pc=0x5af48; continue; } - case 0x51630: + case 0x5ae30: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x51630; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r3 != r5) { + pc=0x5ae30; continue; } - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x51650: - r3 = (r6 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x51750; + case 0x5ae50: + r3 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; + if(r3 != r0) { + pc=0x5af50; continue; } r3 = r2 | r5; r3 = r3 & 3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x51764; + if(r3 != r0) { + pc=0x5af64; continue; } r7 = r5 + r0; r3 = r2 + r0; r4 = r6 + r0; - case 0x51678: - r8 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + case 0x5ae78: + r8= page[(r7+0)>>>2]; r7 = r7 + 16; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r8; - r8 = readPages[(r7 + -12) >>> 12][((r7 + -12) >>> 2) & 0x3ff]; + page[(r3+0)>>>2] = r8; + r8= page[(r7+-12)>>>2]; r3 = r3 + 16; - writePages[(r3 + -12) >>> 12][((r3 + -12) >>> 2) & 0x3ff] = r8; - r8 = readPages[(r7 + -8) >>> 12][((r7 + -8) >>> 2) & 0x3ff]; + page[(r3+-12)>>>2] = r8; + r8= page[(r7+-8)>>>2]; 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 = 0x51678; + page[(r3+-8)>>>2] = r8; + r8= page[(r7+-4)>>>2]; + page[(r3+-4)>>>2] = r8; + r8 = (r4&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; + if(r8 == r0) { + pc=0x5ae78; continue; } r4 = r6 + -16; @@ -67138,25 +69554,23 @@ 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 = 0x51778; + r4 = (r10&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r4 != r0) { + pc=0x5af78; continue; } r8 = r5 + r0; r7 = r3 + r0; r4 = r10 + r0; - case 0x516e8: + case 0x5aee8: r8 = r8 + 4; - r9 = readPages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff]; + r9= page[(r8+-4)>>>2]; 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 = 0x516e8; + page[(r7+-4)>>>2] = r9; + r9 = (r4&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + if(r9 == r0) { + pc=0x5aee8; continue; } r4 = r10 + -4; @@ -67166,574 +69580,432 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r6 & 3; r3 = r3 + r4; r5 = r5 + r4; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x51770; + if(r6 == r0) { + pc=0x5af70; continue; } - case 0x5172c: + case 0x5af2c: r6 = r3 + r6; - case 0x51730: + case 0x5af30: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; 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 = 0x51730; + addr=r3+-1; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + if(r3 != r6) { + pc=0x5af30; continue; } - case 0x51748: - /* Next insn is delay slot */ - pc = r31; + case 0x5af48: + pc=r31; return; - case 0x51750: + case 0x5af50: r3 = r2 + r0; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x5172c; + if(r6 != r0) { + pc=0x5af2c; continue; } - /* Next insn is delay slot */ - pc = 0x51770; + pc=0x5af70; continue; - case 0x51764: + case 0x5af64: r3 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x5172c; + pc=0x5af2c; continue; - case 0x51770: - /* Next insn is delay slot */ - pc = r31; + case 0x5af70: + pc=r31; return; - case 0x51778: + case 0x5af78: r6 = r10 + r0; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x5172c; + if(r6 != r0) { + pc=0x5af2c; continue; } - /* Next insn is delay slot */ - pc = 0x51770; + pc=0x5af70; continue; - case 0x51800: - pc = 0x51800; + case 0x5b000: + pc=0x5b000; 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_51800() throws ExecutionException { /* 0x51800 - 0x51a00 */ + private final void run_5b000() throws ExecutionException { /* 0x5b000 - 0x5b800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x51800: - r2 = readPages[(r4 + 76) >>> 12][((r4 + 76) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x5b000: + r2= page[(r4+76)>>>2]; 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; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; + page[(r29+28)>>>2] = r31; + page[(r29+24)>>>2] = r18; r16 = r4 + r0; r17 = r5 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x51870; + if(r2 == r0) { + pc=0x5b070; continue; } - case 0x51828: + case 0x5b028: r3 = r17 << 2; r3 = r2 + r3; - r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x51898; + r2= page[(r3+0)>>>2]; + if(r2 == r0) { + pc=0x5b098; continue; } - 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]; + r4= page[(r2+0)>>>2]; + page[(r3+0)>>>2] = r4; + case 0x5b04c: + page[(r2+16)>>>2] = r0; + page[(r2+12)>>>2] = r0; + case 0x5b054: + r31= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x51870: + case 0x5b070: r5 = r0 + 4; r6 = r0 + 33; - /* 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; + r31=0x5b080; + pc=0x5d600; + run_5d000(); return; + case 0x5b080: + page[(r16+76)>>>2] = r2; + if(r2 != r0) { + pc=0x5b028; continue; } - case 0x5188c: + case 0x5b08c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x51854; + pc=0x5b054; continue; - case 0x51898: + case 0x5b098: 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 = 0x518b8; - pc = 0x53e00; - run_53e00(); - return; - case 0x518b8: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x5188c; + r31=0x5b0b8; + pc=0x5d600; + run_5d000(); return; + case 0x5b0b8: + if(r2 == r0) { + pc=0x5b08c; 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 = 0x5184c; + page[(r2+4)>>>2] = r17; + page[(r2+8)>>>2] = r18; + pc=0x5b04c; continue; - 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: - if (r5 == r0) { - /* Next insn is delay slot */ - pc = 0x51a28; + case 0x5b200: + if(r5 == r0) { + pc=0x5b228; continue; } - r2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; - r3 = readPages[(r4 + 76) >>> 12][((r4 + 76) >>> 2) & 0x3ff]; + r2= page[(r5+4)>>>2]; + r3= page[(r4+76)>>>2]; 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 0x51a28: - /* Next insn is delay slot */ - pc = r31; + r3= page[(r2+0)>>>2]; + page[(r5+0)>>>2] = r3; + page[(r2+0)>>>2] = r5; + case 0x5b228: + 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: + case 0x5b400: 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; + page[(r29+28)>>>2] = r16; + r16= page[(r5+16)>>>2]; + page[(r29+36)>>>2] = r18; + page[(r29+32)>>>2] = r17; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r19; r18 = r4 + r0; r17 = r5 + r0; r3 = r5 + 20; r8 = r0 + r0; - case 0x51c2c: - r11 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x5b42c: + r11= page[(r3+0)>>>2]; r8 = r8 + 1; - r9 = r11 & 65535; { - long hilo = (long) (r9) * ((long) 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 = (long) (r11) * ((long) 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; + page[(r3+-4)>>>2] = r9; r9 = r8 < r16 ? 1 : 0; - if (r9 != r0) { - /* Next insn is delay slot */ - pc = 0x51c2c; + if(r9 != r0) { + pc=0x5b42c; continue; } - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x51cb0; + if(r7 == r0) { + pc=0x5b4b0; continue; } - r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r2= page[(r17+8)>>>2]; r2 = r16 < r2 ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x51cd4; + if(r2 == r0) { + pc=0x5b4d4; continue; } - case 0x51c98: + case 0x5b498: 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 0x51cb0: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + page[(r2+4)>>>2] = r7; + page[(r17+16)>>>2] = r16; + case 0x5b4b0: + r31= page[(r29+44)>>>2]; 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= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x51cd4: - r5 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + case 0x5b4d4: + r5= page[(r17+4)>>>2]; r4 = r18 + r0; r5 = r5 + 1; - 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]; + page[(r29+16)>>>2] = r7; + r31=0x5b4ec; + pc=0x5b000; + continue; + case 0x5b4ec: + r6= page[(r17+16)>>>2]; r5 = r17 + 12; r6 = r6 + 2; r4 = r2 + 12; r6 = r6 << 2; r19 = r2 + r0; - /* 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]; + r31=0x5b50c; + pc=0x56fe0; + run_56800(); return; + case 0x5b50c: + r2= page[(r17+4)>>>2]; + r3= page[(r18+76)>>>2]; 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= page[(r2+0)>>>2]; + r7= page[(r29+16)>>>2]; + page[(r17+0)>>>2] = r3; + page[(r2+0)>>>2] = r17; r17 = r19 + r0; - /* Next insn is delay slot */ - pc = 0x51c98; + pc=0x5b498; 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: + case 0x5b600: r2 = 65535 << 16; r2 = r4 & r2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x51e84; + if(r2 != r0) { + pc=0x5b684; continue; } r4 = r4 << 16; r2 = r0 + 16; - case 0x51e18: + case 0x5b618: r3 = 65280 << 16; r3 = r4 & r3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x51e30; + if(r3 != r0) { + pc=0x5b630; continue; } r2 = r2 + 8; r4 = r4 << 8; - case 0x51e30: + case 0x5b630: r3 = 61440 << 16; r3 = r4 & r3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x51e48; + if(r3 != r0) { + pc=0x5b648; continue; } r2 = r2 + 4; r4 = r4 << 4; - case 0x51e48: + case 0x5b648: r3 = 49152 << 16; r3 = r4 & r3; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x51e60; + if(r3 != r0) { + pc=0x5b660; continue; } r2 = r2 + 2; r4 = r4 << 2; - case 0x51e60: - if (r4 < 0) { - /* Next insn is delay slot */ - pc = 0x51e7c; + case 0x5b660: + if(r4 < 0) { + pc=0x5b67c; continue; } r3 = 16384 << 16; r4 = r4 & r3; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x51e90; + if(r4 != r0) { + pc=0x5b690; continue; } r2 = r0 + 32; - case 0x51e7c: - /* Next insn is delay slot */ - pc = r31; + case 0x5b67c: + pc=r31; return; - case 0x51e84: + case 0x5b684: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x51e18; + pc=0x5b618; continue; - case 0x51e90: + case 0x5b690: r2 = r2 + 1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52000: - pc = 0x52000; + case 0x5b800: + pc=0x5b800; 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_52000() throws ExecutionException { /* 0x52000 - 0x52200 */ + private final void run_5b800() throws ExecutionException { /* 0x5b800 - 0x5c000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x52000: - r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x5b800: + r3= page[(r4+0)>>>2]; r2 = r3 & 7; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x52040; + if(r2 == r0) { + pc=0x5b840; continue; } r2 = r3 & 1; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x520d0; + if(r2 != r0) { + pc=0x5b8d0; continue; } r2 = r3 & 2; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x520dc; + if(r2 != r0) { + pc=0x5b8dc; continue; } r3 = r3 >>> 2; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; + page[(r4+0)>>>2] = r3; r2 = r0 + 2; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52040: + case 0x5b840: r2 = r3 & 65535; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x520b0; + if(r2 == r0) { + pc=0x5b8b0; continue; } r2 = r0 + r0; - case 0x52050: + case 0x5b850: r5 = r3 & 255; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x52064; + if(r5 != r0) { + pc=0x5b864; continue; } r2 = r2 + 8; r3 = r3 >>> 8; - case 0x52064: + case 0x5b864: r5 = r3 & 15; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x52078; + if(r5 != r0) { + pc=0x5b878; continue; } r2 = r2 + 4; r3 = r3 >>> 4; - case 0x52078: + case 0x5b878: r5 = r3 & 3; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x5208c; + if(r5 != r0) { + pc=0x5b88c; continue; } r2 = r2 + 2; r3 = r3 >>> 2; - case 0x5208c: + case 0x5b88c: r5 = r3 & 1; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x520c4; + if(r5 != r0) { + pc=0x5b8c4; continue; } r3 = r3 >>> 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x520c0; + if(r3 != r0) { + pc=0x5b8c0; continue; } r2 = r0 + 32; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x520b0: + case 0x5b8b0: r3 = r3 >>> 16; r2 = r0 + 16; - /* Next insn is delay slot */ - pc = 0x52050; + pc=0x5b850; continue; - case 0x520c0: + case 0x5b8c0: r2 = r2 + 1; - case 0x520c4: - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; - /* Next insn is delay slot */ - pc = r31; + case 0x5b8c4: + page[(r4+0)>>>2] = r3; + pc=r31; return; - case 0x520d0: + case 0x5b8d0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x520dc: + case 0x5b8dc: r3 = r3 >>> 1; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; + page[(r4+0)>>>2] = r3; r2 = r0 + 1; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x5ba00: r29 = r29 + -24; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + page[(r29+16)>>>2] = r16; r16 = r5 + r0; r5 = r0 + 1; - 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]; + page[(r29+20)>>>2] = r31; + r31=0x5ba1c; + pc=0x5b000; + run_5b000(); return; + case 0x5ba1c: + r31= page[(r29+20)>>>2]; 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]; + page[(r2+20)>>>2] = r16; + page[(r2+16)>>>2] = r4; + r16= page[(r29+16)>>>2]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x5bc00: 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; + page[(r29+28)>>>2] = r19; + page[(r29+24)>>>2] = r18; + r19= page[(r6+16)>>>2]; + r18= page[(r5+16)>>>2]; + page[(r29+32)>>>2] = 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; + page[(r29+20)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+16)>>>2] = r16; r17 = r5 + r0; r20 = r6 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x5244c; + if(r2 == r0) { + pc=0x5bc4c; continue; } r2 = r18 + r0; @@ -67741,44 +70013,39 @@ public final class AcmeCrossAssembler extends UnixRuntime { r18 = r19 + r0; r20 = r5 + r0; r19 = r2 + r0; - case 0x5244c: - r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + case 0x5bc4c: + r2= page[(r17+8)>>>2]; 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 = 0x52468; + r5= page[(r17+4)>>>2]; + if(r2 == r0) { + pc=0x5bc68; continue; } r5 = r5 + 1; - case 0x52468: - /* Next insn is delay slot */ - r31 = 0x52470; - pc = 0x51800; - run_51800(); - return; - case 0x52470: + case 0x5bc68: + r31=0x5bc70; + pc=0x5b000; + run_5b000(); return; + case 0x5bc70: 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 = 0x524a0; + if(r4 == r0) { + pc=0x5bca0; continue; } - case 0x5248c: - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r0; + case 0x5bc8c: + page[(r3+0)>>>2] = r0; r3 = r3 + 4; r4 = ((r3 & 0xffffffffL) < (r14 & 0xffffffffL)) ? 1 : 0; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x5248c; + if(r4 != r0) { + pc=0x5bc8c; continue; } - case 0x524a0: + case 0x5bca0: r12 = r20 + 20; r15 = r19 << 2; r15 = r12 + r15; @@ -67786,47 +70053,37 @@ 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 = 0x52604; - run_52600(); - return; + if(r3 == r0) { + pc=0x5be04; + continue; } - case 0x524c4: - r9 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; + case 0x5bcc4: + r9= page[(r12+0)>>>2]; r8 = r9 & 65535; - if (r8 == r0) { - /* Next insn is delay slot */ - pc = 0x52560; + if(r8 == r0) { + pc=0x5bd60; continue; } r4 = r13 + r0; r3 = r24 + r0; r9 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x524f0; + pc=0x5bcf0; continue; - case 0x524ec: + case 0x5bcec: r4 = r7 + r0; - 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; - } + case 0x5bcf0: + r6= page[(r3+0)>>>2]; + r7= page[(r4+0)>>>2]; + 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 = (long) (r6) * ((long) 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; @@ -67835,43 +70092,37 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r6 >>> 16; r6 = r6 << 16; r5 = r6 | r5; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; + page[(r4+0)>>>2] = r5; r5 = ((r3 & 0xffffffffL) < (r11 & 0xffffffffL)) ? 1 : 0; r7 = r4 + 4; - if (r5 != r0) { - /* Next insn is delay slot */ - pc = 0x524ec; + if(r5 != r0) { + pc=0x5bcec; continue; } - writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r9; - r9 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; - case 0x52560: + page[(r4+4)>>>2] = r9; + r9= page[(r12+0)>>>2]; + case 0x5bd60: r9 = r9 >>> 16; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x525f0; + if(r9 == r0) { + pc=0x5bdf0; continue; } - r4 = readPages[(r13 + 0) >>> 12][((r13 + 0) >>> 2) & 0x3ff]; + r4= page[(r13+0)>>>2]; r5 = r13 + r0; r7 = r4 + r0; r3 = r24 + r0; r10 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x5258c; + pc=0x5bd8c; continue; - case 0x52588: + case 0x5bd88: r5 = r8 + r0; - case 0x5258c: - addr = r3 + 2; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x5bd8c: + addr=r3+2; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; - r7 = r7 >>> 16; { - long hilo = (long) (r6) * ((long) 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; @@ -67880,16 +70131,13 @@ 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; + page[(r5+0)>>>2] = r4; + addr=r3+-4; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r4 = tmp; - r7 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; { - long hilo = (long) (r4) * ((long) r9); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + r7= page[(r5+4)>>>2]; + { long hilo = (long)(r4) * ((long)r9); hi = (int) (hilo >>> 32); lo = (int) hilo; } r10 = r7 & 65535; r6 = r6 >>> 16; r4 = lo; @@ -67897,430 +70145,339 @@ 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 = 0x52588; + if(r6 != r0) { + pc=0x5bd88; continue; } - writePages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff] = r4; - case 0x525f0: + page[(r5+4)>>>2] = r4; + case 0x5bdf0: r12 = r12 + 4; r3 = ((r12 & 0xffffffffL) < (r15 & 0xffffffffL)) ? 1 : 0; r13 = r13 + 4; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x524c4; + if(r3 != r0) { + pc=0x5bcc4; 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: - case 0x52604: - if (r16 <= 0) { - /* Next insn is delay slot */ - pc = 0x52644; + case 0x5be04: + if(r16 <= 0) { + pc=0x5be44; continue; } - r4 = readPages[(r14 + -4) >>> 12][((r14 + -4) >>> 2) & 0x3ff]; + r4= page[(r14+-4)>>>2]; r3 = r14 + -4; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x52638; + if(r4 == r0) { + pc=0x5be38; continue; } - /* Next insn is delay slot */ - pc = 0x52644; + pc=0x5be44; continue; - case 0x52624: + case 0x5be24: r3 = r3 + -4; - r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; - if (r4 != r0) { - /* Next insn is delay slot */ - pc = 0x52644; + r4= page[(r3+0)>>>2]; + if(r4 != r0) { + pc=0x5be44; continue; } - case 0x52638: + case 0x5be38: r16 = r16 + -1; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x52624; + if(r16 != r0) { + pc=0x5be24; continue; } - 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]; + case 0x5be44: + r31= page[(r29+36)>>>2]; + page[(r2+16)>>>2] = r16; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52800: - pc = 0x52800; + case 0x5c000: + pc=0x5c000; 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_52800() throws ExecutionException { /* 0x52800 - 0x52a00 */ + private final void run_5c000() throws ExecutionException { /* 0x5c000 - 0x5c800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x52800: + for(;;) { + switch(pc) { + case 0x5c000: 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; + page[(r29+32)>>>2] = r19; + page[(r29+28)>>>2] = r18; + page[(r29+20)>>>2] = r16; + page[(r29+36)>>>2] = r31; + page[(r29+24)>>>2] = r17; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x52924; + if(r2 != r0) { + pc=0x5c124; continue; } - case 0x52830: + case 0x5c030: r16 = r16 >> 2; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x528cc; + if(r16 == r0) { + pc=0x5c0cc; continue; } - r17 = readPages[(r19 + 72) >>> 12][((r19 + 72) >>> 2) & 0x3ff]; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x52954; + r17= page[(r19+72)>>>2]; + if(r17 == r0) { + pc=0x5c154; continue; } - case 0x5284c: + case 0x5c04c: r3 = r16 & 1; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x52884; + if(r3 != r0) { + pc=0x5c084; continue; } - case 0x52858: + case 0x5c058: r16 = r16 >> 1; - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x528cc; + if(r16 == r0) { + pc=0x5c0cc; continue; } - case 0x52864: - r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x528f0; + case 0x5c064: + r2= page[(r17+0)>>>2]; + if(r2 == r0) { + pc=0x5c0f0; continue; } r17 = r2 + r0; - case 0x52878: + case 0x5c078: r3 = r16 & 1; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x52858; + if(r3 == r0) { + pc=0x5c058; continue; } - case 0x52884: + case 0x5c084: r4 = r19 + r0; r5 = r18 + r0; r6 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x52898; - pc = 0x52400; - run_52400(); - return; - case 0x52898: - if (r18 == r0) { - /* Next insn is delay slot */ - pc = 0x52918; + r31=0x5c098; + pc=0x5bc00; + run_5b800(); return; + case 0x5c098: + if(r18 == r0) { + pc=0x5c118; continue; } - r3 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; - r4 = readPages[(r19 + 76) >>> 12][((r19 + 76) >>> 2) & 0x3ff]; + r3= page[(r18+4)>>>2]; + r4= page[(r19+76)>>>2]; r3 = r3 << 2; r3 = r4 + r3; - r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4= page[(r3+0)>>>2]; r16 = r16 >> 1; - writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r4; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r18; + page[(r18+0)>>>2] = r4; + page[(r3+0)>>>2] = r18; r18 = r2 + r0; - if (r16 != r0) { - /* Next insn is delay slot */ - pc = 0x52864; + if(r16 != r0) { + pc=0x5c064; continue; } - case 0x528cc: - r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + case 0x5c0cc: + r31= page[(r29+36)>>>2]; 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= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x528f0: + case 0x5c0f0: r5 = r17 + r0; r6 = r17 + r0; r4 = r19 + 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; + r31=0x5c104; + pc=0x5bc00; + run_5b800(); return; + case 0x5c104: + page[(r17+0)>>>2] = r2; + page[(r2+0)>>>2] = r0; r17 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x52878; + pc=0x5c078; continue; - case 0x52918: + case 0x5c118: r18 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x52858; + pc=0x5c058; continue; - case 0x52924: + case 0x5c124: r2 = r2 + -1; r3 = 6 << 16; - r3 = r3 + -26636; + r3 = r3 + 15004; r2 = r2 << 2; r2 = r2 + r3; - r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6= page[(r2+0)>>>2]; r7 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x52948; - pc = 0x51c00; - run_51c00(); - return; - case 0x52948: + r31=0x5c148; + pc=0x5b400; + run_5b000(); return; + case 0x5c148: r18 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x52830; + pc=0x5c030; continue; - case 0x52954: + case 0x5c154: r4 = r19 + r0; r5 = r0 + 1; - /* Next insn is delay slot */ - r31 = 0x52964; - pc = 0x51800; - run_51800(); - return; - case 0x52964: + r31=0x5c164; + pc=0x5b000; + run_5b000(); return; + case 0x5c164: r17 = r2 + r0; r2 = r0 + 625; - writePages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff] = r2; + page[(r17+20)>>>2] = 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 = 0x5284c; + page[(r17+16)>>>2] = r2; + page[(r19+72)>>>2] = r17; + page[(r17+0)>>>2] = r0; + pc=0x5c04c; continue; - 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: + case 0x5c200: r29 = r29 + -48; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + page[(r29+28)>>>2] = 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; + page[(r29+36)>>>2] = r20; + r20= page[(r18+16)>>>2]; + page[(r29+24)>>>2] = 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= page[(r18+8)>>>2]; + page[(r29+20)>>>2] = r16; r16 = r20 + 1; - writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + page[(r29+32)>>>2] = 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; + page[(r29+40)>>>2] = r21; + page[(r29+44)>>>2] = r31; r21 = r6 + r0; - r5 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x52a64; + r5= page[(r5+4)>>>2]; + if(r4 == r0) { + pc=0x5c264; continue; } - case 0x52a50: + case 0x5c250: r2 = r2 << 1; r7 = r2 < r16 ? 1 : 0; r5 = r5 + 1; - if (r7 != r0) { - /* Next insn is delay slot */ - pc = 0x52a50; + if(r7 != r0) { + pc=0x5c250; continue; } - case 0x52a64: + case 0x5c264: r4 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x52a70; - pc = 0x51800; - run_51800(); - return; - case 0x52a70: + r31=0x5c270; + pc=0x5b000; + run_5b000(); return; + case 0x5c270: r7 = r2 + 20; - if (r17 <= 0) { - /* Next insn is delay slot */ - pc = 0x52aa0; + if(r17 <= 0) { + pc=0x5c2a0; continue; } r8 = r7 + r0; r3 = r0 + r0; - case 0x52a84: + case 0x5c284: r8 = r8 + 4; r3 = r3 + 1; - writePages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff] = r0; - if (r3 != r17) { - /* Next insn is delay slot */ - pc = 0x52a84; + page[(r8+-4)>>>2] = r0; + if(r3 != r17) { + pc=0x5c284; continue; } r3 = r3 << 2; r7 = r7 + r3; - case 0x52aa0: - r10 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; + case 0x5c2a0: + r10= page[(r18+16)>>>2]; r3 = r18 + 20; r10 = r10 << 2; r6 = r21 & 31; r10 = r3 + r10; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x52b5c; + if(r6 == r0) { + pc=0x5c35c; continue; } r4 = r0 + 32; r4 = r4 - r6; r9 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x52ad4; + pc=0x5c2d4; continue; - case 0x52ad0: + case 0x5c2d0: r7 = r8 + r0; - case 0x52ad4: - r11 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x5c2d4: + r11= page[(r3+0)>>>2]; 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]; + page[(r7+0)>>>2] = r9; + r9= page[(r3+-4)>>>2]; r11 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; r8 = r7 + 4; - r9 = r9 >>> (r4 & 0x1f); - if (r11 != r0) { - /* Next insn is delay slot */ - pc = 0x52ad0; + r9 = r9 >>> (r4&0x1f); + if(r11 != r0) { + pc=0x5c2d0; continue; } - writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r9; - if (r9 == r0) { - /* Next insn is delay slot */ - pc = 0x52b10; + page[(r7+4)>>>2] = r9; + if(r9 == r0) { + pc=0x5c310; continue; } r16 = r20 + 2; - case 0x52b10: - r3 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; - r4 = readPages[(r19 + 76) >>> 12][((r19 + 76) >>> 2) & 0x3ff]; + case 0x5c310: + r3= page[(r18+4)>>>2]; + r4= page[(r19+76)>>>2]; 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= page[(r3+0)>>>2]; + r31= page[(r29+44)>>>2]; 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]; + page[(r2+16)>>>2] = r16; + r21= page[(r29+40)>>>2]; + page[(r18+0)>>>2] = r4; + r20= page[(r29+36)>>>2]; + page[(r3+0)>>>2] = r18; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52b5c: + case 0x5c35c: r3 = r3 + 4; - r6 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; + r6= page[(r3+-4)>>>2]; r7 = r7 + 4; - writePages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff] = r6; + page[(r7+-4)>>>2] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; - if (r6 == r0) { - /* Next insn is delay slot */ - pc = 0x52b10; + if(r6 == r0) { + pc=0x5c310; continue; } r3 = r3 + 4; - r6 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; + r6= page[(r3+-4)>>>2]; r7 = r7 + 4; - writePages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff] = r6; + page[(r7+-4)>>>2] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x52b5c; + if(r6 != r0) { + pc=0x5c35c; continue; } - /* Next insn is delay slot */ - pc = 0x52b10; + pc=0x5c310; continue; - 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 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; - r3 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + case 0x5c400: + r2= page[(r4+16)>>>2]; + r3= page[(r5+16)>>>2]; r2 = r2 - r3; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x52c78; + if(r2 != r0) { + pc=0x5c478; continue; } r3 = r3 << 2; @@ -68328,113 +70485,86 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r5 + 20; r2 = r4 + r3; r5 = r5 + r3; - /* Next insn is delay slot */ - pc = 0x52c40; + pc=0x5c440; continue; - case 0x52c34: + case 0x5c434: r3 = ((r4 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x52c74; + if(r3 == r0) { + pc=0x5c474; continue; } - case 0x52c40: + case 0x5c440: 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 = 0x52c34; + r3= page[(r2+0)>>>2]; + r6= page[(r5+0)>>>2]; + if(r3 == r6) { + pc=0x5c434; continue; } r3 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x52c80; + if(r3 != r0) { + pc=0x5c480; continue; } r2 = r0 + 1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52c74: + case 0x5c474: r2 = r0 + r0; - case 0x52c78: - /* Next insn is delay slot */ - pc = r31; + case 0x5c478: + pc=r31; return; - case 0x52c80: + case 0x5c480: r2 = r0 + -1; - /* Next insn is delay slot */ - pc = r31; + 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: + case 0x5c600: r29 = r29 + -40; - writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; - writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + page[(r29+28)>>>2] = r18; + page[(r29+20)>>>2] = 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; + page[(r29+24)>>>2] = r17; + page[(r29+36)>>>2] = r31; + page[(r29+32)>>>2] = r19; r17 = r6 + r0; - /* Next insn is delay slot */ - r31 = 0x52e34; - pc = 0x52c00; - run_52c00(); - return; - case 0x52e34: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x52fa4; + r31=0x5c634; + pc=0x5c400; + continue; + case 0x5c634: + if(r2 == r0) { + pc=0x5c7a4; continue; } - if (r2 < 0) { - /* Next insn is delay slot */ - pc = 0x52f8c; + if(r2 < 0) { + pc=0x5c78c; continue; } r19 = r0 + r0; - case 0x52e48: - r5 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x5c648: + r5= page[(r16+4)>>>2]; r4 = r18 + r0; - /* 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]; + r31=0x5c658; + pc=0x5b000; + run_5b000(); return; + case 0x5c658: + r10= page[(r16+16)>>>2]; + r13= page[(r17+16)>>>2]; r4 = r16 + 20; r12 = r10 << 2; r7 = r17 + 20; r13 = r13 << 2; - writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r19; + page[(r2+12)>>>2] = r19; r12 = r4 + r12; r13 = r7 + r13; r3 = r2 + 20; r5 = r0 + r0; - case 0x52e84: - r8 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; - r9 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + case 0x5c684: + r8= page[(r4+0)>>>2]; + r9= page[(r7+0)>>>2]; r6 = r8 & 65535; r5 = r6 + r5; r11 = r9 & 65535; @@ -68452,22 +70582,20 @@ 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 = 0x52e84; + page[(r3+-4)>>>2] = r6; + if(r8 != r0) { + pc=0x5c684; continue; } r7 = ((r4 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; r9 = r3 + r0; r11 = r4 + r0; - if (r7 == r0) { - /* Next insn is delay slot */ - pc = 0x52f48; + if(r7 == r0) { + pc=0x5c748; continue; } - case 0x52ef0: - r8 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x5c6f0: + r8= page[(r4+0)>>>2]; r4 = r4 + 4; r6 = r8 & 65535; r6 = r6 + r5; @@ -68480,10 +70608,9 @@ 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 = 0x52ef0; + page[(r3+-4)>>>2] = r6; + if(r7 != r0) { + pc=0x5c6f0; continue; } r3 = ~(r0 | r11); @@ -68492,321 +70619,272 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 1; r3 = r3 << 2; r3 = r9 + r3; - case 0x52f48: + case 0x5c748: r3 = r3 + -4; - if (r6 != r0) { - /* Next insn is delay slot */ - pc = 0x52f68; + if(r6 != r0) { + pc=0x5c768; continue; } - case 0x52f54: + case 0x5c754: r3 = r3 + -4; - r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4= page[(r3+0)>>>2]; r10 = r10 + -1; - if (r4 == r0) { - /* Next insn is delay slot */ - pc = 0x52f54; + if(r4 == r0) { + pc=0x5c754; continue; } - 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; + case 0x5c768: + r31= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + page[(r2+16)>>>2] = r10; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x52f8c: + case 0x5c78c: r2 = r16 + r0; r19 = r0 + 1; r16 = r17 + r0; r17 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x52e48; + pc=0x5c648; continue; - case 0x52fa4: + case 0x5c7a4: r4 = r18 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x52fb4; - pc = 0x51800; - run_51800(); - return; - case 0x52fb4: - r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r31=0x5c7b4; + pc=0x5b000; + run_5b000(); return; + case 0x5c7b4: + r31= page[(r29+36)>>>2]; 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= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + page[(r2+16)>>>2] = r3; + page[(r2+20)>>>2] = r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x53000: - pc = 0x53000; + case 0x5c800: + pc=0x5c800; 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_53000() throws ExecutionException { /* 0x53000 - 0x53200 */ + private final void run_5c800() throws ExecutionException { /* 0x5c800 - 0x5d000 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x53000: + for(;;) { + switch(pc) { + case 0x5c800: 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; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + page[(r29+32)>>>2] = r17; + page[(r29+28)>>>2] = r16; + page[(r29+44)>>>2] = r31; r16 = r6 + r0; r17 = r7 + r0; - /* Next insn is delay slot */ - r31 = 0x5302c; - pc = 0x51800; - run_51800(); - return; - case 0x5302c: + r31=0x5c82c; + pc=0x5b000; + run_5b000(); return; + case 0x5c82c: 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 = 0x53054; + if(r19 == r0) { + pc=0x5c854; continue; } r3 = 16 << 16; r2 = r2 | r3; - case 0x53054: - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; - if (r17 == r0) { - /* Next insn is delay slot */ - pc = 0x530f4; + case 0x5c854: + page[(r29+16)>>>2] = r2; + if(r17 == r0) { + pc=0x5c8f4; continue; } r4 = r29 + 20; - 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; + page[(r29+20)>>>2] = r17; + r31=0x5c870; + pc=0x5b800; + run_5b800(); return; + case 0x5c870: + if(r2 != r0) { + pc=0x5c964; 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 0x53084: - writePages[(r18 + 24) >>> 12][((r18 + 24) >>> 2) & 0x3ff] = r16; + r3= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; + page[(r18+20)>>>2] = r3; + case 0x5c884: + page[(r18+24)>>>2] = 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 = 0x53120; + page[(r18+16)>>>2] = r16; + if(r19 != r0) { + pc=0x5c920; continue; } - case 0x530a0: - r3 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + case 0x5c8a0: + r3= page[(r29+64)>>>2]; r2 = r2 + -1074; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + page[(r3+0)>>>2] = r2; r2 = r16 << 2; r2 = r18 + r2; - r4 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r4= page[(r2+16)>>>2]; r16 = r16 << 5; - /* Next insn is delay slot */ - r31 = 0x530c4; - pc = 0x51e00; - run_51e00(); - return; - case 0x530c4: - r3 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31=0x5c8c4; + pc=0x5b600; + run_5b000(); return; + case 0x5c8c4: + r3= page[(r29+68)>>>2]; + r31= page[(r29+44)>>>2]; r2 = r16 - r2; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; - r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + page[(r3+0)>>>2] = r2; + r19= page[(r29+40)>>>2]; 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]; + r17= page[(r29+32)>>>2]; + r18= page[(r29+36)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x530f4: + case 0x5c8f4: r4 = r29 + 16; - /* Next insn is delay slot */ - r31 = 0x53100; - pc = 0x52000; - run_52000(); - return; - case 0x53100: - r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31=0x5c900; + pc=0x5b800; + run_5b800(); return; + case 0x5c900: + r3= page[(r29+16)>>>2]; r2 = r2 + 32; - writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r3; + page[(r18+20)>>>2] = r3; r3 = r0 + 1; - writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r3; + page[(r18+16)>>>2] = r3; r16 = r0 + 1; - if (r19 == r0) { - /* Next insn is delay slot */ - pc = 0x530a0; + if(r19 == r0) { + pc=0x5c8a0; continue; } - case 0x53120: - r3 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + case 0x5c920: + r3= page[(r29+64)>>>2]; r19 = r19 + -1075; r19 = r19 + r2; - writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r19; + page[(r3+0)>>>2] = 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= page[(r29+44)>>>2]; + r3= page[(r29+68)>>>2]; + r19= page[(r29+40)>>>2]; + page[(r3+0)>>>2] = r2; + r17= page[(r29+32)>>>2]; r2 = r18 + r0; - r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; - r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r16= page[(r29+28)>>>2]; + r18= page[(r29+36)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x53164: - r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x5c964: + r16= page[(r29+16)>>>2]; r3 = r0 - r2; - r4 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; - r3 = r16 << (r3 & 0x1f); + r4= page[(r29+20)>>>2]; + 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 = 0x53084; + r16 = r16 >>> (r2&0x1f); + page[(r18+20)>>>2] = r3; + page[(r29+16)>>>2] = r16; + pc=0x5c884; continue; - 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: - r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + case 0x5ca00: + r2= page[(r6+8)>>>2]; 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; + page[(r29+44)>>>2] = r23; + page[(r29+24)>>>2] = r18; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r30; + page[(r29+40)>>>2] = r22; + page[(r29+36)>>>2] = r21; + page[(r29+32)>>>2] = r20; + page[(r29+28)>>>2] = r19; + page[(r29+20)>>>2] = r17; + page[(r29+16)>>>2] = r16; r23 = r6 + r0; - r18 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x533fc; + r18= page[(r6+0)>>>2]; + if(r2 == r0) { + pc=0x5cbfc; continue; } r20 = r4 + r0; - r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; - r4 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r3= page[(r5+8)>>>2]; + r4= page[(r5+0)>>>2]; r17 = r5 + r0; r30 = r0 + r0; r16 = r0 + r0; - case 0x53258: - if (r16 == r0) { - /* Next insn is delay slot */ - pc = 0x532c4; + case 0x5ca58: + if(r16 == r0) { + pc=0x5cac4; continue; } r2 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r19 = r3 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x532d8; + if(r2 != r0) { + pc=0x5cad8; continue; } - addr = r17 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r2 & 1152; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x532e8; + if(r3 != r0) { + pc=0x5cae8; continue; } r22 = r19 + r0; - case 0x53288: + case 0x5ca88: r5 = r30 + r0; r6 = r22 + r0; - /* 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]; + r31=0x5ca98; + pc=0x5ae00; + run_5a800(); return; + case 0x5ca98: + r3= page[(r17+8)>>>2]; + r4= page[(r17+0)>>>2]; + r2= page[(r23+8)>>>2]; 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 = 0x533fc; + page[(r17+8)>>>2] = r3; + page[(r17+0)>>>2] = r4; + page[(r23+8)>>>2] = r2; + if(r2 == r0) { + pc=0x5cbfc; continue; } - case 0x532c4: - r30 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; - r16 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + case 0x5cac4: + r30= page[(r18+0)>>>2]; + r16= page[(r18+4)>>>2]; r18 = r18 + 8; - /* Next insn is delay slot */ - pc = 0x53258; + pc=0x5ca58; continue; - case 0x532d8: + case 0x5cad8: r19 = r16 + r0; r22 = r16 + r0; - /* Next insn is delay slot */ - pc = 0x53288; + pc=0x5ca88; continue; - case 0x532e8: - r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x5cae8: + r5= page[(r17+16)>>>2]; r6 = r16 + 1; r21 = r4 - r5; - r4 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r4= page[(r17+20)>>>2]; r6 = r6 + r21; r22 = r4 << 1; r4 = r22 + r4; @@ -68814,2985 +70892,1230 @@ 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 = 0x53398; + if(r4 == r0) { + pc=0x5cb98; continue; } r2 = r2 & 1024; r22 = r6 + r0; r4 = r20 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x533ac; + if(r2 == r0) { + pc=0x5cbac; continue; } - case 0x53330: + case 0x5cb30: r5 = r6 + r0; - /* Next insn is delay slot */ - r31 = 0x5333c; - pc = 0x44a00; - run_44a00(); - return; - case 0x5333c: + r31=0x5cb3c; + pc=0x4e200; + run_4e000(); return; + case 0x5cb3c: r19 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x533d0; + if(r2 == r0) { + pc=0x5cbd0; continue; } - r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r5= page[(r17+16)>>>2]; r4 = r2 + r0; r6 = r21 + r0; - /* 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; + r31=0x5cb5c; + pc=0x56fe0; + run_56800(); return; + case 0x5cb5c: + addr=r17+12; + tmp= page[(addr)>>>2]; + 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 0x53370: + addr=r17+12; + tmp= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + case 0x5cb70: r4 = r19 + r21; - writePages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff] = r22; + page[(r17+20)>>>2] = 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; + page[(r17+16)>>>2] = r19; + page[(r17+8)>>>2] = r22; + page[(r17+0)>>>2] = r4; r19 = r16 + r0; r22 = r16 + r0; - /* Next insn is delay slot */ - pc = 0x53288; + pc=0x5ca88; continue; - case 0x53398: + case 0x5cb98: r2 = r2 & 1024; r6 = r22 + r0; r4 = r20 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x53330; + if(r2 != r0) { + pc=0x5cb30; continue; } - case 0x533ac: - /* Next insn is delay slot */ - r31 = 0x533b4; - pc = 0x46400; - run_46400(); - return; - case 0x533b4: + case 0x5cbac: + r31=0x5cbb4; + pc=0x4fc00; + run_4f800(); return; + case 0x5cbb4: r19 = r2 + r0; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x53370; + if(r2 != r0) { + pc=0x5cb70; continue; } - r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r5= page[(r17+16)>>>2]; r4 = r20 + r0; - /* Next insn is delay slot */ - r31 = 0x533d0; - pc = 0x42c00; - run_42c00(); - return; - case 0x533d0: + r31=0x5cbd0; + pc=0x4c400; + run_4c000(); return; + case 0x5cbd0: 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; + page[(r20+0)>>>2] = r2; + addr=r17+12; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + page[(r23+8)>>>2] = r0; + page[(r23+4)>>>2] = r0; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x53400; - run_53400(); - return; - 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_53400() throws ExecutionException { /* 0x53400 - 0x53600 */ - int addr, tmp; - 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]; + pc=0x5cc00; + continue; + case 0x5cbfc: + page[(r23+4)>>>2] = r0; + case 0x5cc00: + r31= page[(r29+52)>>>2]; + r30= page[(r29+48)>>>2]; + r23= page[(r29+44)>>>2]; + r22= page[(r29+40)>>>2]; + r21= page[(r29+36)>>>2]; + r20= page[(r29+32)>>>2]; + r19= page[(r29+28)>>>2]; + r18= page[(r29+24)>>>2]; + r17= page[(r29+20)>>>2]; + r16= page[(r29+16)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x5ce00: r2 = r4 + r0; - r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4= page[(r28+-31512)>>>2]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x4d750; - run_4d600(); + pc=0x56f50; + run_56800(); return; + case 0x5d000: + pc=0x5d000; return; - case 0x53800: - pc = 0x53800; - 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_53800() throws ExecutionException { /* 0x53800 - 0x53a00 */ + private final void run_5d000() throws ExecutionException { /* 0x5d000 - 0x5d800 */ int addr, tmp; - for (;;) { - switch (pc) { - case 0x53800: - r2 = readPages[(r5 + 100) >>> 12][((r5 + 100) >>> 2) & 0x3ff]; + for(;;) { + switch(pc) { + case 0x5d000: + r2= page[(r5+100)>>>2]; 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; + page[(r29+44)>>>2] = r22; + page[(r29+32)>>>2] = r19; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r23; + page[(r29+40)>>>2] = r21; + page[(r29+36)>>>2] = r20; + page[(r29+28)>>>2] = r18; + page[(r29+24)>>>2] = r17; + page[(r29+20)>>>2] = r16; r19 = r5 + r0; r22 = r6 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x53908; + if(r2 == r0) { + pc=0x5d108; continue; } - r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r2= page[(r6+8)>>>2]; r20 = r4 + r0; - r23 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r23= page[(r6+0)>>>2]; r21 = r0 + -1; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x538fc; + if(r2 == r0) { + pc=0x5d0fc; continue; } - case 0x53858: - r18 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; - r16 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; + case 0x5d058: + r18= page[(r23+4)>>>2]; + r16= page[(r23+0)>>>2]; r18 = r18 >>> 2; r17 = r0 + r0; - if (r18 > 0) { - /* Next insn is delay slot */ - pc = 0x53888; + if(r18 > 0) { + pc=0x5d088; continue; } - /* Next insn is delay slot */ - pc = 0x538e4; + pc=0x5d0e4; continue; - case 0x53878: + case 0x5d078: r17 = r17 + 1; r16 = r16 + 4; - if (r18 == r17) { - /* Next insn is delay slot */ - pc = 0x538e0; + if(r18 == r17) { + pc=0x5d0e0; continue; } - case 0x53888: - r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x5d088: + r5= page[(r16+0)>>>2]; r4 = r20 + r0; r6 = r19 + r0; - /* Next insn is delay slot */ - r31 = 0x5389c; - pc = 0x54000; - run_54000(); - return; - case 0x5389c: - if (r2 != r21) { - /* Next insn is delay slot */ - pc = 0x53878; + r31=0x5d09c; + pc=0x5d800; + run_5d800(); return; + case 0x5d09c: + if(r2 != r21) { + pc=0x5d078; continue; } r2 = r0 + -1; - 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]; + case 0x5d0a8: + r31= page[(r29+52)>>>2]; + r23= page[(r29+48)>>>2]; + r21= page[(r29+40)>>>2]; + r20= page[(r29+36)>>>2]; + r19= page[(r29+32)>>>2]; + r18= page[(r29+28)>>>2]; + r17= page[(r29+24)>>>2]; + r16= page[(r29+20)>>>2]; + page[(r22+8)>>>2] = r0; + page[(r22+4)>>>2] = r0; + r22= page[(r29+44)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x538e0: - r2 = readPages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff]; - case 0x538e4: + case 0x5d0e0: + r2= page[(r22+8)>>>2]; + case 0x5d0e4: r18 = r18 << 2; r2 = r2 - r18; - writePages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff] = r2; + page[(r22+8)>>>2] = r2; r23 = r23 + 8; - if (r2 != r0) { - /* Next insn is delay slot */ - pc = 0x53858; + if(r2 != r0) { + pc=0x5d058; continue; } - case 0x538fc: + case 0x5d0fc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x538a8; + pc=0x5d0a8; continue; - case 0x53908: - /* Next insn is delay slot */ - r31 = 0x53910; - pc = 0x50600; - run_50600(); - return; - case 0x53910: - /* Next insn is delay slot */ - pc = 0x538a8; + case 0x5d108: + r31=0x5d110; + pc=0x59e00; + run_59800(); return; + case 0x5d110: + pc=0x5d0a8; continue; - 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: - r3 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x53a18; + case 0x5d200: + r3= page[(r6+8)>>>2]; + if(r3 == r0) { + pc=0x5d218; continue; } - /* Next insn is delay slot */ - pc = 0x53800; - run_53800(); - return; - case 0x53a18: - writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r0; + pc=0x5d000; + continue; + case 0x5d218: + page[(r6+4)>>>2] = r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - 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: + case 0x5d400: r29 = r29 + -88; r5 = r29 + 16; - 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; + page[(r29+84)>>>2] = r31; + r31=0x5d414; + pc=0x5ce00; + run_5c800(); return; + case 0x5d414: + if(r2 < 0) { + pc=0x5d468; continue; } - r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3= page[(r29+20)>>>2]; r2 = r0 + 8192; r3 = r3 & 61440; - if (r3 == r2) { - /* Next insn is delay slot */ - pc = 0x53c54; + if(r3 == r2) { + pc=0x5d454; continue; } - /* Next insn is delay slot */ - r31 = 0x53c38; - pc = 0x40000; - run_40000(); - return; - case 0x53c38: + r31=0x5d438; + pc=0x49800; + run_49800(); return; + case 0x5d438: r3 = r0 + 25; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + page[(r2+0)>>>2] = r3; r2 = r0 + r0; - case 0x53c44: - r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + case 0x5d444: + r31= page[(r29+84)>>>2]; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x53c54: - r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + case 0x5d454: + r31= page[(r29+84)>>>2]; r2 = r0 + 1; r29 = r29 + 88; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x53c68: - /* Next insn is delay slot */ - r31 = 0x53c70; - pc = 0x40000; - run_40000(); - return; - case 0x53c70: + case 0x5d468: + r31=0x5d470; + pc=0x49800; + run_49800(); return; + case 0x5d470: r3 = r0 + 9; - writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + page[(r2+0)>>>2] = r3; r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x53c44; + pc=0x5d444; continue; - 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: { - long hilo = (long) (r5) * ((long) r6); - hi = (int) (hilo >>> 32); - lo = (int) hilo; - } + case 0x5d600: + { 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; + page[(r29+44)>>>2] = r31; + page[(r29+40)>>>2] = r20; + page[(r29+32)>>>2] = r18; + page[(r29+28)>>>2] = r17; + page[(r29+24)>>>2] = r16; r17 = r4 + r0; - writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + page[(r29+36)>>>2] = r19; r5 = lo; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; - /* Next insn is delay slot */ - r31 = 0x53e34; - pc = 0x45600; - run_45600(); - return; - case 0x53e34: + page[(r29+16)>>>2] = r5; + r31=0x5d634; + pc=0x4ee00; + run_4e800(); return; + case 0x5d634: r2 = 6 << 16; - r18 = readPages[(r2 + -16456) >>> 12][((r2 + -16456) >>> 2) & 0x3ff]; - r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r18= page[(r2+25184)>>>2]; + r5= page[(r29+16)>>>2]; r4 = r17 + r0; - r20 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; - /* Next insn is delay slot */ - r31 = 0x53e50; - pc = 0x44a00; - run_44a00(); - return; - case 0x53e50: + r20= page[(r18+4)>>>2]; + r31=0x5d650; + pc=0x4e200; + run_4e000(); return; + case 0x5d650: r16 = r2 + r0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x53f7c; + if(r2 == r0) { + pc=0x5d77c; continue; } - r19 = readPages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff]; + r19= page[(r2+-4)>>>2]; r3 = r16 + -8; r2 = r0 + -4; r19 = r19 & r2; - if (r18 == r3) { - /* Next insn is delay slot */ - pc = 0x53f4c; + if(r18 == r3) { + pc=0x5d74c; continue; } - case 0x53e74: + case 0x5d674: r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x53e80; - pc = 0x45800; - run_45800(); - return; - case 0x53e80: + r31=0x5d680; + pc=0x4f000; + run_4f000(); return; + case 0x5d680: r6 = r19 + -4; - r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x53f08; + r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x5d708; continue; } - r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x53ed4; + r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x5d6d4; 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; + case 0x5d6a0: + page[(r2+0)>>>2] = r0; + page[(r2+4)>>>2] = r0; + page[(r2+8)>>>2] = 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]; + case 0x5d6b0: + r31= page[(r29+44)>>>2]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + 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; + case 0x5d6d4: + r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; + page[(r16+0)>>>2] = r0; + page[(r16+4)>>>2] = r0; + if(r2 != r0) { + pc=0x5d740; 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 = 0x53f68; + page[(r16+8)>>>2] = r0; + page[(r16+12)>>>2] = r0; + if(r6 == r2) { + pc=0x5d768; continue; } r2 = r16 + 16; - /* Next insn is delay slot */ - pc = 0x53ea0; + pc=0x5d6a0; continue; - case 0x53f08: + case 0x5d708: r4 = r16 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31 = 0x53f18; - pc = 0x4d7f0; - run_4d600(); - return; - case 0x53f18: - r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r31=0x5d718; + pc=0x56ff0; + run_56800(); return; + case 0x5d718: + r31= page[(r29+44)>>>2]; 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]; + r20= page[(r29+40)>>>2]; + r19= page[(r29+36)>>>2]; + r18= page[(r29+32)>>>2]; + r17= page[(r29+28)>>>2]; + r16= page[(r29+24)>>>2]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x53f40: + case 0x5d740: r2 = r16 + 8; - /* Next insn is delay slot */ - pc = 0x53ea0; + pc=0x5d6a0; continue; - case 0x53f4c: + case 0x5d74c: r2 = r20 & r2; r3 = ((r2 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x53e74; + if(r3 == r0) { + pc=0x5d674; continue; } r19 = r2 + r0; - /* Next insn is delay slot */ - pc = 0x53e74; + pc=0x5d674; continue; - case 0x53f68: - writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + case 0x5d768: + page[(r16+16)>>>2] = r0; r2 = r16 + 24; - writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; - /* Next insn is delay slot */ - pc = 0x53ea0; + page[(r16+20)>>>2] = r0; + pc=0x5d6a0; continue; - case 0x53f7c: + case 0x5d77c: r4 = r17 + r0; - /* Next insn is delay slot */ - r31 = 0x53f88; - pc = 0x45800; - run_45800(); - return; - case 0x53f88: + r31=0x5d788; + pc=0x4f000; + run_4f000(); return; + case 0x5d788: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = 0x53eb0; + pc=0x5d6b0; continue; - case 0x54000: - pc = 0x54000; + case 0x5d800: + pc=0x5d800; 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_54000() throws ExecutionException { /* 0x54000 - 0x54200 */ + private final void run_5d800() throws ExecutionException { /* 0x5d800 - 0x5e000 */ int addr, tmp; - 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 */ + for(;;) { + switch(pc) { + case 0x5d800: + addr=r6+12; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + if((tmp&0x8000)!=0) tmp |= 0xffff0000; 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; + page[(r29+40)>>>2] = r19; + page[(r29+36)>>>2] = r18; + page[(r29+28)>>>2] = r16; + page[(r29+52)>>>2] = r31; + page[(r29+48)>>>2] = r21; + page[(r29+44)>>>2] = r20; + page[(r29+32)>>>2] = r17; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x54054; + if(r3 != r0) { + pc=0x5d854; 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r6+100)>>>2]; r2 = r2 | 8192; - 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: + page[(r6+100)>>>2] = r2; + case 0x5d854: + r31=0x5d85c; + pc=0x5a800; + run_5a800(); return; + case 0x5d85c: r3 = r0 + 1; - if (r2 == r3) { - /* Next insn is delay slot */ - pc = 0x541c4; + if(r2 == r3) { + pc=0x5d9c4; continue; } - case 0x54068: + case 0x5d868: r4 = r19 + r0; r5 = r29 + 16; r6 = r18 + r0; r7 = r16 + 92; - /* Next insn is delay slot */ - r31 = 0x54080; - pc = 0x54400; - run_54400(); - return; - case 0x54080: + r31=0x5d880; + pc=0x5dc00; + continue; + case 0x5d880: r20 = r2 + r0; r2 = r0 + -1; - if (r20 == r2) { - /* Next insn is delay slot */ - pc = 0x54158; + if(r20 == r2) { + pc=0x5d958; continue; } - if (r20 == r0) { - /* Next insn is delay slot */ - pc = 0x5414c; + if(r20 == r0) { + pc=0x5d94c; 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - case 0x5409c: + case 0x5d89c: r17 = r0 + r0; r21 = r0 + 10; - /* Next insn is delay slot */ - pc = 0x540e4; + pc=0x5d8e4; continue; - 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]; + case 0x5d8ac: + r3= page[(r16+0)>>>2]; + addr=r3+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r3= page[(r16+0)>>>2]; r3 = r3 + 1; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; - case 0x540c8: + page[(r16+0)>>>2] = r3; + case 0x5d8c8: r17 = r17 + 1; r3 = ((r17 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if (r3 == r0) { - /* Next insn is delay slot */ - pc = 0x5414c; + if(r3 == r0) { + pc=0x5d94c; continue; } - case 0x540d8: + case 0x5d8d8: 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= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + if((tmp&0x80)!=0) tmp |= 0xffffff00; r5 = tmp; - case 0x540e4: - r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + case 0x5d8e4: + r3= page[(r16+8)>>>2]; r3 = r3 + -1; - writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; - if (r3 >= 0) { - /* Next insn is delay slot */ - pc = 0x540ac; + page[(r16+8)>>>2] = r3; + if(r3 >= 0) { + pc=0x5d8ac; continue; } - r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2= page[(r16+24)>>>2]; r3 = r3 < r2 ? 1 : 0; - if (r3 != r0) { - /* Next insn is delay slot */ - pc = 0x54194; + if(r3 != r0) { + pc=0x5d994; 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= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; + r2= page[(r16+0)>>>2]; + addr=r2+0; + tmp= page[(addr)>>>2]; + tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; - if (r3 == r21) { - /* Next insn is delay slot */ - pc = 0x541ec; + if(r3 == r21) { + pc=0x5d9ec; 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 = 0x540d8; + page[(r16+0)>>>2] = r2; + if(r3 != r0) { + pc=0x5d8d8; continue; } - case 0x5414c: + case 0x5d94c: r2 = r18 + r0; - /* Next insn is delay slot */ - pc = 0x5416c; + pc=0x5d96c; continue; - case 0x54158: - addr = r16 + 12; - tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; - tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + case 0x5d958: + addr=r16+12; + tmp= page[(addr)>>>2]; + 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= page[(addr)>>>2]; + tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + -1; - 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]; + case 0x5d96c: + r31= page[(r29+52)>>>2]; + r21= page[(r29+48)>>>2]; + r20= page[(r29+44)>>>2]; + r19= page[(r29+40)>>>2]; + r18= page[(r29+36)>>>2]; + r17= page[(r29+32)>>>2]; + r16= page[(r29+28)>>>2]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x54194: + case 0x5d994: r4 = r19 + r0; r5 = r5 & 255; r6 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x541a8; - pc = 0x4d200; - run_4d200(); - return; - case 0x541a8: + r31=0x5d9a8; + pc=0x56a00; + run_56800(); return; + case 0x5d9a8: r2 = r2 + 1; - r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; - case 0x541b0: - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x540c8; + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + case 0x5d9b0: + if(r2 == r0) { + pc=0x5d8c8; continue; } r2 = r0 + -1; - /* Next insn is delay slot */ - pc = 0x5416c; + pc=0x5d96c; continue; - case 0x541c4: + case 0x5d9c4: r2 = r18 + -1; - r2 = (r2 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x54068; + r2 = (r2&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x5d868; 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= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r20 = r0 + 1; - /* Next insn is delay slot */ - pc = 0x5409c; + pc=0x5d89c; continue; - case 0x541ec: + case 0x5d9ec: r4 = r19 + r0; r5 = r0 + 10; r6 = r16 + r0; - /* Next insn is delay slot */ - r31 = 0x54200; - pc = 0x4d200; - run_4d200(); - 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: + r31=0x5da00; + pc=0x56a00; + run_56800(); return; + case 0x5da00: 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: + r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + pc=0x5d9b0; + continue; + case 0x5dc00: 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; + page[(r29+56)>>>2] = r18; + page[(r29+52)>>>2] = r17; + page[(r29+48)>>>2] = r16; + page[(r29+60)>>>2] = 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; + r18= page[(r28+-31412)>>>2]; + if(r5 == r0) { + pc=0x5dc8c; 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; + page[(r29+40)>>>2] = r5; + page[(r29+44)>>>2] = r6; + r31=0x5dc38; + pc=0x5a600; + run_5a000(); return; + case 0x5dc38: + r5= page[(r29+40)>>>2]; + r6= page[(r29+44)>>>2]; + page[(r29+16)>>>2] = r17; r4 = r16 + r0; r7 = r2 + r0; - /* Next insn is delay slot */ - pc = r18; - r31 = 0x54454; + pc=r18; + r31=0x5dc54; return; - case 0x54454: + case 0x5dc54: r3 = r0 + -1; - if (r2 != r3) { - /* Next insn is delay slot */ - pc = 0x54470; + if(r2 != r3) { + pc=0x5dc70; continue; } r2 = r0 + 138; - writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; - writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + page[(r17+0)>>>2] = r0; + page[(r16+0)>>>2] = 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]; + case 0x5dc70: + r31= page[(r29+60)>>>2]; + r18= page[(r29+56)>>>2]; + r17= page[(r29+52)>>>2]; + r16= page[(r29+48)>>>2]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x5448c: - /* Next insn is delay slot */ - r31 = 0x54494; - pc = 0x50e00; - run_50e00(); - return; - case 0x54494: + case 0x5dc8c: + r31=0x5dc94; + pc=0x5a600; + run_5a000(); return; + case 0x5dc94: r7 = r2 + r0; - writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r17; + page[(r29+16)>>>2] = r17; r4 = r16 + r0; r5 = r29 + 24; r6 = r0 + r0; - /* Next insn is delay slot */ - pc = r18; - r31 = 0x544b0; + pc=r18; + r31=0x5dcb0; return; - case 0x544b0: - /* Next insn is delay slot */ - pc = 0x54454; + case 0x5dcb0: + pc=0x5dc54; 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; + case 0x5de00: + if(r5 == r0) { + pc=0x5de24; continue; } - r2 = (r6 & 0xffffffffL) < (256 & 0xffffffffL) ? 1 : 0; - if (r2 == r0) { - /* Next insn is delay slot */ - pc = 0x54630; + r2 = (r6&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; + if(r2 == r0) { + pc=0x5de30; 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; + addr=r5+0; + tmp= page[(addr)>>>2]; + tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); + page[(addr)>>>2] = tmp; r2 = r0 + 1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x54624: + case 0x5de24: r2 = r0 + r0; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x54630: + case 0x5de30: r2 = r0 + 138; - writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + page[(r4+0)>>>2] = r2; r2 = r0 + -1; - /* Next insn is delay slot */ - pc = r31; + pc=r31; return; - case 0x547fc: - case 0x54800: - pc = 0x54800; + case 0x5dffc: + case 0x5e000: + pc=0x5e000; 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\"\\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\000\000\004Vc\020@(\030\036\004Vc`R\000\022KF3\003\034\000\000\000\022-Fc\025Na6\023NVk\011Jr*\036.\006)T\000\000'\\\014W\023\005ho9\022.4s=hDs:\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\024\177P\000\001(\010\000\000\nA\020\000\000S0@\000\005\032\030\000\000*\011\000\000\002Pj\000\000\024h \000\001'\016\000\000\n9P\000\000SS\000\000\005\036\024\000\000)t \000\002O8\000\000\024|p\000\001'r\000\000\n4\020\000\000S!\000\000\005\032\010\000\000)P@\000\002Sr\000\000\025\036\000\000\001+\007\000\000\nX8\000\000UJ\000\000\005-\010\000\000*K@\000\002T \000\000\025#\000\000\001*#\000\000\nV0\000\000U6@\000\005+P\000\000*^@\000\002V\002\000\000\025&p\000\001*P\000\000\nUX\000\000Tj\000\000\005&`\000\000+\024 \000\002Y\"\000\000\025J\020\000\001,Q\000\000\ne\010\000\000V(@\000\0052D\000\000+\024 \000\002Xt\000\000\025L\020\000\001,Y\000\000\neH\000\000V,@\000\0052d\000\000+\026 \000\002Y2\000\000\025G \000\001,:\000\000\nc0\000\000V\035\000\000\005k\\\000\000.c`\000\002un\000\000\027.p\000\001:w\000\000\013Zp\000\000]N\000\000\005hP\000\000.G \000\002tb\000\000\027'\000\000\001:?\000\000\013UH\000\000]8\000\000\005qh\000\000/\023\000\000\002y\"\000\000\027L\020\000\001r\000\000\013x \000\000_7@\000\005{<\000\000/Z`\000\002}V\000\000\027m0\000\001>k\000\000\013vX\000\000_5@\000\006\025l\000\0001\025 \000\003\011*\000\000\030JP\000\001E7\000\000\014+\030\000\000b*@\000\006\022T\000\0001\025 \000\003\011`\000\000\030M@\000\001DU\000\000\014(\000\000\000b*@\000\006\023p\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000bR\000\000\006\024l\000\0000{@\000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\n\010\000\000\030JP\000\001DU\000\000\014'@\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\022T\000\0001\025 \000\003\011*\000\000\030JP\000\001DU\000\000\014%(\000\000b*@\000\006\023P\000\0001G@\000\003\014\010\000\000\030@@\000\001F\000\000\000\014.@\000\000d\010@\000\006\030\020\000\0002\017\000\000\003\010\010\000\000\031\006p\000\001G3\000\000\014 \000\000c9@\000\006\037\020\000\0001\001\000\000\003\010\010\000\000\030@@\000\001D\004\000\000\014 \000\000b\002\000\000\006\020\020\000\0001\001\000\000\003\010\010\000\000\030@@\000\001D\004\000\000\014 \000\000b\002\000\000\006\026\020\000\0001\001\000\000\003\r^\000\000\030@@\000\001F\\\000\000\014 \000\000b\002\000\000\006\020\020\000\0001\001\000\000\003\010\010\000\000\030@@\000\001D\004\000\000\014 \000\000b\002\000\000\006\020\020\000\0001\001\000\000\003\010\010\000\000\030@@\000\001D\004\000\000\014 \000\000b\002\000\000\006\020\020\000\0001\001\000\000\003\010\010\000\000\030@@\000\001D\004\000\000\014 \000\000b\002\000\000\006\020\020\000\0001\001\000\000\003\010\010\000\000\030d`\000\001D\004\000\000\014 \000\000c\021\000\000\006:\\\000\0003G@\000\003\0342\000\000\031c`\000\001N\036\000\000\014qp\000\000g\017\000\000\006=H\000\0003G@\000\003\034<\000\000\031c`\000\001N\036\000\000\014|@\000\000g\025\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\036b5\031,7\"!Bs'\035-FbQrp2@\000\000\002%Xl2Yl\026b\011Xo1ZjF+IZi7\030.F{H\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\033-L-QZlf16@\000\000\000m63\031[ \000\000\0006[\031LMP\000\000\000\033-Lffh\000\000\000\022\\e\002+\020R \035\010\004W\031\025f%9H\005\002+L@%9J'\"\001\025f\n\000\000\000\000\002MJr4[nW\031\001Jr9\033n \000\000\000%9I.2+L@-\020\021M\026c\024@%9K\004\006c%\\e\020\011,B\001 Js\020\011.2Ih@%9B@\000\002\025dr7\\@\000\000\001.a9\033M\026s\034\000I7\031Mp\000\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\010h\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020\"p\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002\025\000\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013\002\000\000 Y\020\000\002\005a\000\000\020%x\000\001\002&\000\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 \\\020\000\002\005a\000\000\020.\010\000\001\002p@\000\010\027\004\000\000A8 \000\004\013B\000\000 I@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\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\021LX\000\001\014E\000\000\010e\020\000\000F\031 \000\0044H\000\000##`\000\002\031{\000\000\021DH\000\001\014z@\000\010g<\000\000G= \000\0049t\000\000#R@\000\002\036\031\000\000\021n\030\000\001\016n@\000\010uh\000\000G\025`\000\004;^\000\000#]\020\000\002!p\000\000\022\0108\000\001\020P@\000\011\011\024\000\000HG`\000\004CT\000\000$\030p\000\002 k\000\000\022\021H\000\001\021\011@\000\011&X\000\000J\r`\000\004Q\"\000\000%\024p\000\002)!\000\000\022IX\000\001\024<\000\000\011 P\000\000J@\000\000\004St\000\000%j0\000\002-\014\000\000\022j0\000\001\027\022\000\000\0118t\000\000KE@\000\004[f\000\000%M\020\000\002-l\000\000\022w@\000\001\032a\000\000\011P|\000\000M\016 \000\004j\032\000\000&Pp\000\0025\001\000\000\023%p\000\001\031~\000\000\011Up\000\000M9@\000\004s\014\000\000'\0040\000\0028=\000\000\023I\010\000\001\034E@\000\011d\024\000\000N\030@\000\004p\000\000\000'\030\000\000\0029j\rw\023%Ni7\030-@\000\000\000\0002\031,fK9Rt4[m`\000\001(o7H\014F+\025`l\000\000*'p\000\002R5\000\000\025\022X\000\001(n@\000\nEX\000\000U\000`\000\0055\020\000\000+40\000\002[\035\000\000\025^\030\000\001-\037\000\000\nhx\000\000VE\000\000\0054\024\000\000+\033\000\000\002Y8\000\000\025Y\000\000\0011\017\000\000\013\006|\000\000X6@\000\005C\036\000\000,\030`\000\002a'\000\000\026\011p\000\0010J@\000\013\003\014\000\000X\021\000\000\005EJ\000\000-\023`\000\002h_\000\000\026EP\000\0014'@\000\013\"\030\000\000Z\011`\000\005P<\000\000-\002P\000\002gc\000\000\026< \000\0014r@\000\013A\020\000\000[y\000\000\005_<\000\000-z \000\002oH\000\000\026z@\000\0017O\000\000\013W\000\000\013u\024\000\000_'\000\000\005yT\000\000/I0\000\002~l\000\000\030*X\000\001B6\000\000\014\023\034\000\000a\027\000\000\006\011&\000\0000F@\000\003\004+\000\000\030\"\020\000\001Ax\000\000\014\016D\000\000a<@\000\006\030V\000\0001=@\000\003\013g\000\000\030]`\000\001Ei@\000\014-P\000\000bj`\000\006\026D\000\0001.\000\000\003\nQ\000\000\030g\020\000\001IX@\000\014KH\000\000d[ \000\006%D\000\0002+\020\000\003\022:\000\000\031\023\010\000\001I\024\000\000\014GX\000\000d5`\000\006'p\000\0003$@\000\003\031e\000\000\031N\000\000\001Lj@\000\014f0\000\000f+ \000\0062H\000\0003\0230\000\003\030i\000\000\031DP\000\001M5E+MRn3H\rw3\025ds4^LV!\001Bd2\034LW\033MRn3H\rV{\021J.\000\000\000\000\002\r U\020\031\rv+L@n7]\004\007\033U`p7\\NB\003QPi9H\014\026#\021de9\\m\026s\034@m7Y\014R\003\031^r\020\035\r\006KL@m7\031-V{9Rc\027\000\000\000\000\000\000\000\000\000\033@\000\000\000\000\000\000\000\r`\000\000\000\000\000\017@\003p\000\000\000\010`\017`\000\000\000\000\000\r@\0030\000l\000\000\000\002\020\000\000\000\000\000\000\000\000\000\000L\000\000\000\004`\000\000\\&\000\000\000\001\000\000\000\000\010\000\000\001\010@\000\000\027\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\005zl\000\000\000\000\000\000\000\000\000\000\000\000\0114n,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.`\011X\002<\000\000\000\000\000\000\000\000\036\013\017FerY|v^-\000\000\000\000\000\000\000\000\000\003aP\000\000\000\000\000\000\000\002)\013J7Zmv[}v\177=@\000\000\000\001\036:\000\n@\000\000\000\000]@\000\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`P\000\024\016\000\000\000\000\000\000\000\000\000\000\000\000\0028\000\000\000\000\000\0008\014.\023\023Hfs\032Y$W)YL'3H,\022\013\004Ba\022\035\006G!QH$2\011Nc3Xnw\033]f\006\001\003A$qH\000\"2`\rfRV\000~\000\0350\000\000\000\000\001\000\000\000\000\003h\000\000\000\000\000\000\000\000\000\000\003\000@\000\020\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 Q0\034\000\004$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\005#z\000\014 \006\013D\000\005Rm<\\\002\000\000Ub`\000\000\000\0002!\002E$S(\000\000\000\000\000\000\000\000\000\000\000\000\000\003P\0004\000\000\000\0100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016T\000\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\000\000\000\000\003\020\000\000\000\000\000\n \000\000\000\000\000\034@\000\000\000\000\000I\000\000\000\000\000\0012\000\000\000\000\000\003$\000\000\000\000\000\007H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\004@\000\000\000\0002\031\000\000\000\000\001$R\000\000\000\000\003Id\000\000\000\000\011\024H\000\000\000\000\026+\020\000\000\000\0004Z \000\000\000\000y<@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\000\000\000\000\000\006p\000\000\000\000\000\025`\000\000\000\000\000;@\000\000\000\000\001\027\000\000\000\000\000\002n\000\000\000\000\000\006\\\000\000\000\000\000\0178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003@\000\001\020\000\000'\000\000\006 \000\001\016\000\000\024@\000\003\034\000\0009\000\000\0108\000\001\022\000\000\024p\000\002d\000\0001`\000\006H\000\000s@\000\017\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000L\000\000\000\000\000\003\030\000\000\000\000\000\n0\000\000\000\000\000\034`\000\000\000\000\000I`P \000\000\0013q8\\ \000\003&\000\000\000\000\000\007L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\000\000\000\000\021@\000\000\000\000\000C\000\000\000\000\000\001F\000\000\000\000\000\004\014\000\000\000\000\000\n\030\000\000\000\000\000\0300\000\000\000\000\0008`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H$\000\000\004@\003\021H\000\000\031\000\n%\020\000\000R\000\034N \000\001d\000I$@\000\004H\0012Y\000\000\013\020\003%R\000\000\032 \007Kd\000\000\037\017D\000\000\011Lj7\030\002gSyd`\000\000\004\002\001\000@ \002\011\004B!\020@\010\024\n\005\002A\000\030,\026\013\005B\000@`0\030\014\004\001!Ph4\032\010\003\003A`p8\020\007\007Capx \000\000\014FC1`t<\037\014\000\000\000\006 \001H\0002\000\014@\003\020\000\000\0009\000\016 \003H\000r\000\034@\000\000\002d\000Y\000\026 \005H\0012\000\000\000\017\020\003d\000y\000\036 \007H\000\000\000L@\023\020\004d\001\031\000& \000\000\002r\000\\@\027\020\005d\0019\000. \rH\0032\000l@\033\020\006d\000\000\000> \017H\003r\000|@\037\020\000\000\000\000\000\006`\003X\0016\000=@\000\011=~o[\000>`\011x\000\000\000\016E \000\000t*\000\017G\"P\000\000:\025\000\000\003Q(\000\000\000\000\000\000\003iT\000\000\036M \003ytj\000\000\017&P\000\000z5\000\000\000\000\000\000\000]*@\000\005jT\000_.U \000\002u*\000\000\027*P\000\000\000\000\000\000\017W(\000\000}:@\017wkT\000\000>] \000\003uj\000\000\000\000\000\000\002;\025\000\000\023Y(\002?\035J@\000\011lT\000\000Ne \000\000\000\000\000\000/6P\000\002{5\000/w[(\000\001=Z@\000\013mT\000\000^m \000\006w*\000\0007:P\006\177;U\000\000\033](\000\001]j@\000\000\000\000\000\000~} \000\007wj\000\177\177>P\000\003{u\000\000\037_(\000\000\000\000\000\000\000\000\000\000\000\017E`\000\001|n\000\000\027jp\000\001~w\000\000\000\000\000\000\000\000\000\000\000\r~\\\000\000\177}`\000\000\000\000\000\000\003 P\000\000\032\005\000\003aP(\000\000\r\002@\000\000h\024\000\000\006A \000\0014J\000\000\013$P\001iY\177r!}U\010BhaBc7\\`\000\000\000\000a9Z-`\000\000\000\0008\033np\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007dgwVCgt\000`\000\000\000\000\000\000\000\000\001\177E8\001P\000\000\000\000\177p\000\000\000\000\000\000\000?|\000\000\000\000\000\000\000\037~$\037Z\000\022!}P\002-Kq\000\031\020~h\001{)t@\0216/D\001\027{; \n$\037Z\000XF\035\020\005vSi\0001#W\010\003\026ex@\032\032sD\001W{; \rq}Z\000r!}P\007+ m\000<#\016H\003na4@\037ZO$\002\001|L \020(ub\001\004\0206\020\010-Kq\000CQ#\010\004#.8@\"M\025D\002\027{; \021XlZ\001\017\017mP\011\005G-\000I\020~`\n\027f\006\0007\023H@\000TS|\000\011j}\010\003j4n@\030\r[\010\001\025LO\000\004\034A\002\000\177\024,0\005/=;\0001,\0338\000Hn\035\000\010$nH\001`\003\022 \002w(\022\000hdC@\007x;k\000\007\026\022H\002N>t\000\020#/T\000.]Q\000\010'&8\0008\011V@\002}|A\000\0162\0350\000s\003)@\007\037$p\001\004/b`\013odP\000\035G\177\000\004_\177^\000\0013\000x\003^/\010@\0215P(\000m\017[ \0033{\036\000\023ra\020\005]\036F\000\017lip\001?j\026@\016R=h\001Guy \017\013lz\000\003N>p\004)%\022\000:M?X\001?1\017@\021Uh \000V\001L\000\0047qv\0005j~\000\006>x \000&^C0\000;)q@\022\026\nx\001f\rB\000\006,f\n\000/E\024\000\003!\001\r\000?{\010\000\001\032s\023@\006\0200\030\000\025+2@\007\035#\022\00008O0\006\002\030k\037~$\037Z\000\000\000\000\017ND!4\000\000\000\000\007OB\0321\000\000\000\000\003[c\030Q0\000\000\000\001g`\033A`\000\000\000\000pz\022H\010\000\000\000\0006q`D(\000\000\000\000\032Z>1h\000\000\000\000\000\000\000\000\010\000\000\000\000`\000\000\000\010\000\000\000\000d\031@\000\000\000\000\000\000\006\014`\000\000\000\000\000\000\001\006\000\000\000\011\024r\030\000i7\031@\004r\005\034\0007\030-`\001@b2\031M\006S1\\p9 PH4\"\025\014\000\000\000\000\003\001Dd3\032\r&c9`ra1\030lF+\030\000\000\000\000\005\006sUXl\024@\000\000\000\024S0\000\001%r`\000\n/\026\000\000Rbp\000\005\027K\000\000)l\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\001U@\000\030~(\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\003,\000\0001|0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\006Z\000\000cx \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000\032p\000\003\020\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000`5p\000\006 \002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001@l\000\000\014@\024\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\001X@\000\031\000(\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\0032\000\0001~p\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\006f\000\000c} \000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030\021,\000\001H\014@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000#\020\000\003\020\037\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000`6@\000\006 :\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001@m \000\014@l\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@\0000\0330\000\000\000\005 \000\000\000\001\000\000\000\001(\000\014\006r\000\000\000\001(\000\000\000\000 \000\000\000(\000\003\001^\000\000\000\000*\000\000\000\000\010\000\000\000\011@\000`7p\000\000\000\n@\000\000\000\002\000\000\000\002 \000\030\016\004\000\000\000\002P\000\000\000\000@\000\000\000D\000\006\003D\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`\0000\034P\000\000\000\005 \000\000\000\001\000\000\000\000p\000\014\007\030\000\000\000\001(\000\000\000\000 \000\000\000\032\000\003\001g\000\000\000\000*\000\000\000\000\010\000\000\000\006\000\000`:\000\000\000\000\n@\000\000\000\002\000\000\000\0010\000\030\016H\000\000\000\002P\000\000\000\000@\000\000\000(\000\006\003T\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 \0000\035P\000\000\000\004P\000\000\000\002\000\000\000\0018\000\014\007:\000\000\000\001\020\000\000\000\000 \000\000\000\014\000\003\001p\000\000\000\000\"\000\000\000\000\020\000\000\000\r@\000`<0\000\000\000\010@\000\000\000\004\000\000\000\003 \000\030\017\024\000\000\000\002\020\000\000\000\001\000\000\000\000d\000\006\003g\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\0000\036p\000\000\000\004\000\000\000\000\002\000\000\000\001x\000\014\007b\000\000\000\000x\000\000\000\000@\000\000\000<\000\003\001z\000\000\000\000\036\000\000\000\000\020\000\000\000\016@\000`?\020\000\000\000\007@\000\000\000\004\000\000\000\003@\000\030\017|\000\000\000\001`\000\000\000\000@\000\000\000$\000\006\004\002\000\000\000\0008\000\000\000\000\020\000\000\000\010\000\001A\001@\000\000\000\016\000\000\000\000\004\000\000\000\001`\0000 P\000\000\000\003 \000\000\000\002\000\000\000\002(\000\014\010\032\000\000\000\000h\000\000\000\000@\000\000\000H\000\003\002\010@\000\000\000\032\000\000\000\000\020\000\000\000\021@\000`Bp\000\000\000\006@\000\000\000\004\000\000\000\004 \000\030\020h\000\000\000\001@\000\000\000\001\000\000\000\001\030\000\006\004\037\000\000\000\000,\000\000\000\000 \000\000\000!\000\001A\011\000\000\000\000\n\000\000\000\000\010\000\000\000\011`\0000\"H\000\000\000\002 \000\000\000\002\000\000\000\002P\000\014\010X\000\000\000\000H\000\000\000\000@\000\000\000R\000\003\002\026\000\000\000\000\020\000\000\000\000\020\000\000\000\024\000\000`F\000\000\000\000\003@\000\000\000\004\000\000\000\0050\000\030\021L\000\000\000\000@\000\000\000\000\000\000\000\000\020\000\006\0047\000\000\000\000\014\000\000\000\000\000\000\000\000\003\000\001A\016@\000\000\000\002\000\000\000\000\000\000\000\000\000@\0000#h\000\000\000\000 \000\000\000\000\000\000\000\000\010\000\014\011\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\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\001\000\001Aj \000\014Bb\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\003T\000\000\031\0058\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\007+\000\0002\np\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\016Z\000\000d\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030\035<\000\001H) \000\000\000\000\000\000\000\000\000\000\000\000\000 \0000;\010\000\003\020Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000`v0\000\006!\037\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001Am \000\014B8\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\003[@\000\031\004d\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\0079\000\0002\0110\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\016t\000\000d\0250\000\003\021\000\000\000\000\000Aj\000\000\000\000\000\014(\000\000\000\000\001\007(\000\000\000\000\00000\000\000\000\000\004\035 \000\000\000\000\001L\000\000\000\000\000\002u\000\000\000\000\000\005x\000\000\000\000\001\003T\000\000\000\000\000\027(\000\000\000\000\004\016P\000\000\000\000\000[@\000\000\000\000\020:@\000\000\000\000\002g\000\000\000\000\000Kj\000\000\000\000\000\013\000\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@\000`}`\000\0063@\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001A{`\000\014g\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003x\000\000\031M|\036\035-g#%hl2Y\007`\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\031\006D\000\001H4 \000\000\000\000\000\000a6\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\001C1\000\000\000\010\021\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006b@\000\000\020\034\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rF\000\000\000 P\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033\016\000\000\000@X\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0306 \000\000\001\002p\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000\"X\000\000\002\001 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000`6@\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C2 \000\000\010\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006e\000\000\000\030#\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rK\000\000\0000:\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033\030\000\000\000a$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\03064\000\000\001A8\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000lx\000\000\003\005p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aZ\020\000\000\006\002`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C4`\000\000\014\010@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006j@\000\000\030\005\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rV\000\000\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\0330\000\000\001 \010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0306h\000\000\002@\010\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000m`\000\000\005\0000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000a[`\000\000\n\004@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C7`\000\000\024\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006p\000\000\000(\n\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rb\000\000\000P,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\033H\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 \0000n(\000\000\014\013@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\\`\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\003\006s@\000\000`\\\000\000\000\000\000\000\000\000\000\000\000\000\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\014\033\022\000\000\000\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030\021,\000\000\000\000H\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000\033 \000\000\000\001p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aXp\000\000\000\005 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C1 \000\000\000\r@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006b\000\000\000\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rF\000\000\000\000N\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033\020\000\000\000\0014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0307 \000\000\004\000 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0000nH\000\000\004\001@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000a] \000\000\010\003@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C:`\000\000`\011@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006v@\000\001@3\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\ro\000\000\003\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033b\000\000\006\003L\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0307L\000\000\014\011\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000o(\000\000\030\0260\000\000\000\000\000\000\000\000\000\000\000\000\000@\000a^p\000\00004`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C> \000\000`y@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006}@\000\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\r|\000\000\003\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033z\000\000\006\004\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0307|\000\000\014\010\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000\032p\000\000\004\002`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000a`\020\000\000\010\005`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C@@\000\000\020\014\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\001@\000\002!C\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\004\000\000\004CF\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034\n\000\000\001\000d\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0308\030\000\000\002\021P\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000p8\000\000\004\0030\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aa\000\000\000\010\007\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CB \000\0000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\005\000\000\000`\003\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\013\000\000\001@6\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034\030\000\000\003\001l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\03084\000\000\006\004\020\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000pp\000\000\014\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aap\000\000\030\n`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CD\000\000\0000%@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\014\005\000\000\000`[\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\021\000\000\001AV\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034$\000\000\003\003l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0308L\000\000\006\rX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000q \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\001CE \000\000\023\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\013\000\000\000&\005\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\027\000\000\000L\014\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\0340\000\000\001\030\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0308d\000\000\002 H\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000lH\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000@\000`E0\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\003\006c@\000\000\004\024\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\rE\000\000\000\0004\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033\010\000\000\000\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0306\030\000\000\000\"0\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000l@\000\000\000E@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ac \000\000\020\000@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C:\000\000\000 \002@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\r@\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\034\000\000\001\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034:\000\000\002\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0308x\000\000\020\004 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0000qx\000\000 \n@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ad\000\000\0008\030@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CH \000\000pA\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\021\000\000\000 \035\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016#\000\000\000@<\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034H\000\000\001\000|\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0309\024\000\000\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000r0\000\000\014\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000adp\000\000\030\006`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CJ\000\000\0000\025@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\024@\000\000`;\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016*\000\000\001A\026\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034V\000\000\003\002l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\03090\000\000\006\006X\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000rh\000\000\014\0170\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ae`\000\000\030\"`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CK`\000\0000M@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007\030\000\000\000a+\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\0161\000\000\001Bv\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\034d\000\000\003\007,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0309L\000\000\006\017X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000s \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\001CM \000\0000e@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\007\033\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\014\034n\000\000\011\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0309d\000\000\022\0018\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000sX\000\000$\004p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000agP\000\000H\r`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CO`\000\001\020#@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007 @\000\002 W\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016C\000\000\004AN\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\035\n\000\000\011\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030:\034\000\000\022\0108\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000tH\000\000$\022p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ai0\000\000H)`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CS \000\001\020[@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007'@\000\002!G\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016Q\000\000\004C.\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\035&\000\000\011\007\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030:T\000\000\022\0178\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000u8\000\000\024\001p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ak\020\000\000(\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CV`\000\000P\027@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007.@\000\001 ?\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016_\000\000\002A\036\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\035B\000\000\005\002|\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030;\014\000\000\n\006x\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000v(\000\000\024\017p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000alp\000\000(#`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001CZ \000\000PO@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\0075@\000\001!/\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016m\000\000\002B~\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\035^\000\000\005\006<\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030;D\000\000\n\rx\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000w\030\000\000\024\035p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000anP\000\000(?`\000\000\000\000\000\000\000\000\000\000\000\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\006d@\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\004+\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\006h\000\000\000\0004\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\0306\034\000\000\000\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000l(\000\000\000\003\020\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aX@\000\000\000\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C1@\000\000\000\022@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\006d\000\000\000\000+\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016\032\000\000\001\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\0342\000\000\001\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030;\\\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000w@\000\000\004\002 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000ao\020\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001C^@\000\0000-\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007=@\000\000`z\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\016|\000\000\001C4\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\035z\000\000\003\007h\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030;x\000\000\002\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000wx\000\000\004\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000ap\000\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\003\007<@\000\001\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\017\001\000\000\000@\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\036\004\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\0000x\030\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\001Ca\000\000\000\000\030@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007B@\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\017\006\000\000\000\000f\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\036\016\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030< \000\000\000\003(\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000xH\000\000\000\006`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000aq \000\000\000\r`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001Cb`\000\000\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\007F\000\000\000 *\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\017\r\000\000\000@V\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\036\034\000\000\000\001d\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030<<\000\000\002\002`\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000y\000\000\000\004\005P\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ar\020\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\003\007I\000\000\000 #\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\017\023\000\000\000@H\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\033H\000\000\001\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030`\014\000\000w@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0001@ \000\001y@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000c\000`\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001?, \000\006|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\014\004\000\000\rx\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\025\017\000\000\036\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0141f\000\000= \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030`$\000\000z@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0001@X\000\001n@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000c\001@\000\003]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001F\003 \000\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\003w@\000\016p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\007n\000\000\035X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\014\017`\000\000; \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030`<\000\000z \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0001A\010\000\001k@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000c\002 \000\003W\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001F\005\000\000\007,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\014\n@\000\016X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\030\027\000\000\036@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\01402\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030a,\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0001B`\000\001r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000be@\000\003R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001EK \000\007\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\013\027@\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\030.\000\000\034`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0140^\000\00090\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030 \000\000\000r@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0001C\000\000\001d@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000`2P\000\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001@e`\000\007\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\014\031\000\000\016\034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\0304\000\000\036\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0140l\000\0008`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\030a`\000\000q \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0000BH\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000c\007 \000\003C\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001F\017\000\000\007\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\014 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006\030D\000\000\033x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0141\n\000\0007p\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\0141\034\000\000c\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(\000\000\000\000\000\000\014a\016\000\000f\014\020\000\0060{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030k8\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000f\022`\000\0061\026\000\0003\011@\000\003\030L\000\000\031Dh\000\001L&@\000\014b8\000\000f\023@\000\0061\036\000\0003\011p\000\003\030P\000\000\031E\000\000\001L(@\000\014bD\000\000f\024@\000\0061$\000\0003\n0\000\003\030S\000\000\031E \000\001L*\000\000\014bT\000\000f\025 \000\0061,\000\0003\n`\000\003\030W\000\000\031E8\000\001L,\000\000\014b`\000\000f\026 \000\00612\000\0003\013 \000\003\030Z\000\000\031EX\000\001L-@\000\014bp\000\000f\027\000\000\0061:\000\0003\013P\000\003\030^\000\000\031Ep\000\001L/@\000\014b|\000\000f\030\000\000\0061@\000\0003\014\020\000\003\030a\000\000\031F\020\000\001L1\000\000\014c\014\000\000f\030`\000\0061H\000\0003\014@\000\003\030e\000\000\031F(\000\001L3\000\000\014c\030\000\000f\031`\000\0061N\000\0003\r\000\000\003\030h\000\000\031FH\000\001L4@\000\014c(\000\000f\032@\000\0061V\000\0003\r0\000\003\030l\000\000\031F`\000\001L6@\000\014c4\000\000f\033@\000\0061\\\000\0003\rp\000\003\030o\000\000\031G\000\000\001L8\000\000\014cD\000\000f\034 \000\0061d\000\0003\016 \000\003\030s\000\000\031G\030\000\001L:\000\000\014cP\000\000f\035 \000\0061j\000\0003\016`\000\003\030v\000\000\031G8\000\001L;@\000\014c`\000\000f\036\000\000\0061r\000\0003\017\020\000\003\030z\000\000\031GP\000\001L=@\000\014cl\000\000f\037\000\000\0061x\000\0003\017P\000\003\030}\000\000\031Gp\000\001L?\000\000\014c|\000\000f\037`\000\0062\000\000\0003\020\000\000\003\031\001\000\000\031H\010\000\001LA\000\000\014d\010\000\000f `\000\0062\006\000\0003\020@\000\003\031\004\000\000\031H(\000\001LB@\000\014d\030\000\000f!@\000\0062\016\000\0003\020p\000\003\031\010\000\000\031H@\000\001LD@\000\014d$\000\000f\"@\000\0062\024\000\0003\0210\000\003\031\013\000\000\031H`\000\001LF\000\000\014d4\000\000f# \000\0062\034\000\0003\021`\000\003\031\017\000\000\031Hx\000\001LH\000\000\014d@\000\000f$ \000\0062\"\000\0003\022 \000\003\031\022\000\000\031I\030\000\001LI@\000\014dP\000\000f%\000\000\0062*\000\0003\022P\000\003\031\026\000\000\031I0\000\001LK@\000\014d\\\000\000f&\000\000\00620\000\0003\023\020\000\003\031\031\000\000\031IP\000\001LM\000\000\014dl\000\000f&`\000\00628\000\0003\023@\000\003\031\035\000\000\031Ih\000\001LO\000\000\014dx\000\000f'`\000\0062>\000\0003\024\000\000\003\031 \000\000\031J\010\000\001LP@\000\014e\010\000\000f(@\000\0062F\000\0003\0240\000\003\031$\000\000\031J \000\001LR@\000\014e\024\000\000f)@\000\0062L\000\0003\024p\000\003\031'\000\000\031J@\000\001LT\000\000\014e$\000\000f* \000\0062T\000\0003\025 \000\003\031+\000\000\031JX\000\001LV\000\000\014e0\000\000f+ \000\0062Z\000\0003\025`\000\003\031.\000\000\031Jx\000\001LW@\000\014e@\000\000f,\000\000\0062b\000\0003\026\020\000\003\0312\000\000\031K\020\000\001LY@\000\014eL\000\000f-\000\000\0062h\000\0003\026P\000\003\0315\000\000\031K0\000\001L[\000\000\014e\\\000\000f-`\000\0062p\000\0003\027\000\000\003\0319\000\000\031KH\000\001L]\000\000\014eh\000\000f.`\000\0062v\000\0003\027@\000\003\031<\000\000\031Kh\000\001L^@\000\014ex\000\000f/@\000\0062~\000\0003\027p\000\003\031@\000\000\031L\000\000\001L`@\000\014f\004\000\000f0@\000\0063\004\000\0003\0300\000\003\031C\000\000\031L \000\001Lb\000\000\014f\024\000\000f1 \000\0063\014\000\0003\030`\000\003\031G\000\000\031L8\000\001Ld\000\000\014f \000\000f2 \000\0063\022\000\0003\031 \000\003\031J\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\001BX \000\013p\014\000\000_\000`\000\005x\006\000\000/@0\000\002|\003\000\000\027`\030\000\001>\001@\000\013p\014\000\000_\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\004\000\000\000\000\000\000\000\000\005\177`\000\000\000\000\000\000\000\177p\000\000\000\000\000\000\000@\022\000\000\000\000\000\000\000\000\000:\000\000\000\003T\000\000\000\035\020\000\000\001g\000\000\0003CP\000\003\020j\007\023\010\000\000\000\000\000\000'\177\177\177\177\177\177\177\177|\000\006/\004\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; - default: - throw new ExecutionException( - "invalid address 0x" + Long.toString(this.pc & 0xffffffffL, 16) + ": r2: " + r2); + while(state == RUNNING) { + switch(pc>>>11) { + case 0x20: run_10000(); break; + case 0x21: run_10800(); break; + case 0x22: run_11000(); break; + case 0x23: run_11800(); break; + case 0x24: run_12000(); break; + case 0x25: run_12800(); break; + case 0x26: run_13000(); break; + case 0x27: run_13800(); break; + case 0x28: run_14000(); break; + case 0x29: run_14800(); break; + case 0x2a: run_15000(); break; + case 0x2b: run_15800(); break; + case 0x2c: run_16000(); break; + case 0x2d: run_16800(); break; + case 0x2e: run_17000(); break; + case 0x2f: run_17800(); break; + case 0x30: run_18000(); break; + case 0x31: run_18800(); break; + case 0x32: run_19000(); break; + case 0x33: run_19800(); break; + case 0x34: run_1a000(); break; + case 0x35: run_1a800(); break; + case 0x36: run_1b000(); break; + case 0x37: run_1b800(); break; + case 0x38: run_1c000(); break; + case 0x39: run_1c800(); break; + case 0x3a: run_1d000(); break; + case 0x3b: run_1d800(); break; + case 0x3c: run_1e000(); break; + case 0x3d: run_1e800(); break; + case 0x3e: run_1f000(); break; + case 0x3f: run_1f800(); break; + case 0x40: run_20000(); break; + case 0x41: run_20800(); break; + case 0x42: run_21000(); break; + case 0x43: run_21800(); break; + case 0x44: run_22000(); break; + case 0x45: run_22800(); break; + case 0x46: run_23000(); break; + case 0x47: run_23800(); break; + case 0x48: run_24000(); break; + case 0x49: run_24800(); break; + case 0x4a: run_25000(); break; + case 0x4b: run_25800(); break; + case 0x4c: run_26000(); break; + case 0x4d: run_26800(); break; + case 0x4e: run_27000(); break; + case 0x4f: run_27800(); break; + case 0x50: run_28000(); break; + case 0x51: run_28800(); break; + case 0x52: run_29000(); break; + case 0x53: run_29800(); break; + case 0x54: run_2a000(); break; + case 0x55: run_2a800(); break; + case 0x56: run_2b000(); break; + case 0x57: run_2b800(); break; + case 0x58: run_2c000(); break; + case 0x59: run_2c800(); break; + case 0x5a: run_2d000(); break; + case 0x5b: run_2d800(); break; + case 0x5c: run_2e000(); break; + case 0x5d: run_2e800(); break; + case 0x5e: run_2f000(); break; + case 0x5f: run_2f800(); break; + case 0x60: run_30000(); break; + case 0x61: run_30800(); break; + case 0x62: run_31000(); break; + case 0x63: run_31800(); break; + case 0x64: run_32000(); break; + case 0x65: run_32800(); break; + case 0x66: run_33000(); break; + case 0x67: run_33800(); break; + case 0x68: run_34000(); break; + case 0x69: run_34800(); break; + case 0x6a: run_35000(); break; + case 0x6b: run_35800(); break; + case 0x6c: run_36000(); break; + case 0x6d: run_36800(); break; + case 0x6e: run_37000(); break; + case 0x6f: run_37800(); break; + case 0x70: run_38000(); break; + case 0x71: run_38800(); break; + case 0x72: run_39000(); break; + case 0x73: run_39800(); break; + case 0x74: run_3a000(); break; + case 0x75: run_3a800(); break; + case 0x76: run_3b000(); break; + case 0x77: run_3b800(); break; + case 0x78: run_3c000(); break; + case 0x79: run_3c800(); break; + case 0x7a: run_3d000(); break; + case 0x7b: run_3d800(); break; + case 0x7c: run_3e000(); break; + case 0x7d: run_3e800(); break; + case 0x7e: run_3f000(); break; + case 0x7f: run_3f800(); break; + case 0x80: run_40000(); break; + case 0x81: run_40800(); break; + case 0x82: run_41000(); break; + case 0x83: run_41800(); break; + case 0x84: run_42000(); break; + case 0x85: run_42800(); break; + case 0x86: run_43000(); break; + case 0x87: run_43800(); break; + case 0x88: run_44000(); break; + case 0x89: run_44800(); break; + case 0x8a: run_45000(); break; + case 0x8b: run_45800(); break; + case 0x8c: run_46000(); break; + case 0x8d: run_46800(); break; + case 0x8e: run_47000(); break; + case 0x8f: run_47800(); break; + case 0x90: run_48000(); break; + case 0x91: run_48800(); break; + case 0x92: run_49000(); break; + case 0x93: run_49800(); break; + case 0x94: run_4a000(); break; + case 0x95: run_4a800(); break; + case 0x96: run_4b000(); break; + case 0x97: run_4b800(); break; + case 0x98: run_4c000(); break; + case 0x99: run_4c800(); break; + case 0x9a: run_4d000(); break; + case 0x9b: run_4d800(); break; + case 0x9c: run_4e000(); break; + case 0x9d: run_4e800(); break; + case 0x9e: run_4f000(); break; + case 0x9f: run_4f800(); break; + case 0xa0: run_50000(); break; + case 0xa1: run_50800(); break; + case 0xa2: run_51000(); break; + case 0xa3: run_51800(); break; + case 0xa4: run_52000(); break; + case 0xa5: run_52800(); break; + case 0xa6: run_53000(); break; + case 0xa7: run_53800(); break; + case 0xa8: run_54000(); break; + case 0xa9: run_54800(); break; + case 0xaa: run_55000(); break; + case 0xab: run_55800(); break; + case 0xac: run_56000(); break; + case 0xad: run_56800(); break; + case 0xae: run_57000(); break; + case 0xaf: run_57800(); break; + case 0xb0: run_58000(); break; + case 0xb1: run_58800(); break; + case 0xb2: run_59000(); break; + case 0xb3: run_59800(); break; + case 0xb4: run_5a000(); break; + case 0xb5: run_5a800(); break; + case 0xb6: run_5b000(); break; + case 0xb7: run_5b800(); break; + case 0xb8: run_5c000(); break; + case 0xb9: run_5c800(); break; + case 0xba: run_5d000(); break; + case 0xbb: run_5d800(); break; + default: throw new ExecutionException("invalid address 0x" + Long.toString(this.pc&0xffffffffL,16) + ": r2: " + r2); } } } public AcmeCrossAssembler() { - 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; + super(4194304,1); + initPages(_data1,0x5e000,false); + initPages(_data2,0x5e008,false); + initPages(_data3,0x5f000,true); + initPages(_data4,0x63ba0,false); + initPages(_data5,0x666c0,false); + clearPages(0x66c10,0x26); + clearPages(0x66ca8,0x392); } + protected int entryPoint() { return 0x10400; } + protected int heapStart() { return 0x67af0; } + protected int gp() { return 0x6e6c0; } public static void main(String[] args) throws Exception { AcmeCrossAssembler me = new AcmeCrossAssembler(); - int status = me.run("jace.assembly.AcmeCrossAssembler", 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("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)); + symbols.put("strcpy",Integer.valueOf(0x51800)); + symbols.put("cliargs_get_rest",Integer.valueOf(0x1b400)); + symbols.put("flow_store_doloop_condition",Integer.valueOf(0x1e600)); + symbols.put("fabs",Integer.valueOf(0x43600)); + symbols.put("typesystem_want_nonaddr",Integer.valueOf(0x42c00)); + symbols.put("vcpu_set_pc",Integer.valueOf(0x36800)); + symbols.put("section_new_cheap_scope",Integer.valueOf(0x3fc00)); + symbols.put("check_ifdef_condition",Integer.valueOf(0x1e000)); + symbols.put("input_read_and_lower_keyword",Integer.valueOf(0x26e00)); + symbols.put("printf",Integer.valueOf(0x4f200)); + symbols.put("throw_message",Integer.valueOf(0x1fc00)); + symbols.put("outbuf_set_outfile_limit",Integer.valueOf(0x34c00)); + symbols.put("input_skip_remainder",Integer.valueOf(0x23800)); + symbols.put("GetByte",Integer.valueOf(0x23000)); + symbols.put("safe_malloc",Integer.valueOf(0x20200)); + symbols.put("output_get_xor",Integer.valueOf(0x36400)); + symbols.put("symbol_fix_forward_anon_name",Integer.valueOf(0x41800)); + symbols.put("memmove",Integer.valueOf(0x5ae00)); + symbols.put("flow_do_while",Integer.valueOf(0x1ea00)); + symbols.put("input_unescape_dynabuf",Integer.valueOf(0x24c00)); + symbols.put("keyword_is_r65c02_mnemo",Integer.valueOf(0x2ea00)); + symbols.put("section_new",Integer.valueOf(0x3fa00)); + symbols.put("parser_set_nowarn_prefix",Integer.valueOf(0x1f800)); + symbols.put("input_quoted_to_dynabuf",Integer.valueOf(0x24800)); + symbols.put("output_passinit",Integer.valueOf(0x35c00)); + symbols.put("dynabuf_enlarge",Integer.valueOf(0x1c000)); + symbols.put("parser_change_nowarn_block_flag",Integer.valueOf(0x1f400)); + symbols.put("keyword_is_w65c02_mnemo",Integer.valueOf(0x2f800)); + symbols.put("getenv",Integer.valueOf(0x4d800)); + symbols.put("floor",Integer.valueOf(0x48200)); + symbols.put("input_readscopeandsymbolname",Integer.valueOf(0x26200)); + symbols.put("parser_set_addr_prefix",Integer.valueOf(0x1f600)); + symbols.put("pseudopc_end_all",Integer.valueOf(0x37400)); + symbols.put("parse_assignment",Integer.valueOf(0x1fa00)); + symbols.put("flow_store_while_condition",Integer.valueOf(0x1e800)); + symbols.put("getpagesize",Integer.valueOf(0x56fd0)); + symbols.put("outputfile_set_filename",Integer.valueOf(0x35200)); + symbols.put("keyword_is_65ce02_mnemo",Integer.valueOf(0x30600)); + symbols.put("input_read_keyword",Integer.valueOf(0x26600)); + symbols.put("keyword_is_4502_mnemo",Integer.valueOf(0x31400)); + symbols.put("memcpy",Integer.valueOf(0x56fe0)); + symbols.put("ALU_any_result",Integer.valueOf(0x1aa00)); + symbols.put("output_setdefault",Integer.valueOf(0x34800)); + symbols.put("puts",Integer.valueOf(0x4f800)); + symbols.put("malloc",Integer.valueOf(0x4de00)); + symbols.put("isatty",Integer.valueOf(0x5a400)); + symbols.put("keyword_is_65816_mnemo",Integer.valueOf(0x33000)); + symbols.put("symbol_define",Integer.valueOf(0x41200)); + symbols.put("outbuf_set_outfile_start",Integer.valueOf(0x34a00)); + symbols.put("macro_parse_call",Integer.valueOf(0x28800)); + symbols.put("keyword_is_nmos6502_mnemo",Integer.valueOf(0x2c000)); + symbols.put("ACME_finalize",Integer.valueOf(0x12000)); + symbols.put("output_set_xor",Integer.valueOf(0x36600)); + symbols.put("input_accept_comma",Integer.valueOf(0x27c00)); + symbols.put("parse_until_eob_or_eof",Integer.valueOf(0x20800)); + symbols.put("input_read_input_filename",Integer.valueOf(0x27800)); + symbols.put("tree_hard_scan",Integer.valueOf(0x42800)); + symbols.put("fflush",Integer.valueOf(0x4a600)); + symbols.put("dynabuf_add_string",Integer.valueOf(0x1c600)); + symbols.put("cliargs_safe_get_next",Integer.valueOf(0x1b000)); + symbols.put("encoding_load_from_file",Integer.valueOf(0x1da00)); + symbols.put("dynabuf_append",Integer.valueOf(0x1c400)); + symbols.put("keyword_is_6502_mnemo",Integer.valueOf(0x2b200)); + symbols.put("vcpu_check_and_set_reg_length",Integer.valueOf(0x1b800)); + symbols.put("strtol",Integer.valueOf(0x52000)); + symbols.put("encoding_passinit",Integer.valueOf(0x1d800)); + symbols.put("rint",Integer.valueOf(0x48c00)); + symbols.put("Throw_first_pass_warning",Integer.valueOf(0x21200)); + symbols.put("outputfile_prefer_cbm_format",Integer.valueOf(0x35000)); + symbols.put("input_read_output_filename",Integer.valueOf(0x27a00)); + symbols.put("includepaths_open_ro",Integer.valueOf(0x28200)); + symbols.put("fstat",Integer.valueOf(0x5ce00)); + symbols.put("fprintf",Integer.valueOf(0x4b800)); + symbols.put("cputype_passinit",Integer.valueOf(0x1ba00)); + symbols.put("parse_optional_block",Integer.valueOf(0x21000)); + symbols.put("cputype_find",Integer.valueOf(0x1b600)); + symbols.put("pseudopc_end",Integer.valueOf(0x37200)); + symbols.put("fseek",Integer.valueOf(0x4ce00)); + symbols.put("output_save_file",Integer.valueOf(0x35600)); + symbols.put("dynabuf_add_bytes",Integer.valueOf(0x1c800)); + symbols.put("cos",Integer.valueOf(0x43400)); + symbols.put("memchr",Integer.valueOf(0x5ac00)); + symbols.put("output_le16",Integer.valueOf(0x22000)); + symbols.put("symbol_find",Integer.valueOf(0x40c00)); + symbols.put("sin",Integer.valueOf(0x43800)); + symbols.put("pseudopc_unpseudo",Integer.valueOf(0x37600)); + symbols.put("dynabuf_clear",Integer.valueOf(0x1be00)); + symbols.put("output_8",Integer.valueOf(0x21c00)); + symbols.put("strncmp",Integer.valueOf(0x51a00)); + symbols.put("pow",Integer.valueOf(0x44000)); + symbols.put("pseudopc_start",Integer.valueOf(0x37000)); + symbols.put("realloc",Integer.valueOf(0x4fa00)); + symbols.put("vcpu_get_statement_size",Integer.valueOf(0x36c00)); + symbols.put("memcmp",Integer.valueOf(0x4ec00)); + symbols.put("fread",Integer.valueOf(0x4c000)); + symbols.put("encoding_find",Integer.valueOf(0x1dc00)); + symbols.put("fopen",Integer.valueOf(0x4b600)); + symbols.put("memset",Integer.valueOf(0x56ff0)); + symbols.put("main",Integer.valueOf(0x12400)); + symbols.put("typesystem_want_addr",Integer.valueOf(0x42e00)); + symbols.put("symbol_fix_dynamic_name",Integer.valueOf(0x41c00)); + symbols.put("outputfile_set_format",Integer.valueOf(0x34e00)); + symbols.put("matherr",Integer.valueOf(0x48800)); + symbols.put("fclose",Integer.valueOf(0x49e00)); + symbols.put("output_start_segment",Integer.valueOf(0x36000)); + symbols.put("keyword_is_m65_mnemo",Integer.valueOf(0x32200)); + symbols.put("includepaths_add",Integer.valueOf(0x28000)); + symbols.put("input_new_file",Integer.valueOf(0x22e00)); + symbols.put("finite",Integer.valueOf(0x48000)); + symbols.put("symbol_set_object",Integer.valueOf(0x40e00)); + symbols.put("strcmp",Integer.valueOf(0x51600)); + symbols.put("flow_forloop",Integer.valueOf(0x1e200)); + symbols.put("tan",Integer.valueOf(0x43a00)); + symbols.put("copysign",Integer.valueOf(0x49400)); + symbols.put("atan",Integer.valueOf(0x43000)); + symbols.put("sprintf",Integer.valueOf(0x50c00)); + symbols.put("pseudoopcode_parse",Integer.valueOf(0x3f800)); + symbols.put("atexit",Integer.valueOf(0x49600)); + symbols.put("cliargs_get_next",Integer.valueOf(0x1ac00)); + symbols.put("output_le32",Integer.valueOf(0x22800)); + symbols.put("asin",Integer.valueOf(0x43e00)); + symbols.put("cliargs_init",Integer.valueOf(0x1b200)); + symbols.put("scalbn",Integer.valueOf(0x49000)); + symbols.put("symbols_vicelabels",Integer.valueOf(0x41600)); + symbols.put("output_be24",Integer.valueOf(0x22200)); + symbols.put("symbol_set_force_bit",Integer.valueOf(0x41000)); + symbols.put("fputc",Integer.valueOf(0x4ba00)); + symbols.put("section_finalize",Integer.valueOf(0x3fe00)); + symbols.put("keyword_is_65c02_mnemo",Integer.valueOf(0x2dc00)); + symbols.put("vcpu_end_statement",Integer.valueOf(0x36e00)); + symbols.put("nan",Integer.valueOf(0x48a00)); + symbols.put("encoding_encode_char",Integer.valueOf(0x1d600)); + symbols.put("config_default",Integer.valueOf(0x1f000)); + symbols.put("dynabuf_get_copy",Integer.valueOf(0x1c200)); + symbols.put("fwrite",Integer.valueOf(0x4d600)); + symbols.put("vcpu_read_pc",Integer.valueOf(0x36a00)); + symbols.put("ALU_any_int",Integer.valueOf(0x1a200)); + symbols.put("notreallypo_setpc",Integer.valueOf(0x3f600)); + symbols.put("input_ensure_EOS",Integer.valueOf(0x24000)); + symbols.put("output_skip",Integer.valueOf(0x34600)); + symbols.put("dynabuf_add_signed_long",Integer.valueOf(0x1ca00)); + symbols.put("exit",Integer.valueOf(0x49a00)); + symbols.put("output_be16",Integer.valueOf(0x21e00)); + symbols.put("macro_parse_definition",Integer.valueOf(0x28400)); + symbols.put("tree_easy_scan",Integer.valueOf(0x42400)); + symbols.put("tree_dump_forest",Integer.valueOf(0x42a00)); + symbols.put("pseudopc_get_context",Integer.valueOf(0x37800)); + symbols.put("output_createbuffer",Integer.valueOf(0x35400)); + symbols.put("AnyOS_entry",Integer.valueOf(0x37a00)); + symbols.put("dynabuf_to_lower",Integer.valueOf(0x1cc00)); + symbols.put("keyword_is_c64dtv2_mnemo",Integer.valueOf(0x2ce00)); + symbols.put("strlen",Integer.valueOf(0x10268)); + symbols.put("input_get_force_bit",Integer.valueOf(0x27e00)); + symbols.put("input_append_symbol_name_to_global_dynabuf",Integer.valueOf(0x25800)); + symbols.put("cliargs_handle_options",Integer.valueOf(0x1ae00)); + symbols.put("acos",Integer.valueOf(0x43c00)); + symbols.put("output_le24",Integer.valueOf(0x22400)); + symbols.put("ALU_addrmode_int",Integer.valueOf(0x1a800)); + symbols.put("section_passinit",Integer.valueOf(0x40000)); + symbols.put("output_end_segment",Integer.valueOf(0x35e00)); + symbols.put("output_object",Integer.valueOf(0x21800)); + symbols.put("output_be32",Integer.valueOf(0x22600)); + symbols.put("input_skip_or_store_block",Integer.valueOf(0x24e00)); + symbols.put("ALU_defined_int",Integer.valueOf(0x1a400)); + symbols.put("symbols_list",Integer.valueOf(0x41400)); + symbols.put("parser_change_addr_block_flag",Integer.valueOf(0x1f200)); + symbols.put("flow_parse_and_close_file",Integer.valueOf(0x1ee00)); + symbols.put("_call_helper",Integer.valueOf(0x10284)); + symbols.put("BUG",Integer.valueOf(0x21400)); + symbols.put("free",Integer.valueOf(0x4e000)); } - - 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(); } }