package jace.assembly; import org.ibex.nestedvm.UnixRuntime; /* This file was generated from acme by Mips2Java on Tue Jul 14 00:46:52 CDT 2015 */ public final class AcmeCrossAssembler extends UnixRuntime { /* program counter */ private int pc = 0; /* 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; /* 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; /* FP Control Register */ private int fcsr = 0; private final void run_10000() throws ExecutionException { /* 0x10000 - 0x10200 */ int addr, tmp; 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; continue; } case 0x10010: /* Next insn is delay slot */ r31=0x10018; pc=0x101ac; continue; case 0x10018: if(r0 >= 0) { /* Next insn is delay slot */ r31=0x10020; pc=0x10020; continue; } case 0x10020: /* Next insn is delay slot */ r31=0x10028; pc=0x10208; run_10200(); return; case 0x10028: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x10038: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r0 >= 0) { /* Next insn is delay slot */ r31=0x10048; pc=0x10048; continue; } case 0x10048: /* Next insn is delay slot */ r31=0x10050; pc=0x100e4; continue; case 0x10050: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x10060: r4 = 7 << 16; r2 = 7 << 16; r4 = r4 + 12296; r2 = r2 + 12299; r2 = r2 - r4; r2 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ r25 = 0 << 16; pc=0x10088; continue; } r25 = 0 << 16; case 0x10080: /* Next insn is delay slot */ pc=r31; return; case 0x10088: r25 = r25 + 0; if(r25 == r0) { /* Next insn is delay slot */ pc=0x10080; continue; } /* Next insn is delay slot */ pc=r25; return; case 0x1009c: r4 = 7 << 16; r2 = 7 << 16; r4 = r4 + 12296; r2 = r2 + 12296; r2 = r2 - r4; r2 = r2 >> 2; r3 = r2 >>> 31; r2 = r3 + r2; r5 = r2 >> 1; if(r5 != r0) { /* Next insn is delay slot */ r25 = 0 << 16; pc=0x100d0; continue; } r25 = 0 << 16; case 0x100c8: /* Next insn is delay slot */ pc=r31; return; case 0x100d0: r25 = r25 + 0; if(r25 == r0) { /* Next insn is delay slot */ pc=0x100c8; continue; } /* Next insn is delay slot */ pc=r25; return; case 0x100e4: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r19 = 7 << 16; addr=r19+14512; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; 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; continue; } writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r18 = 7 << 16; r17 = 7 << 16; r18 = r18 + -14840; r17 = r17 + -14836; r16 = 7 << 16; r17 = r17 - r18; r2 = readPages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff]; r17 = r17 >> 2; r17 = r17 + -1; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ r2 = r2 + 1; pc=0x10164; continue; } r2 = r2 + 1; case 0x10138: r3 = r2 << 2; r3 = r18 + r3; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ writePages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff] = r2; pc=r3; r31=0x10150; return; case 0x10150: r2 = readPages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff]; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ r2 = r2 + 1; pc=0x10138; continue; } r2 = r2 + 1; case 0x10164: /* Next insn is delay slot */ r31=0x1016c; pc=0x10060; continue; case 0x1016c: r2 = 0 << 16; r2 = r2 + 0; if(r2 == r0) { /* Next insn is delay slot */ r2 = r0 + 1; pc=0x1018c; continue; } r2 = r0 + 1; r4 = 7 << 16; /* Next insn is delay slot */ r4 = r4 + 5436; r31=0x10188; pc=0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x10188: r2 = r0 + 1; case 0x1018c: addr=r19+14512; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; 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 */ r29 = r29 + 40; 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; continue; } writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r4 = 7 << 16; r5 = 7 << 16; r4 = r4 + 5436; /* Next insn is delay slot */ r5 = r5 + 14520; r31=0x101d4; pc=0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x101d4: r4 = 7 << 16; r2 = readPages[(r4+5440)>>>12][((r4+5440)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ r2 = 0 << 16; pc=0x101fc; continue; } r2 = 0 << 16; r2 = r2 + 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x101fc; continue; } /* Next insn is delay slot */ r4 = r4 + 5440; 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 */ r29 = r29 + 24; pc=0x1009c; run_10000(); return; case 0x10208: r2 = 7 << 16; r2 = readPages[(r2+-14848)>>>12][((r2+-14848)>>>2)&0x3ff]; r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x10260; continue; } r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r16 + -14852; r17 = r0 + -1; case 0x10238: /* Next insn is delay slot */ r16 = r16 + -4; 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; 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; case 0x10260: /* Next insn is delay slot */ pc=r31; return; case 0x10268: r2 = r4 + 1; case 0x1026c: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ r4 = r4 + 1; pc=0x1026c; continue; } r4 = r4 + 1; /* Next insn is delay slot */ r2 = r4 - r2; pc=r31; return; case 0x10284: r29 = r29 + -32; r2 = r4 + r0; r4 = r5 + r0; 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; return; case 0x102ac: r3 = r2 + r0; r2 = r0 + 2; pc = 0x102b4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x102b8; return; } case 0x102b8: r2 = r0 + 1; r3 = r0 + 1; pc = 0x102c0; 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; r16 = r4 + r0; if(r28 == r0) { /* Next insn is delay slot */ pc=0x1047c; continue; } case 0x10418: writePages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x10424; pc=0x10000; run_10000(); return; case 0x10424: r4 = 1 << 16; r4 = r4 + 56; /* Next insn is delay slot */ r31=0x10434; pc=0x38a00; run_38a00(); return; case 0x10434: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1048c; continue; } r2 = r16 + 4; r4 = r0 + r0; case 0x1044c: r2 = r2 + 4; r6 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; r4 = r4 + 1; if(r6 != r0) { /* Next insn is delay slot */ pc=0x1044c; continue; } case 0x10460: r6 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x10470; pc=0x11c00; run_11c00(); return; case 0x10470: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x1047c; pc=0x38e00; run_38e00(); return; case 0x1047c: r2 = 8 << 16; r28 = r2 + -20464; /* Next insn is delay slot */ pc=0x10418; continue; case 0x1048c: r4 = r0 + r0; /* Next insn is delay slot */ 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+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r4 + r0; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = 7 << 16; r29 = r29 + -24; r5 = r5 + -12288; r6 = r6 + -7904; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1062c; pc=0x3bc00; run_3bc00(); return; case 0x1062c: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x10638; pc=0x38e00; run_38e00(); return; case 0x10638: case 0x10800: pc=0x10800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_10800() throws ExecutionException { /* 0x10800 - 0x10a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x10800: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = 7 << 16; r29 = r29 + -24; r5 = r5 + -12260; r6 = r6 + -7904; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x10828; pc=0x3bc00; run_3bc00(); return; case 0x10828: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x10834; pc=0x38e00; run_38e00(); return; case 0x10834: case 0x10a00: pc=0x10a00; 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: r4 = 7 << 16; r29 = r29 + -24; r4 = r4 + -12200; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x10a18; pc=0x40400; run_40400(); return; case 0x10a18: r4 = 7 << 16; r4 = r4 + -12104; /* Next insn is delay slot */ r31=0x10a28; pc=0x40400; run_40400(); return; case 0x10a28: r4 = 7 << 16; r4 = r4 + -12016; /* Next insn is delay slot */ r31=0x10a38; pc=0x40400; run_40400(); return; case 0x10a38: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x10a44; pc=0x38e00; run_38e00(); return; case 0x10a44: case 0x10c00: pc=0x10c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_10c00() throws ExecutionException { /* 0x10c00 - 0x10e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x10c00: r29 = r29 + -64; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r21; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r20; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r19; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r18; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x10d7c; continue; } r21 = 7 << 16; r20 = 7 << 16; r18 = 7 << 16; r21 = r21 + -9536; r20 = r20 + -9308; r19 = 7 << 16; r18 = r18 + -9268; r17 = 7 << 16; case 0x10c50: r3 = r2 + -68; r3 = r3 & 255; r5 = (r3&0xffffffffL) < (51&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x10d10; continue; } r3 = r3 << 2; r3 = r21 + r3; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; return; case 0x10c7c: r16 = r18 + r0; case 0x10c80: addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x10f34; run_10e00(); return; } r3 = r0 + 37; r4 = r16 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x10f4c; run_10e00(); return; } r3 = r0 + 38; if(r2 == r3) { /* Next insn is delay slot */ pc=0x10f94; run_10e00(); return; } r3 = r0 + 36; if(r2 == r3) { /* Next insn is delay slot */ pc=0x10fa4; run_10e00(); return; } r3 = r0 + 48; if(r2 == r3) { /* Next insn is delay slot */ pc=0x10f5c; run_10e00(); return; } case 0x10cc4: r6 = r0 + 10; case 0x10cc8: r5 = r29 + 16; /* Next insn is delay slot */ r31=0x10cd4; pc=0x43600; run_43600(); return; case 0x10cd4: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r16 = r2 + r0; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x10fb4; run_10e00(); return; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x10d00; pc=0x17c00; run_17c00(); return; case 0x10d00: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x10d0c; pc=0x30200; run_30200(); return; case 0x10d0c: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; case 0x10d10: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r21 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r19 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r18 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x10d38: r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff] = r2; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r2 + -48; r4 = r3 & 255; r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x10d70; continue; } writePages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff] = r3; addr=r16+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r16 + 1; case 0x10d70: r16 = r16 + 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x10c50; continue; } case 0x10d7c: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x10d10; continue; case 0x10d88: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = r0 + 61; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r18 = r16 + 1; if(r5 == r3) { /* Next insn is delay slot */ pc=0x10c7c; continue; } if(r5 == r0) { /* Next insn is delay slot */ pc=0x10f34; run_10e00(); return; } r4 = r2 + r0; r16 = r18 + r0; r17 = r0 + 61; /* Next insn is delay slot */ pc=0x10dcc; continue; case 0x10dc0: if(r5 == r0) { /* Next insn is delay slot */ pc=0x10f34; run_10e00(); return; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; case 0x10dcc: r16 = r16 + 1; /* Next insn is delay slot */ r31=0x10dd8; pc=0x17c00; run_17c00(); return; case 0x10dd8: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 != r17) { /* Next insn is delay slot */ pc=0x10dc0; continue; } /* Next insn is delay slot */ pc=0x10c80; continue; case 0x10df0: r4 = 7 << 16; r4 = r4 + -12104; /* Next insn is delay slot */ r31=0x10e00; pc=0x40400; run_40400(); return; case 0x10e00: pc=0x10e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_10e00() throws ExecutionException { /* 0x10e00 - 0x11000 */ int addr, tmp; for(;;) { switch(pc) { case 0x10e00: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x10e0c; pc=0x38e00; run_38e00(); return; case 0x10e0c: /* Next insn is delay slot */ r31=0x10e14; pc=0x10a00; run_10a00(); return; case 0x10e14: r4 = r19 + -9292; /* Next insn is delay slot */ r31=0x10e20; pc=0x16a00; run_16a00(); return; case 0x10e20: writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x10d70; run_10c00(); return; case 0x10e30: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x10e3c; pc=0x16a00; run_16a00(); return; case 0x10e3c: writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x10d70; run_10c00(); return; case 0x10e4c: r4 = r20 + r0; /* Next insn is delay slot */ r31=0x10e58; pc=0x16a00; run_16a00(); return; case 0x10e58: writePages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff] = r2; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x10d70; run_10c00(); return; case 0x10e68: r16 = r16 + 1; r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10396; /* Next insn is delay slot */ r31=0x10e80; pc=0x42c00; run_42c00(); return; case 0x10e80: if(r2 == r0) { /* Next insn is delay slot */ pc=0x10f40; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10380; /* Next insn is delay slot */ r31=0x10e9c; pc=0x42c00; run_42c00(); return; case 0x10e9c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x10f88; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10368; /* Next insn is delay slot */ r31=0x10eb8; pc=0x42c00; run_42c00(); return; case 0x10eb8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x10fc4; continue; } r2 = r0 + 1; writePages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x10d10; run_10c00(); return; case 0x10ed4: r4 = r17 + -10412; /* Next insn is delay slot */ r31=0x10ee0; pc=0x16a00; run_16a00(); return; case 0x10ee0: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r2 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x10ef4; pc=0x17e00; run_17e00(); return; case 0x10ef4: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x10f04; pc=0x17c00; run_17c00(); return; case 0x10f04: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r4 + r0; /* Next insn is delay slot */ r31=0x10f18; pc=0x18000; run_18000(); return; case 0x10f18: /* Next insn is delay slot */ r31=0x10f20; pc=0x26800; run_26800(); return; case 0x10f20: if(r2 != r0) { /* Next insn is delay slot */ pc=0x10fbc; continue; } addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x10d70; run_10c00(); return; case 0x10f34: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x10f40; pc=0x10600; run_10600(); return; case 0x10f40: writePages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x10d10; run_10c00(); return; case 0x10f4c: r4 = r16 + 2; r6 = r0 + 2; /* Next insn is delay slot */ pc=0x10cc8; run_10c00(); return; case 0x10f5c: addr=r16+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 88; r3 = r3 & 223; r3 = r3 << 24; r3 = r3 >> 24; if(r3 != r2) { /* Next insn is delay slot */ pc=0x10cc4; run_10c00(); return; } r4 = r16 + 3; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x10cc8; run_10c00(); return; case 0x10f88: writePages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x10d10; run_10c00(); return; case 0x10f94: r4 = r16 + 2; r6 = r0 + 8; /* Next insn is delay slot */ pc=0x10cc8; run_10c00(); return; case 0x10fa4: r4 = r16 + 2; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x10cc8; run_10c00(); return; case 0x10fb4: /* Next insn is delay slot */ r31=0x10fbc; pc=0x10600; run_10600(); return; case 0x10fbc: /* Next insn is delay slot */ r31=0x10fc4; pc=0x10800; run_10800(); return; case 0x10fc4: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = 7 << 16; r5 = r5 + -10352; r6 = r6 + -7904; /* Next insn is delay slot */ r31=0x10fe4; pc=0x3bc00; run_3bc00(); return; case 0x10fe4: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x10ff0; pc=0x38e00; run_38e00(); return; case 0x10ff0: case 0x11000: pc=0x11000; 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: r5 = 7 << 16; r29 = r29 + -32; r5 = r5 + -10324; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r4 + r0; /* Next insn is delay slot */ r31=0x11020; pc=0x42c00; run_42c00(); return; case 0x11020: if(r2 == r0) { /* Next insn is delay slot */ pc=0x11730; run_11600(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10316; /* Next insn is delay slot */ r31=0x1103c; pc=0x42c00; run_42c00(); return; case 0x1103c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x11218; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10308; /* Next insn is delay slot */ r31=0x11058; pc=0x42c00; run_42c00(); return; case 0x11058: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1128c; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10300; /* Next insn is delay slot */ r31=0x11074; pc=0x42c00; run_42c00(); return; case 0x11074: if(r2 == r0) { /* Next insn is delay slot */ pc=0x111dc; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10288; /* Next insn is delay slot */ r31=0x11090; pc=0x42c00; run_42c00(); return; case 0x11090: if(r2 == r0) { /* Next insn is delay slot */ pc=0x111dc; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10276; /* Next insn is delay slot */ r31=0x110ac; pc=0x42c00; run_42c00(); return; case 0x110ac: if(r2 == r0) { /* Next insn is delay slot */ pc=0x112ac; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10264; /* Next insn is delay slot */ r31=0x110c8; pc=0x42c00; run_42c00(); return; case 0x110c8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x112cc; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10256; /* Next insn is delay slot */ r31=0x110e4; pc=0x42c00; run_42c00(); return; case 0x110e4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x112ec; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10188; /* Next insn is delay slot */ r31=0x11100; pc=0x42c00; run_42c00(); return; case 0x11100: if(r2 == r0) { /* Next insn is delay slot */ pc=0x113c8; run_11200(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10108; /* Next insn is delay slot */ r31=0x1111c; pc=0x42c00; run_42c00(); return; case 0x1111c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x11430; run_11400(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10044; /* Next insn is delay slot */ r31=0x11138; pc=0x42c00; run_42c00(); return; case 0x11138: if(r2 == r0) { /* Next insn is delay slot */ pc=0x114f8; run_11400(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -10012; /* Next insn is delay slot */ r31=0x11154; pc=0x42c00; run_42c00(); return; case 0x11154: if(r2 == r0) { /* Next insn is delay slot */ pc=0x115a4; run_11400(); return; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -9984; /* Next insn is delay slot */ r31=0x11170; pc=0x42c00; run_42c00(); return; case 0x11170: if(r2 == r0) { /* Next insn is delay slot */ pc=0x111fc; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -9972; /* Next insn is delay slot */ r31=0x1118c; pc=0x42c00; run_42c00(); return; case 0x1118c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x111c8; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -9964; /* Next insn is delay slot */ r31=0x111a8; pc=0x42c00; run_42c00(); return; case 0x111a8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x11654; run_11600(); return; } case 0x111b0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x111c8: r2 = r0 + 1; writePages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; continue; case 0x111dc: r4 = 7 << 16; r4 = r4 + -9292; /* Next insn is delay slot */ r31=0x111ec; pc=0x16a00; run_16a00(); return; case 0x111ec: writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; continue; case 0x111fc: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; case 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: r16 = r0 + r0; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x11218: r4 = 7 << 16; r4 = r4 + -10412; /* Next insn is delay slot */ r31=0x11228; pc=0x16a00; run_16a00(); return; case 0x11228: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r2 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x1123c; pc=0x17e00; run_17e00(); return; case 0x1123c: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1124c; pc=0x17c00; run_17c00(); return; case 0x1124c: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r4 + r0; /* Next insn is delay slot */ r31=0x11260; pc=0x18000; run_18000(); return; case 0x11260: /* Next insn is delay slot */ r31=0x11268; pc=0x26800; run_26800(); return; case 0x11268: if(r2 != r0) { /* Next insn is delay slot */ pc=0x11738; run_11600(); return; } case 0x11270: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = r0 + r0; r2 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x1128c: r4 = 7 << 16; r4 = r4 + -9268; /* Next insn is delay slot */ r31=0x1129c; pc=0x16a00; run_16a00(); return; case 0x1129c: writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x112ac: r4 = 7 << 16; r4 = r4 + -9332; /* Next insn is delay slot */ r31=0x112bc; pc=0x16a00; run_16a00(); return; case 0x112bc: writePages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x112cc: r4 = 7 << 16; r4 = r4 + -9308; /* Next insn is delay slot */ r31=0x112dc; pc=0x16a00; run_16a00(); return; case 0x112dc: writePages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x112ec: r4 = 7 << 16; r4 = r4 + -10248; /* Next insn is delay slot */ r31=0x112fc; pc=0x16a00; run_16a00(); return; case 0x112fc: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 37; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11670; run_11600(); return; } r4 = r0 + 38; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116b0; run_11600(); return; } r4 = r0 + 36; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116f0; run_11600(); return; } r4 = r0 + 48; if(r3 == r4) { /* Next insn is delay slot */ pc=0x1139c; continue; } case 0x11330: r6 = r0 + 10; case 0x11334: r4 = r2 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x11344; pc=0x43600; run_43600(); return; case 0x11344: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x11740; run_11600(); return; } r3 = 1 << 16; writePages[(r28+-32752)>>>12][((r28+-32752)>>>2)&0x3ff] = r2; r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11270; continue; } r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + -10232; case 0x11380: r6 = 7 << 16; r6 = r6 + -7904; /* Next insn is delay slot */ r31=0x11390; pc=0x3bc00; run_3bc00(); return; case 0x11390: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x1139c; pc=0x38e00; run_38e00(); return; case 0x1139c: addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = r0 + 88; r4 = r4 & 223; r4 = r4 << 24; r4 = r4 >> 24; if(r4 != r3) { /* Next insn is delay slot */ pc=0x11330; continue; } r2 = r2 + 2; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11334; continue; case 0x113c8: r4 = 7 << 16; r4 = r4 + -10184; /* Next insn is delay slot */ r31=0x113d8; pc=0x16a00; run_16a00(); return; case 0x113d8: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r2 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x113ec; pc=0x17e00; run_17e00(); return; case 0x113ec: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x113fc; pc=0x17c00; run_17c00(); return; case 0x113fc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; case 0x11400: pc=0x11400; 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: r5 = r4 + r0; /* Next insn is delay slot */ r31=0x11410; pc=0x18000; run_18000(); return; case 0x11410: /* Next insn is delay slot */ r31=0x11418; pc=0x17000; run_17000(); return; case 0x11418: if(r2 == r0) { /* Next insn is delay slot */ pc=0x11748; run_11600(); return; } writePages[(r28+-30836)>>>12][((r28+-30836)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x11430: r4 = 7 << 16; r4 = r4 + -10100; /* Next insn is delay slot */ r31=0x11440; pc=0x16a00; run_16a00(); return; case 0x11440: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 37; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11680; run_11600(); return; } r4 = r0 + 38; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116c0; run_11600(); return; } r4 = r0 + 36; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11700; run_11600(); return; } r4 = r0 + 48; if(r3 == r4) { /* Next insn is delay slot */ pc=0x114cc; continue; } case 0x11474: r6 = r0 + 10; case 0x11478: r4 = r2 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x11488; pc=0x43600; run_43600(); return; case 0x11488: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x11740; run_11600(); return; } writePages[(r28+-32756)>>>12][((r28+-32756)>>>2)&0x3ff] = r2; r2 = r2 + 128; r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11270; run_11200(); return; } r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + -10084; /* Next insn is delay slot */ pc=0x11380; run_11200(); return; case 0x114cc: addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = r0 + 88; r4 = r4 & 223; r4 = r4 << 24; r4 = r4 >> 24; if(r4 != r3) { /* Next insn is delay slot */ pc=0x11474; continue; } r2 = r2 + 2; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11478; continue; case 0x114f8: r4 = 7 << 16; r4 = r4 + -10032; /* Next insn is delay slot */ r31=0x11508; pc=0x16a00; run_16a00(); return; case 0x11508: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 37; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11690; run_11600(); return; } r4 = r0 + 38; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116d0; run_11600(); return; } r4 = r0 + 36; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11710; run_11600(); return; } r4 = r0 + 48; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11578; continue; } case 0x1153c: r6 = r0 + 10; case 0x11540: r4 = r2 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x11550; pc=0x43600; run_43600(); return; case 0x11550: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x11740; run_11600(); return; } writePages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x11578: addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = r0 + 88; r4 = r4 & 223; r4 = r4 << 24; r4 = r4 >> 24; if(r4 != r3) { /* Next insn is delay slot */ pc=0x1153c; continue; } r2 = r2 + 2; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11540; continue; case 0x115a4: r4 = 7 << 16; r4 = r4 + -10000; /* Next insn is delay slot */ r31=0x115b4; pc=0x16a00; run_16a00(); return; case 0x115b4: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 37; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116a0; run_11600(); return; } r4 = r0 + 38; if(r3 == r4) { /* Next insn is delay slot */ pc=0x116e0; run_11600(); return; } r4 = r0 + 36; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11720; run_11600(); return; } r4 = r0 + 48; if(r3 == r4) { /* Next insn is delay slot */ pc=0x11628; run_11600(); return; } case 0x115e8: r6 = r0 + 10; case 0x115ec: r4 = r2 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x115fc; pc=0x43600; run_43600(); return; case 0x115fc: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x11600: pc=0x11600; 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: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x11740; continue; } writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x111b0; run_11000(); return; case 0x11628: addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = r0 + 88; r4 = r4 & 223; r4 = r4 << 24; r4 = r4 >> 24; if(r4 != r3) { /* Next insn is delay slot */ pc=0x115e8; run_11400(); return; } r2 = r2 + 2; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x115ec; run_11400(); return; case 0x11654: r4 = 7 << 16; r4 = r4 + -12104; /* Next insn is delay slot */ r31=0x11664; pc=0x40400; run_40400(); return; case 0x11664: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x11670; pc=0x38e00; run_38e00(); return; case 0x11670: r2 = r2 + 1; r6 = r0 + 2; /* Next insn is delay slot */ pc=0x11334; run_11200(); return; case 0x11680: r2 = r2 + 1; r6 = r0 + 2; /* Next insn is delay slot */ pc=0x11478; run_11400(); return; case 0x11690: r2 = r2 + 1; r6 = r0 + 2; /* Next insn is delay slot */ pc=0x11540; run_11400(); return; case 0x116a0: r2 = r2 + 1; r6 = r0 + 2; /* Next insn is delay slot */ pc=0x115ec; run_11400(); return; case 0x116b0: r2 = r2 + 1; r6 = r0 + 8; /* Next insn is delay slot */ pc=0x11334; run_11200(); return; case 0x116c0: r2 = r2 + 1; r6 = r0 + 8; /* Next insn is delay slot */ pc=0x11478; run_11400(); return; case 0x116d0: r2 = r2 + 1; r6 = r0 + 8; /* Next insn is delay slot */ pc=0x11540; run_11400(); return; case 0x116e0: r2 = r2 + 1; r6 = r0 + 8; /* Next insn is delay slot */ pc=0x115ec; run_11400(); return; case 0x116f0: r2 = r2 + 1; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11334; run_11200(); return; case 0x11700: r2 = r2 + 1; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11478; run_11400(); return; case 0x11710: r2 = r2 + 1; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x11540; run_11400(); return; case 0x11720: r2 = r2 + 1; r6 = r0 + 16; /* Next insn is delay slot */ pc=0x115ec; run_11400(); return; case 0x11730: /* Next insn is delay slot */ r31=0x11738; pc=0x10a00; run_10a00(); return; case 0x11738: /* Next insn is delay slot */ r31=0x11740; pc=0x10800; run_10800(); return; case 0x11740: /* Next insn is delay slot */ r31=0x11748; pc=0x10600; run_10600(); return; case 0x11748: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + -10172; /* Next insn is delay slot */ pc=0x11380; run_11200(); return; case 0x11800: pc=0x11800; 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: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r17 = r4 + r0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x1183c; continue; } r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1183c; continue; } /* Next insn is delay slot */ r31=0x11838; pc=0x39200; run_39200(); return; case 0x11838: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; case 0x1183c: r4 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1187c; continue; } r5 = r28 + -32744; /* Next insn is delay slot */ r31=0x11858; pc=0x3b800; run_3b800(); return; case 0x11858: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x11914; continue; } r4 = r2 + r0; /* Next insn is delay slot */ r31=0x11870; pc=0x30400; run_30400(); return; case 0x11870: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x1187c; pc=0x39200; run_39200(); return; case 0x1187c: r4 = readPages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x118bc; continue; } r5 = r28 + -32744; /* Next insn is delay slot */ r31=0x11898; pc=0x3b800; run_3b800(); return; case 0x11898: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x118d8; continue; } r4 = r2 + r0; /* Next insn is delay slot */ r31=0x118b0; pc=0x30600; run_30600(); return; case 0x118b0: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x118bc; pc=0x39200; run_39200(); return; case 0x118bc: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r17 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x118d8: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = readPages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff]; r5 = r5 + -9912; /* Next insn is delay slot */ r31=0x118f4; pc=0x3bc00; run_3bc00(); return; case 0x118f4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = r0 + 1; r2 = r17 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x11914: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; r5 = r5 + -9956; /* Next insn is delay slot */ r31=0x11930; pc=0x3bc00; run_3bc00(); return; case 0x11930: r17 = r0 + 1; /* Next insn is delay slot */ pc=0x1187c; 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 + -40; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x11a20; pc=0x27600; run_27600(); return; case 0x11a20: r4 = readPages[(r28+-30836)>>>12][((r28+-30836)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x11a2c; pc=0x17400; run_17400(); return; case 0x11a2c: r4 = readPages[(r28+-32752)>>>12][((r28+-32752)>>>2)&0x3ff]; r2 = r0 + -1; if(r4 == r2) { /* Next insn is delay slot */ pc=0x11a48; continue; } r5 = r0 + r0; /* Next insn is delay slot */ r31=0x11a48; pc=0x27e00; run_27e00(); return; case 0x11a48: /* Next insn is delay slot */ r31=0x11a50; pc=0x18e00; run_18e00(); return; case 0x11a50: /* Next insn is delay slot */ r31=0x11a58; pc=0x2e800; run_2e800(); return; case 0x11a58: r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r0; writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r0; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x11b34; continue; } r18 = 7 << 16; r19 = 7 << 16; r16 = r0 + r0; r18 = r18 + 12832; r19 = r19 + -9864; /* Next insn is delay slot */ pc=0x11ab8; continue; case 0x11a88: r3 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; r4 = r2 + r0; r17 = r3 + r17; r5 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r16 = r16 + 1; /* Next insn is delay slot */ r31=0x11aa4; pc=0x19c00; run_19c00(); return; case 0x11aa4: r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x11b24; continue; } case 0x11ab8: r2 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; r17 = r16 << 2; r2 = r2 + r17; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x11ad4; pc=0x3b800; run_3b800(); return; case 0x11ad4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x11a88; continue; } r2 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; r5 = r19 + r0; r17 = r2 + r17; r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r16 = r16 + 1; /* Next insn is delay slot */ r31=0x11b00; pc=0x3bc00; run_3bc00(); return; case 0x11b00: r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; r2 = r16 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11ab8; continue; } case 0x11b24: r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11b60; continue; } case 0x11b34: /* Next insn is delay slot */ r31=0x11b3c; pc=0x27800; run_27800(); return; case 0x11b3c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x11b60: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x11b6c; pc=0x11800; run_11800(); return; case 0x11b6c: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x11b78; pc=0x38e00; run_38e00(); return; case 0x11b78: case 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: r29 = r29 + -32; r2 = r0 + 1; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; if(r4 == r2) { /* Next insn is delay slot */ pc=0x11f10; run_11e00(); return; } r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r2 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; writePages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x11c38; pc=0x16c00; run_16c00(); return; case 0x11c38: /* Next insn is delay slot */ r31=0x11c40; pc=0x18200; run_18200(); return; case 0x11c40: /* Next insn is delay slot */ r31=0x11c48; pc=0x28600; run_28600(); return; case 0x11c48: r4 = 1 << 16; r5 = 1 << 16; r4 = r4 + 3072; r5 = r5 + 4096; /* Next insn is delay slot */ r31=0x11c60; pc=0x16800; run_16800(); return; case 0x11c60: r6 = 7 << 16; r5 = r28 + -30828; r6 = r6 + -9824; r4 = r28 + -30832; /* Next insn is delay slot */ r31=0x11c78; pc=0x16e00; run_16e00(); return; case 0x11c78: /* Next insn is delay slot */ r31=0x11c80; pc=0x15800; run_15800(); return; case 0x11c80: /* Next insn is delay slot */ r31=0x11c88; pc=0x20400; run_20400(); return; case 0x11c88: /* Next insn is delay slot */ r31=0x11c90; pc=0x22400; run_22400(); return; case 0x11c90: r4 = readPages[(r28+-32756)>>>12][((r28+-32756)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x11c9c; pc=0x26e00; run_26e00(); return; case 0x11c9c: /* Next insn is delay slot */ r31=0x11ca4; pc=0x2e000; run_2e000(); return; case 0x11ca4: r3 = 7 << 16; r2 = r3 + 14544; writePages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff] = r2; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; writePages[(r3+14544)>>>12][((r3+14544)>>>2)&0x3ff] = r0; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11ce0; continue; } r4 = 7 << 16; r4 = r4 + -9796; /* Next insn is delay slot */ r31=0x11ce0; pc=0x40400; run_40400(); return; case 0x11ce0: writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x11cec; pc=0x11a00; run_11a00(); return; case 0x11cec: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x11d58; continue; } r17 = 7 << 16; r17 = r17 + -9784; /* Next insn is delay slot */ pc=0x11d18; continue; case 0x11d08: r16 = r2 < r16 ? 1 : 0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x11e50; run_11e00(); return; } r16 = r2 + r0; case 0x11d18: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11d48; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x11d48; pc=0x40400; run_40400(); return; case 0x11d48: /* Next insn is delay slot */ r31=0x11d50; pc=0x11a00; run_11a00(); return; case 0x11d50: if(r2 != r0) { /* Next insn is delay slot */ pc=0x11d08; continue; } case 0x11d58: r16 = readPages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x11df4; continue; } r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11d90; continue; } r4 = 7 << 16; r4 = r4 + -9768; /* Next insn is delay slot */ r31=0x11d8c; pc=0x40400; run_40400(); return; case 0x11d8c: r16 = readPages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff]; case 0x11d90: r17 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r28 + -32744; /* Next insn is delay slot */ r31=0x11da4; pc=0x3b800; run_3b800(); return; case 0x11da4: writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x11ea0; run_11e00(); return; } r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x11dc8; pc=0x11a00; run_11a00(); return; case 0x11dc8: r16 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x11df4; continue; } r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x11df4; continue; } /* Next insn is delay slot */ r31=0x11df0; pc=0x39200; run_39200(); return; case 0x11df0: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; case 0x11df4: r4 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x11ec4; run_11e00(); return; } case 0x11e00: pc=0x11e00; 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: r5 = r28 + -32748; /* Next insn is delay slot */ r31=0x11e10; pc=0x3b800; run_3b800(); return; case 0x11e10: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x11eec; continue; } r4 = r2 + r0; /* Next insn is delay slot */ r31=0x11e28; pc=0x27000; run_27000(); return; case 0x11e28: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x11e34; pc=0x39200; run_39200(); return; case 0x11e34: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x11800; run_11800(); return; case 0x11e50: r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x11e74; continue; } r4 = 7 << 16; r4 = r4 + -9688; /* Next insn is delay slot */ r31=0x11e74; pc=0x40400; run_40400(); return; case 0x11e74: r2 = 2 << 16; r2 = r2 + -20480; writePages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x11e98; pc=0x11a00; run_11a00(); return; case 0x11e98: /* Next insn is delay slot */ pc=0x11e34; continue; case 0x11ea0: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + -9728; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x11ebc; pc=0x3bc00; run_3bc00(); return; case 0x11ebc: /* Next insn is delay slot */ pc=0x11df4; run_11c00(); return; case 0x11ec4: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r4 = 7 << 16; r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r4 + -9652; r5 = r0 + 1; r6 = r0 + 75; /* Next insn is delay slot */ r31=0x11ee4; pc=0x3dc00; run_3dc00(); return; case 0x11ee4: /* Next insn is delay slot */ pc=0x11e34; continue; case 0x11eec: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; r5 = r5 + -9576; /* Next insn is delay slot */ r31=0x11f08; pc=0x3bc00; run_3bc00(); return; case 0x11f08: /* Next insn is delay slot */ pc=0x11e34; continue; case 0x11f10: /* Next insn is delay slot */ r31=0x11f18; pc=0x10a00; run_10a00(); return; case 0x11f18: case 0x12000: pc=0x12000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12000() throws ExecutionException { /* 0x12000 - 0x12200 */ int addr, tmp; for(;;) { switch(pc) { case 0x12000: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r29 = r29 + -24; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r16 = r16 + r2; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r3 = r2 & 256; if(r3 == r0) { /* Next insn is delay slot */ pc=0x120b0; continue; } f12 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; f13 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; case 0x12044: f0 = readPages[(r28+-32404)>>>12][((r28+-32404)>>>2)&0x3ff]; f1 = readPages[(r28+-32408)>>>12][((r28+-32408)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x12084; continue; } f0 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; f1 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x12104; continue; } case 0x12084: r2 = r2 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x120d0; continue; } case 0x12090: writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r0; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; case 0x12098: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x120b0: f0 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 | 256; { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f12; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f13; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x12044; continue; case 0x120d0: r4 = 7 << 16; r4 = r4 + -9252; /* Next insn is delay slot */ r31=0x120e0; pc=0x1b000; run_1b000(); return; case 0x120e0: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r2 = r2 + -24; r16 = r16 + r2; /* Next insn is delay slot */ pc=0x12090; continue; case 0x12104: /* Next insn is delay slot */ pc=r4; r31=0x1210c; return; case 0x1210c: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f0; r3 = r2 << 3; r2 = r2 << 5; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f1; r2 = r2 - r3; r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r16 = r16 + r2; /* Next insn is delay slot */ pc=0x12098; continue; 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: r29 = r29 + -40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; r18 = r5 + r0; r5 = r0 + 32; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r17 = r6 + r0; /* Next insn is delay slot */ r31=0x1222c; pc=0x2f400; run_2f400(); return; case 0x1222c: r16 = r2 + r0; r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x122d4; continue; } case 0x12250: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12270; continue; } r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; case 0x12270: r17 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r5 = r16 + r0; r2 = r17 << 3; r3 = r17 << 5; r3 = r3 - r2; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r6 = r0 + 24; r3 = r2 + r3; r4 = r3 + r0; /* Next insn is delay slot */ r31=0x1229c; pc=0x48fdc; run_48e00(); return; case 0x1229c: r3 = r2 + r0; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = r17 + 1; r2 = r2 | 64; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r17; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x122d4: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; if(r18 != r0) { /* Next insn is delay slot */ pc=0x12328; continue; } case 0x122e8: r5 = r19 + r0; /* Next insn is delay slot */ r31=0x122f4; pc=0x17e00; run_17e00(); return; case 0x122f4: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r5 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = ((r5 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12344; continue; } writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r17; case 0x12314: r5 = r0 + r0; /* Next insn is delay slot */ r31=0x12320; pc=0x17c00; run_17c00(); return; case 0x12320: /* Next insn is delay slot */ pc=0x12250; continue; case 0x12328: r5 = r0 + 46; /* Next insn is delay slot */ r31=0x12334; pc=0x17c00; run_17c00(); return; case 0x12334: r17 = r17 + 1; r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x122e8; continue; case 0x12344: r4 = 7 << 16; r4 = r4 + -9228; r5 = r5 - r17; /* Next insn is delay slot */ r31=0x12358; pc=0x1b800; run_1b800(); return; case 0x12358: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x12314; continue; 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: r29 = r29 + -136; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = f20; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = f21; f20 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; r2 = r0 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; f21 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r23; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r19; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r18; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r17; r23 = r28 + -32444; r19 = 7 << 16; r18 = 7 << 16; r17 = 7 << 16; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r22; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r21; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r20; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = f22; writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = f23; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r30; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r16; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = f28; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = f29; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = f26; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = f27; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = f24; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = f25; r21 = r4 + r0; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r0; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r0; writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r23; r22 = r0 + 1; r20 = r0 + r0; r19 = r19 + -7236; r18 = r18 + -8652; f22 = f20; f23 = f21; r17 = r17 + -8284; case 0x124a4: r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; r22 = r22 < r5 ? 1 : 0; if(r22 == r0) { /* Next insn is delay slot */ pc=0x125fc; continue; } case 0x124b8: r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x12648; run_12600(); return; } case 0x124d0: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; r3 = r0 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x12694; run_12600(); return; } case 0x124e0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x126d4; run_12600(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x125d8; continue; } r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r2 = r22 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12720; run_12600(); return; } r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r3 = r22 << 2; r3 = r3 + -8; r16 = r2 + r3; r3 = r3 + 4; r2 = r2 + r3; r6 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; addr=r6+4; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; addr=r30+4; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r3 = r4 < r5 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x12720; run_12600(); return; } if(r4 == r5) { /* Next insn is delay slot */ pc=0x12714; run_12600(); return; } case 0x12548: r5 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r3 = (r5&0xffffffffL) < (38&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1435c; run_14200(); return; } r4 = 7 << 16; r3 = r5 << 2; r4 = r4 + -8804; r3 = r4 + r3; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; return; case 0x1257c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x143c4; run_14200(); return; } case 0x1258c: r2 = r2 & 255; r2 = r19 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x13338; run_13200(); return; } if(r16 == r0) { /* Next insn is delay slot */ pc=0x13314; run_13200(); return; } r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r28 + -32644; r2 = r22 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r22 = r22 << 2; r2 = r2 + r22; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; case 0x125d8: r3 = (r2&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1275c; run_12600(); return; } r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; r22 = r22 < r5 ? 1 : 0; if(r22 != r0) { /* Next insn is delay slot */ pc=0x124b8; continue; } case 0x125fc: r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; case 0x12600: pc=0x12600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12600() throws ExecutionException { /* 0x12600 - 0x12800 */ int addr, tmp; for(;;) { switch(pc) { case 0x12600: r2 = r5 << 1; r5 = r5 << 3; writePages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x12614; pc=0x40600; run_40600(); return; case 0x12614: writePages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x124b8; run_12400(); return; } r4 = 7 << 16; r4 = r4 + -6876; /* Next insn is delay slot */ r31=0x12630; pc=0x1b200; run_1b200(); return; case 0x12630: r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x124d0; run_12400(); return; } case 0x12648: r3 = r2 << 1; r5 = r2 << 4; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 << 6; r5 = r2 - r5; writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x12668; pc=0x40600; run_40600(); return; case 0x12668: writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x124d0; run_12400(); return; } r4 = 7 << 16; r4 = r4 + -6876; /* Next insn is delay slot */ r31=0x12684; pc=0x1b200; run_1b200(); return; case 0x12684: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; r3 = r0 + 1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x124e0; run_12400(); return; } case 0x12694: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x129b8; run_12800(); return; } r3 = r2 + r0; case 0x126a8: r2 = r3 + -33; r2 = r2 & 255; r4 = (r2&0xffffffffL) < (92&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x13038; run_13000(); return; } r2 = r2 << 2; r2 = r18 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x126d4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x129cc; run_12800(); return; } r22 = r2 + r0; case 0x126e8: r2 = r22 + -33; r2 = r2 & 255; r3 = (r2&0xffffffffL) < (62&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x12804; run_12800(); return; } r2 = r2 << 2; r2 = r17 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x12714: r4 = r4 & 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x12548; run_12400(); return; } case 0x12720: writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x124a4; run_12400(); return; case 0x1272c: /* Next insn is delay slot */ r31=0x12734; pc=0x1c000; run_1c000(); return; case 0x12734: r3 = r0 + 61; if(r2 == r3) { /* Next insn is delay slot */ pc=0x131a8; run_13000(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x12750; pc=0x1b000; run_1b000(); return; case 0x12750: r2 = r0 + 4; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; r2 = r0 + 4; case 0x1275c: r3 = r0 + 5; if(r2 == r3) { /* Next insn is delay slot */ pc=0x128a4; run_12800(); return; } case 0x12768: f28 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; f26 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; f24 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; f22 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; f20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r2 = r20 + r0; r30 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r23 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r22 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r21 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r20 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r19 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r18 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r17 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f29 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; f27 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; f25 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; f23 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; f21 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x127c8: r16 = r28 + -32596; case 0x127cc: /* Next insn is delay slot */ r31=0x127d4; pc=0x1c000; run_1c000(); return; case 0x127d4: r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 + r0; r2 = r2 << 2; r2 = r3 + r2; r22 = r22 + 1; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; r2 = r0 + 2; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x124a4; run_12400(); return; case 0x12800: pc=0x12800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12800() throws ExecutionException { /* 0x12800 - 0x12a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x12800: case 0x12804: r22 = r22 & 255; r2 = r22 + -48; r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x13370; run_13200(); return; } r22 = r19 + r22; addr=r22+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1445c; run_14400(); return; } r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r3 = r3 + 1; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; r3 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r2 = r4 + r2; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; r2 = r3 << 2; r2 = r2 + -4; r2 = r4 + r2; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r4 == r23) { /* Next insn is delay slot */ pc=0x13504; run_13400(); return; } case 0x12880: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x12890; pc=0x1b000; run_1b000(); return; case 0x12890: r2 = r0 + 4; r3 = r0 + 5; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } case 0x128a4: r5 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = r0 + 1; if(r5 == r2) { /* Next insn is delay slot */ pc=0x128c4; continue; } r4 = 7 << 16; r4 = r4 + -8912; /* Next insn is delay slot */ r31=0x128c4; pc=0x1b800; run_1b800(); return; case 0x128c4: r5 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r2 = r0 + 1; if(r5 == r2) { /* Next insn is delay slot */ pc=0x128e4; continue; } r4 = 7 << 16; r4 = r4 + -8888; /* Next insn is delay slot */ r31=0x128e4; pc=0x1b800; run_1b800(); return; case 0x128e4: r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r21 + r0; r6 = r0 + 24; /* Next insn is delay slot */ r31=0x128f8; pc=0x48fdc; run_48e00(); return; case 0x128f8: r3 = readPages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff]; r2 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; r2 = r3 | r2; r4 = r2 & 4; r3 = r2 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x12ad4; run_12a00(); return; } r4 = r2 & 2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x131f4; run_13000(); return; } writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; case 0x12928: r4 = r2 & 64; if(r4 != r0) { /* Next insn is delay slot */ pc=0x12940; continue; } r3 = r0 + -17; r3 = r2 & r3; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; case 0x12940: r2 = r3 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x131b4; run_13000(); return; } r2 = r3 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x13250; run_13200(); return; } r2 = r3 & 32; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } f0 = readPages[(r21+12)>>>12][((r21+12)>>>2)&0x3ff]; f2 = readPages[(r28+-32372)>>>12][((r28+-32372)>>>2)&0x3ff]; f1 = readPages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff]; f3 = readPages[(r28+-32376)>>>12][((r28+-32376)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } f2 = readPages[(r28+-32364)>>>12][((r28+-32364)>>>2)&0x3ff]; f3 = readPages[(r28+-32368)>>>12][((r28+-32368)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } r3 = r3 | 8; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x12768; run_12600(); return; case 0x129b8: /* Next insn is delay slot */ r31=0x129c0; pc=0x1c000; run_1c000(); return; case 0x129c0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; /* Next insn is delay slot */ pc=0x126a8; run_12600(); return; case 0x129cc: /* Next insn is delay slot */ r31=0x129d4; pc=0x1c000; run_1c000(); return; case 0x129d4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r22 = tmp; /* Next insn is delay slot */ pc=0x126e8; run_12600(); return; case 0x129e0: r16 = r28 + -32652; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x129ec: r16 = r28 + -32636; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x129f8: r16 = r28 + -32492; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a00: pc=0x12a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12a00() throws ExecutionException { /* 0x12a00 - 0x12c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x12a00: case 0x12a04: r16 = r28 + -32452; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a10: r16 = r28 + -32612; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a1c: r16 = r28 + -32604; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a28: r16 = r28 + -32620; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a34: /* Next insn is delay slot */ r31=0x12a3c; pc=0x1c000; run_1c000(); return; case 0x12a3c: r3 = r0 + 61; if(r2 == r3) { /* Next insn is delay slot */ pc=0x134d0; run_13400(); return; } r3 = r0 + 62; if(r2 == r3) { /* Next insn is delay slot */ pc=0x131a8; run_13000(); return; } r3 = r0 + 60; if(r2 == r3) { /* Next insn is delay slot */ pc=0x134c4; run_13400(); return; } r16 = r28 + -32524; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x12a6c: /* Next insn is delay slot */ r31=0x12a74; pc=0x1c000; run_1c000(); return; case 0x12a74: r3 = r0 + 61; if(r2 == r3) { /* Next insn is delay slot */ pc=0x14378; run_14200(); return; } r16 = r28 + -32500; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x12a8c: r16 = r28 + -32468; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x12a98: /* Next insn is delay slot */ r31=0x12aa0; pc=0x1c000; run_1c000(); return; case 0x12aa0: r16 = r2 + r0; r2 = r0 + 61; if(r16 == r2) { /* Next insn is delay slot */ pc=0x134f8; run_13400(); return; } r2 = r0 + 62; if(r16 == r2) { /* Next insn is delay slot */ pc=0x134dc; run_13400(); return; } r2 = r0 + 60; if(r16 == r2) { /* Next insn is delay slot */ pc=0x131a8; run_13000(); return; } r16 = r28 + -32540; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x12ad4: r3 = r0 + -4; r2 = r2 & r3; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; r3 = r2 + r0; /* Next insn is delay slot */ pc=0x12928; run_12800(); return; case 0x12aec: r16 = r28 + -32548; case 0x12af0: /* Next insn is delay slot */ r31=0x12af8; pc=0x1c000; run_1c000(); return; case 0x12af8: r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r2 = r22 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r22 = r22 << 2; r22 = r2 + r22; writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x12b24: r16 = r28 + -32556; /* Next insn is delay slot */ pc=0x12af0; continue; case 0x12b30: r16 = r28 + -32564; /* Next insn is delay slot */ pc=0x12af0; continue; case 0x12b3c: /* Next insn is delay slot */ r31=0x12b44; pc=0x1c000; run_1c000(); return; case 0x12b44: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1320c; run_13200(); return; } f26 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; f28 = r0; f24 = readPages[(r28+-32388)>>>12][((r28+-32388)>>>2)&0x3ff]; f27 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; f29 = r0; f25 = readPages[(r28+-32392)>>>12][((r28+-32392)>>>2)&0x3ff]; case 0x12b78: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } r2 = r2 & 15; f2 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } /* Next insn is delay slot */ r31=0x12b98; pc=0x1c000; run_1c000(); return; case 0x12b98: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x12b78; continue; } case 0x12bb0: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))/(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r3 + 1; r2 = r4 + r2; r4 = r0 + 336; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f26; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f27; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x12bf4: /* Next insn is delay slot */ r31=0x12bfc; pc=0x1c000; run_1c000(); return; case 0x12bfc: r4 = r29 + 16; case 0x12c00: pc=0x12c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12c00() throws ExecutionException { /* 0x12c00 - 0x12e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x12c00: /* Next insn is delay slot */ r31=0x12c08; pc=0x28000; run_28000(); return; case 0x12c08: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x13260; run_13200(); return; } r4 = r2 + r0; case 0x12c20: r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r4 | 64; r5 = r3 << 5; r2 = r3 << 3; r2 = r5 - r2; r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r3 + 1; r2 = r5 + r2; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; case 0x12c58: r2 = r0 + 1; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x124a4; run_12400(); return; case 0x12c6c: r16 = r28 + -32660; /* Next insn is delay slot */ pc=0x12af0; run_12a00(); return; case 0x12c78: /* Next insn is delay slot */ r31=0x12c80; pc=0x1c000; run_1c000(); return; case 0x12c80: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x144a4; run_14400(); return; } r22 = r0 + r0; r16 = r0 + r0; case 0x12ca0: r2 = r2 & 7; r16 = r16 << 3; r16 = r16 + r2; /* Next insn is delay slot */ r31=0x12cb4; pc=0x1c000; run_1c000(); return; case 0x12cb4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r22 = r22 + 1; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x12ca0; continue; } r2 = r22 < 4 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1319c; run_13000(); return; } r22 = r22 < 7 ? 1 : 0; if(r22 == r0) { /* Next insn is delay slot */ pc=0x12e18; run_12e00(); return; } case 0x12ce4: r2 = r16 < 256 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1319c; run_13000(); return; } r5 = r0 + 82; /* Next insn is delay slot */ pc=0x12e2c; run_12e00(); return; case 0x12cfc: r16 = r28 + -32460; /* Next insn is delay slot */ pc=0x12af0; run_12a00(); return; case 0x12d08: r22 = r0 + r0; r16 = r0 + -1; case 0x12d10: /* Next insn is delay slot */ r31=0x12d18; pc=0x1c000; run_1c000(); return; case 0x12d18: r2 = r2 & 255; r3 = r19 + r2; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r16 = r16 + 1; r3 = r3 & 32; r2 = r2 | r3; r3 = r2 + -48; r4 = r2 << 24; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r4 = r4 >> 24; if(r3 != r0) { /* Next insn is delay slot */ pc=0x13138; run_13000(); return; } r2 = r2 + -97; r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x13154; run_13000(); return; } r2 = r16 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12d80; continue; } r16 = r16 < 5 ? 1 : 0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x13320; run_13200(); return; } r2 = 1 << 16; r2 = r22 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14264; run_14200(); return; } case 0x12d80: r5 = r0 + 80; case 0x12d84: r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r3 + 1; r2 = r4 + r2; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r22; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; continue; case 0x12dbc: r30 = r0 + -1; r16 = r0 + r0; r22 = r0 + 46; case 0x12dc8: r30 = r30 + 1; /* Next insn is delay slot */ r31=0x12dd4; pc=0x1c000; run_1c000(); return; case 0x12dd4: if(r2 == r22) { /* Next insn is delay slot */ pc=0x13190; run_13000(); return; } case 0x12ddc: r4 = r2 < 47 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x13168; run_13000(); return; } r4 = r0 + 48; if(r2 == r4) { /* Next insn is delay slot */ pc=0x13190; run_13000(); return; } r5 = r0 + 49; if(r2 == r5) { /* Next insn is delay slot */ pc=0x13174; run_13000(); return; } case 0x12e00: pc=0x12e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_12e00() throws ExecutionException { /* 0x12e00 - 0x13000 */ int addr, tmp; for(;;) { switch(pc) { case 0x12e00: r2 = r30 < 9 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1319c; run_13000(); return; } r3 = r30 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x12ce4; run_12c00(); return; } case 0x12e18: r2 = 1 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1319c; run_13000(); return; } r5 = r0 + 84; case 0x12e2c: r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r3 + 1; r2 = r4 + r2; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x12e64: /* Next insn is delay slot */ r31=0x12e6c; pc=0x1c600; run_1c600(); return; case 0x12e6c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r22) { /* Next insn is delay slot */ pc=0x143f8; run_14200(); return; } /* Next insn is delay slot */ r31=0x12e8c; pc=0x18c00; run_18c00(); return; case 0x12e8c: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x12e98; pc=0x1c600; run_1c600(); return; case 0x12e98: if(r2 == r22) { /* Next insn is delay slot */ pc=0x1471c; run_14600(); return; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x143d8; run_14200(); return; } case 0x12eb0: r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r4 + r2; r4 = r0 + 88; case 0x12ed4: r3 = r3 + 1; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x12ef0: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = r0 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r22 = r0 + 43; r16 = r0 + 43; /* Next insn is delay slot */ pc=0x12f3c; continue; case 0x12f0c: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x12f28; pc=0x1c000; run_1c000(); return; case 0x12f28: if(r2 != r16) { /* Next insn is delay slot */ pc=0x12f84; continue; } case 0x12f30: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; case 0x12f3c: r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x12f0c; continue; } /* Next insn is delay slot */ r31=0x12f54; pc=0x17800; run_17800(); return; case 0x12f54: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x12f7c; pc=0x1c000; run_1c000(); return; case 0x12f7c: if(r2 == r16) { /* Next insn is delay slot */ pc=0x12f30; continue; } case 0x12f84: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r4 = r0 + r0; r16 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x12f98; pc=0x30800; run_30800(); return; case 0x12f98: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = r0 + r0; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x12fb0; pc=0x12200; run_12200(); return; case 0x12fb0: /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x12fb8: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = r0 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r16 = r0 + r0; r30 = r0 + 45; r22 = r0 + 45; /* Next insn is delay slot */ pc=0x1300c; run_13000(); return; case 0x12fd8: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r16 = r16 ^ 1; /* Next insn is delay slot */ r31=0x12ff8; pc=0x1c000; run_1c000(); return; case 0x12ff8: if(r2 != r22) { /* Next insn is delay slot */ pc=0x1257c; run_12400(); return; } case 0x13000: pc=0x13000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13000() throws ExecutionException { /* 0x13000 - 0x13200 */ int addr, tmp; for(;;) { switch(pc) { case 0x13000: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; case 0x1300c: r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x12fd8; run_12e00(); return; } /* Next insn is delay slot */ r31=0x13024; pc=0x17800; run_17800(); return; case 0x13024: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x12fd8; run_12e00(); return; case 0x13038: r3 = r3 & 255; r3 = r19 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x14394; run_14200(); return; } r16 = r28 + -30776; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x1305c: r4 = 7 << 16; r4 = r4 + -8976; /* Next insn is delay slot */ r31=0x1306c; pc=0x1ae00; run_1ae00(); return; case 0x1306c: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1427c; run_14200(); return; } case 0x130ac: r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r2 = r8 ^ r2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r8 + r2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; case 0x130d4: r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; case 0x130f0: r5 = r5 & 103; r5 = r5 | r7; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r5; r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r0 + -17; r4 = r7 | r4; r5 = r5 & r4; r4 = r0 + -9; r5 = r5 & r4; r6 = r6 + -1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r5; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r6; case 0x13120: writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r0; case 0x13124: r22 = r22 + -1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r30; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x13138: r2 = r2 + -97; r22 = r22 << 4; r3 = r4 + -48; r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; r22 = r22 + r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x12d10; run_12c00(); return; } case 0x13154: r22 = r22 << 4; r22 = r4 + r22; r22 = r22 + -87; /* Next insn is delay slot */ pc=0x12d10; run_12c00(); return; case 0x13168: r3 = r0 + 35; if(r2 != r3) { /* Next insn is delay slot */ pc=0x12e00; run_12e00(); return; } case 0x13174: r16 = r16 << 1; r16 = r16 | 1; r30 = r30 + 1; /* Next insn is delay slot */ r31=0x13188; pc=0x1c000; run_1c000(); return; case 0x13188: if(r2 != r22) { /* Next insn is delay slot */ pc=0x12ddc; run_12c00(); return; } case 0x13190: r16 = r16 << 1; /* Next insn is delay slot */ pc=0x12dc8; run_12c00(); return; case 0x1319c: r5 = r0 + 80; /* Next insn is delay slot */ pc=0x12e2c; run_12e00(); return; case 0x131a8: r16 = r28 + -32508; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x131b4: r2 = r3 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x13244; run_13200(); return; } r2 = r3 & 32; if(r2 != r0) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } r2 = readPages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff]; r2 = r2 + 128; r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x12768; run_12600(); return; } r3 = r3 | 8; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x12768; run_12600(); return; case 0x131f4: r3 = r0 + -2; r2 = r2 & r3; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; case 0x13200: pc=0x13200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13200() throws ExecutionException { /* 0x13200 - 0x13400 */ int addr, tmp; for(;;) { switch(pc) { case 0x13200: r3 = r2 + r0; /* Next insn is delay slot */ pc=0x12928; run_12800(); return; case 0x1320c: /* Next insn is delay slot */ r31=0x13214; pc=0x1ec00; run_1ec00(); return; case 0x13214: if(r2 == r0) { /* Next insn is delay slot */ pc=0x12890; run_12800(); return; } r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 1; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r6 = r6 + -1; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1323c; pc=0x12200; run_12200(); return; case 0x1323c: /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x13244: writePages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12768; run_12600(); return; case 0x13250: writePages[(r21+12)>>>12][((r21+12)>>>2)&0x3ff] = r0; writePages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12768; run_12600(); return; case 0x13260: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -9164; /* Next insn is delay slot */ r31=0x13278; pc=0x17e00; run_17e00(); return; case 0x13278: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1443c; run_14400(); return; } r2 = r0 + 1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; case 0x13298: r5 = r0 + r0; /* Next insn is delay slot */ r31=0x132a4; pc=0x17c00; run_17c00(); return; case 0x132a4: r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x12c20; run_12c00(); return; case 0x132b0: r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r3 = r0 + 110; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r4 = r4 | 32; if(r4 != r3) { /* Next insn is delay slot */ pc=0x14474; run_14400(); return; } addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r0 + 111; r4 = r4 | 32; if(r4 != r3) { /* Next insn is delay slot */ pc=0x14474; run_14400(); return; } addr=r2+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 116; r3 = r3 | 32; if(r3 != r2) { /* Next insn is delay slot */ pc=0x14474; run_14400(); return; } r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r28 + -32660; r2 = r22 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r22 = r22 << 2; r2 = r2 + r22; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x13314: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x13320: r2 = r22 < 256 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x12d80; run_12c00(); return; } r5 = r0 + 82; /* Next insn is delay slot */ pc=0x12d84; run_12c00(); return; case 0x13338: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x13348; pc=0x17c00; run_17c00(); return; case 0x13348: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r6 = r6 + -1; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x13368; pc=0x12200; run_12200(); return; case 0x13368: /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x13370: r16 = r22 & 15; /* Next insn is delay slot */ r31=0x1337c; pc=0x1c000; run_1c000(); return; case 0x1337c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r16 != r0) { /* Next insn is delay slot */ pc=0x13478; run_13400(); return; } r2 = r0 + 98; if(r3 == r2) { /* Next insn is delay slot */ pc=0x15480; run_15400(); return; } r2 = r0 + 120; if(r3 != r2) { /* Next insn is delay slot */ pc=0x13478; run_13400(); return; } r16 = r0 + r0; r22 = r0 + -1; case 0x133a8: /* Next insn is delay slot */ r31=0x133b0; pc=0x1c000; run_1c000(); return; case 0x133b0: r2 = r2 & 255; r3 = r19 + r2; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r22 = r22 + 1; r3 = r3 & 32; r2 = r2 | r3; r4 = r2 + -48; r3 = r2 << 24; r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r3 = r3 >> 24; if(r4 != r0) { /* Next insn is delay slot */ pc=0x146ec; run_14600(); return; } r2 = r2 + -97; r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14708; run_14600(); return; } r2 = r22 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15474; run_15400(); return; } r22 = r22 < 5 ? 1 : 0; case 0x13400: pc=0x13400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13400() throws ExecutionException { /* 0x13400 - 0x13600 */ int addr, tmp; for(;;) { switch(pc) { case 0x13400: if(r22 != r0) { /* Next insn is delay slot */ pc=0x15590; run_15400(); return; } r2 = 1 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15474; run_15400(); return; } r2 = r0 + 84; case 0x1341c: r4 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r5 = r4 << 5; r3 = r4 << 3; r3 = r5 - r3; r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r4 + 1; r3 = r5 + r3; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r16; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r4; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x13454: r3 = r16 << 1; r16 = r16 << 3; r16 = r3 + r16; r2 = r2 & 15; r16 = r16 + r2; /* Next insn is delay slot */ r31=0x13470; pc=0x1c000; run_1c000(); return; case 0x13470: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; case 0x13478: r2 = r3 & 255; r4 = r2 + -48; r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x13454; continue; } r2 = r0 + 46; if(r3 == r2) { /* Next insn is delay slot */ pc=0x15278; run_15200(); return; } r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r4 = r3 << 5; r2 = r3 << 3; r2 = r4 - r2; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r4 + r2; r4 = r0 + 80; /* Next insn is delay slot */ pc=0x12ed4; run_12e00(); return; case 0x134c4: r16 = r28 + -32572; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x134d0: r16 = r28 + -32516; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x134dc: /* Next insn is delay slot */ r31=0x134e4; pc=0x1c000; run_1c000(); return; case 0x134e4: if(r2 == r16) { /* Next insn is delay slot */ pc=0x14270; run_14200(); return; } r16 = r28 + -32580; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x134f8: r16 = r28 + -32532; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x13504: r22 = r3 + 1; r3 = r28 + -30776; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r2 = r0 + 2; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x124a4; run_12400(); return; case 0x13524: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15124; run_15000(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r8 < r2 ? 1 : 0; r2 = r2 ^ 1; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13588: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14bd0; run_14a00(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r8 < r2 ? 1 : 0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x135e8: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; case 0x13600: pc=0x13600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13600() throws ExecutionException { /* 0x13600 - 0x13800 */ int addr, tmp; for(;;) { switch(pc) { case 0x13600: r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14c4c; run_14c00(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r2 < r8 ? 1 : 0; r2 = r2 ^ 1; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x1364c: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14890; run_14800(); return; } r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r2 = r8 ^ r2; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; case 0x136a4: writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x136b4: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1503c; run_15000(); return; } r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r2 = r8 - r2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; case 0x13708: r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r8 - r2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13728: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14a60; run_14a00(); return; } r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r2 = r8 + r2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; case 0x1377c: r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r8 + r2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x1379c: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 3; r5 = r6 << 5; r5 = r5 - r4; r4 = r5 + -24; r4 = r3 + r4; r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r8 = r7 & 256; if(r8 != r0) { /* Next insn is delay slot */ pc=0x144b4; run_14400(); return; } r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; case 0x137d0: r5 = r5 + -48; r3 = r3 + r5; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = r7 & 256; if(r5 != r0) { /* Next insn is delay slot */ pc=0x147a4; run_14600(); return; } r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r8 = r2 << (r8&0x1f); writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; case 0x137fc: writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; case 0x13800: pc=0x13800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13800() throws ExecutionException { /* 0x13800 - 0x13a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x13800: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13810: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14f40; run_14e00(); return; } r2 = r0 + 2; case 0x13854: r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r8 = r9 >>> (r8&0x1f); writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13870: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r4 = r2 + r4; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = r5 & 256; if(r7 != r0) { /* Next insn is delay slot */ pc=0x14520; run_14400(); return; } r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; case 0x138a4: r3 = r3 + -48; r3 = r2 + r3; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14500; run_14400(); return; } r2 = r0 + 1; r8 = r2 << (r8&0x1f); f0 = r8; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + 2; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x138f8: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x150b0; run_15000(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; { long hilo = (r8) * r2; hi = (int) (hilo >>> 32); lo = (int) hilo; } r2 = lo; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x1395c: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 3; r7 = r6 << 5; r7 = r7 - r4; r4 = r7 + -24; r7 = r7 + -48; r4 = r3 + r4; r3 = r3 + r7; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r8 = r7 | r5; r8 = r8 & 256; if(r8 != r0) { /* Next insn is delay slot */ pc=0x14cc8; run_14c00(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x15204; run_15200(); return; } r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r9 = r0 + 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x139e8; continue; } case 0x139bc: r10 = r2 & 1; { long hilo = (r9) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } if(r10 == r0) { /* Next insn is delay slot */ pc=0x139d0; continue; } r9 = lo; case 0x139d0: r2 = r2 >> 1; { long hilo = (r8) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } r8 = lo; if(r2 != r0) { /* Next insn is delay slot */ pc=0x139bc; continue; } case 0x139e8: writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r9; r2 = r0 + 2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x139fc: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; case 0x13a00: pc=0x13a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13a00() throws ExecutionException { /* 0x13a00 - 0x13c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x13a00: r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r2 << 3; r6 = r2 << 5; r6 = r6 - r4; r4 = r6 + -24; r6 = r6 + -48; r4 = r3 + r4; r3 = r3 + r6; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r6 = r7 | r5; r6 = r6 & 256; if(r6 != r0) { /* Next insn is delay slot */ pc=0x14e6c; run_14e00(); return; } case 0x13a3c: r6 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x14418; run_14400(); return; } r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; if(r6 != r0) { /* Next insn is delay slot */ hi = r8%r6; lo = r8/r6; pc=0x13a60; continue; } hi = r8%r6; lo = r8/r6; throw new ExecutionException("Break"); case 0x13a60: r6 = lo; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r6; r6 = r2 + r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13a78: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r2 << 3; r6 = r2 << 5; r6 = r6 - r4; r4 = r6 + -24; r6 = r6 + -48; r4 = r3 + r4; r3 = r3 + r6; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r6 = r7 | r5; r6 = r6 & 256; if(r6 == r0) { /* Next insn is delay slot */ pc=0x13a3c; continue; } r6 = r7 & 256; if(r6 != r0) { /* Next insn is delay slot */ pc=0x13ae0; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x13ae0: r6 = r5 & 256; if(r6 != r0) { /* Next insn is delay slot */ pc=0x153a8; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x13b04: f2 = r0; f3 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x152ec; run_15200(); return; } f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r6 = r2 + r0; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = r0 + 2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13b50: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r7 = r6 << 5; r7 = r7 - r3; r4 = r7 + -24; r3 = r7 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r9 = r8 | r5; r9 = r9 & 256; if(r9 != r0) { /* Next insn is delay slot */ pc=0x14910; run_14800(); return; } case 0x13b90: r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r8 == r0) { /* Next insn is delay slot */ pc=0x1456c; run_14400(); return; } r3 = r7 + -48; r3 = r2 + r3; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r8 != r0) { /* Next insn is delay slot */ hi = r2%r8; lo = r2/r8; pc=0x13bbc; continue; } hi = r2%r8; lo = r2/r8; throw new ExecutionException("Break"); case 0x13bbc: r7 = hi; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r7; case 0x13bc4: writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x130d4; run_13000(); return; case 0x13bd4: r4 = 7 << 16; r4 = r4 + -9064; /* Next insn is delay slot */ r31=0x13be4; pc=0x1b000; run_1b000(); return; case 0x13be4: r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; case 0x13c00: pc=0x13c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13c00() throws ExecutionException { /* 0x13c00 - 0x13e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x13c00: /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x13c08: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1458c; run_14400(); return; } r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r4 >> 16; /* Next insn is delay slot */ pc=0x140e4; run_14000(); return; case 0x13c50: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14d70; run_14c00(); return; } r2 = r0 + 2; case 0x13c94: r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = r9 & r8; case 0x13ca4: writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; r9 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r8 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r8 = r9 + r8; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13cc4: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14804; run_14800(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r8 ^ r2; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13d28: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x14678; run_14600(); return; } r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r4 >> 8; /* Next insn is delay slot */ pc=0x140e4; run_14000(); return; case 0x13d70: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x149e4; run_14800(); return; } r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r2 = r2 < r8 ? 1 : 0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x13dd0: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x14740; run_14600(); return; } case 0x13e00: pc=0x13e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_13e00() throws ExecutionException { /* 0x13e00 - 0x14000 */ int addr, tmp; for(;;) { switch(pc) { case 0x13e00: f0 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 | 256; { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x13e14: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x13e20; pc=0x32e00; run_32e00(); return; case 0x13e20: r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f1; case 0x13e30: writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x13e40: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1472c; run_14600(); return; } f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 | 256; { long l = Double.doubleToLongBits(((double)f2)); f13 = (int)(l >>> 32); f12 = (int)l; } writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x13e84: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x13e90; pc=0x32800; run_32800(); return; case 0x13e90: /* Next insn is delay slot */ pc=0x13e20; continue; case 0x13e98: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x146c4; run_14600(); return; } f0 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 | 256; { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x13edc: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x13ee8; pc=0x32c00; run_32c00(); return; case 0x13ee8: /* Next insn is delay slot */ pc=0x13e20; continue; case 0x13ef0: r5 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r2 = r0 + 128; writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r2; if(r5 == r0) { /* Next insn is delay slot */ pc=0x14770; run_14600(); return; } r2 = r0 + 17; if(r5 != r2) { /* Next insn is delay slot */ pc=0x14754; run_14600(); return; } r22 = r22 + -2; r2 = r0 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x124a4; run_12400(); return; case 0x13f28: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 == r0) { /* Next insn is delay slot */ pc=0x13e30; continue; } f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f2; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x13fac: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r3 + r2; r3 = r0 + 1; writePages[(r2+-8)>>>12][((r2+-8)>>>2)&0x3ff] = r3; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x13fe0: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; case 0x14000: pc=0x14000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14000() throws ExecutionException { /* 0x14000 - 0x14200 */ int addr, tmp; for(;;) { switch(pc) { case 0x14000: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1461c; run_14600(); return; } r5 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = 32768 << 16; r4 = r5 ^ r4; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; case 0x14024: r4 = r0 + -9; r3 = r3 & r4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = r0 - r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x1404c: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x145d8; run_14400(); return; } r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; case 0x14088: r4 = ~(r0 | r4); writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; r4 = r0 + -9; r3 = r3 & r4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x140a8: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x14634; run_14600(); return; } r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; case 0x140e4: r4 = r4 & 255; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; r3 = r3 | 8; r4 = r0 + -8; r3 = r3 & r4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x1410c: r4 = 3 << 16; r4 = r4 + 12288; /* Next insn is delay slot */ r31=0x1411c; pc=0x12000; run_12000(); return; case 0x1411c: /* Next insn is delay slot */ pc=0x13be4; run_13a00(); return; case 0x14124: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x13e30; run_13e00(); return; } f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 | 256; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f1; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13120; run_13000(); return; case 0x14180: r22 = r22 + -1; r2 = r0 + 5; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x1275c; run_12600(); return; case 0x14198: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r4 = r6 << 5; r3 = r6 << 3; r3 = r4 - r3; r4 = r3 + -24; r3 = r3 + -48; r4 = r2 + r4; r3 = r2 + r3; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r7 | r5; r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14ad4; run_14a00(); return; } r2 = r0 + 2; case 0x141dc: r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r8 = r9 | r8; /* Next insn is delay slot */ pc=0x13ca4; run_13c00(); return; case 0x141f4: r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r3 = r2 << 3; case 0x14200: pc=0x14200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14200() throws ExecutionException { /* 0x14200 - 0x14400 */ int addr, tmp; for(;;) { switch(pc) { case 0x14200: r2 = r2 << 5; r2 = r2 - r3; r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r2 = r2 + -24; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 != r0) { /* Next insn is delay slot */ pc=0x146d8; run_14600(); return; } f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 | 256; { long l = Double.doubleToLongBits(((double)f2)); f13 = (int)(l >>> 32); f12 = (int)l; } writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x14238: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x14244; pc=0x32400; run_32400(); return; case 0x14244: /* Next insn is delay slot */ pc=0x13e20; run_13e00(); return; case 0x1424c: r4 = 3 << 16; r4 = r4 + 12800; /* Next insn is delay slot */ r31=0x1425c; pc=0x12000; run_12000(); return; case 0x1425c: /* Next insn is delay slot */ pc=0x13be4; run_13a00(); return; case 0x14264: r5 = r0 + 84; /* Next insn is delay slot */ pc=0x12d84; run_12c00(); return; case 0x14270: r16 = r28 + -32588; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x1427c: r2 = r7 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x142cc; continue; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r8 = fcsr; r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r8; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; case 0x142cc: r2 = r5 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14318; continue; } f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14318: r4 = 7 << 16; r4 = r4 + -9024; /* Next insn is delay slot */ r31=0x14328; pc=0x1ae00; run_1ae00(); return; case 0x14328: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x130ac; run_13000(); return; case 0x1435c: r4 = 7 << 16; r4 = r4 + -8936; /* Next insn is delay slot */ r31=0x1436c; pc=0x1b800; run_1b800(); return; case 0x1436c: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x14378: r4 = 7 << 16; r4 = r4 + -9140; /* Next insn is delay slot */ r31=0x14388; pc=0x1ae00; run_1ae00(); return; case 0x14388: r16 = r28 + -32500; /* Next insn is delay slot */ pc=0x127cc; run_12600(); return; case 0x14394: /* Next insn is delay slot */ r31=0x1439c; pc=0x1f400; run_1f400(); return; case 0x1439c: r4 = readPages[(r28+-30816)>>>12][((r28+-30816)>>>2)&0x3ff]; r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x143b0; pc=0x31000; run_31000(); return; case 0x143b0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x14780; run_14600(); return; } r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x127d4; run_12600(); return; case 0x143c4: /* Next insn is delay slot */ r31=0x143cc; pc=0x1c000; run_1c000(); return; case 0x143cc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1258c; run_12400(); return; case 0x143d8: r4 = 7 << 16; r4 = r4 + -9200; /* Next insn is delay slot */ r31=0x143e8; pc=0x1b000; run_1b000(); return; case 0x143e8: /* Next insn is delay slot */ r31=0x143f0; pc=0x1c800; run_1c800(); return; case 0x143f0: /* Next insn is delay slot */ pc=0x12eb0; run_12e00(); return; case 0x143f8: r4 = 7 << 16; r4 = r4 + -6844; case 0x14400: pc=0x14400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14400() throws ExecutionException { /* 0x14400 - 0x14600 */ int addr, tmp; for(;;) { switch(pc) { case 0x14400: /* Next insn is delay slot */ r31=0x14408; pc=0x1b000; run_1b000(); return; case 0x14408: /* Next insn is delay slot */ r31=0x14410; pc=0x1c800; run_1c800(); return; case 0x14410: /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x14418: r6 = r5 & 16; if(r6 != r0) { /* Next insn is delay slot */ pc=0x151a0; run_15000(); return; } r6 = r2 + r0; case 0x14428: r2 = r0 + 2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; case 0x14430: writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x1443c: r4 = 7 << 16; r4 = r4 + -9228; r5 = r0 + -1; /* Next insn is delay slot */ r31=0x14450; pc=0x1b800; run_1b800(); return; case 0x14450: r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13298; run_13200(); return; case 0x1445c: /* Next insn is delay slot */ r31=0x14464; pc=0x1ec00; run_1ec00(); return; case 0x14464: r3 = r0 + 3; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x132b0; run_13200(); return; } case 0x14474: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 40; if(r3 == r2) { /* Next insn is delay slot */ pc=0x15420; run_15400(); return; } r6 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r4 = r0 + r0; r5 = r0 + r0; r6 = r6 + -1; /* Next insn is delay slot */ r31=0x1449c; pc=0x12200; run_12200(); return; case 0x1449c: /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x144a4: r16 = r0 + r0; r5 = r0 + 80; /* Next insn is delay slot */ pc=0x12e2c; run_12e00(); return; case 0x144b4: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r9 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r7 = r7 & r9; r10 = fcsr; r10 = fcsr; r1 = r10 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r10; r8 = f2; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ pc=0x137d0; run_13600(); return; case 0x14500: r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x15318; run_15200(); return; } r2 = r2 >> (r8&0x1f); writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x136a4; run_13600(); return; case 0x14520: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r7 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r7; r10 = fcsr; r10 = fcsr; r1 = r10 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r10; r8 = f2; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x138a4; run_13800(); return; case 0x1456c: r3 = r5 & 16; if(r3 != r0) { /* Next insn is delay slot */ pc=0x15220; run_15200(); return; } case 0x14578: r3 = r7 + -48; r3 = r2 + r3; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x13bc4; run_13a00(); return; case 0x1458c: f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; r4 = f2; r4 = r4 >> 16; /* Next insn is delay slot */ pc=0x140e4; run_14000(); return; case 0x145d8: f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; case 0x14600: pc=0x14600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14600() throws ExecutionException { /* 0x14600 - 0x14800 */ int addr, tmp; for(;;) { switch(pc) { case 0x14600: switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; r4 = f2; /* Next insn is delay slot */ pc=0x14088; run_14000(); return; case 0x1461c: r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r0 - r4; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x14024; run_14000(); return; case 0x14634: f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; r4 = f2; /* Next insn is delay slot */ pc=0x140e4; run_14000(); return; case 0x14678: f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; r4 = f2; r4 = r4 >> 8; /* Next insn is delay slot */ pc=0x140e4; run_14000(); return; case 0x146c4: f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13edc; run_13e00(); return; case 0x146d8: f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14238; run_14200(); return; case 0x146ec: r2 = r2 + -97; r16 = r16 << 4; r4 = r3 + -48; r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; r16 = r16 + r4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x133a8; run_13200(); return; } case 0x14708: r16 = r16 << 4; r3 = r3 + r16; r16 = r3 + -87; /* Next insn is delay slot */ pc=0x133a8; run_13200(); return; case 0x1471c: /* Next insn is delay slot */ r31=0x14724; pc=0x1c000; run_1c000(); return; case 0x14724: /* Next insn is delay slot */ pc=0x12eb0; run_12e00(); return; case 0x1472c: f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13e84; run_13e00(); return; case 0x14740: f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13e14; run_13e00(); return; case 0x14754: r4 = 7 << 16; r4 = r4 + -9084; /* Next insn is delay slot */ r31=0x14764; pc=0x1b800; run_1b800(); return; case 0x14764: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x14770: r20 = r20 + 1; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x13124; run_13000(); return; case 0x14780: r4 = 7 << 16; r4 = r4 + -9104; /* Next insn is delay slot */ r31=0x14790; pc=0x1b000; run_1b000(); return; case 0x14790: r2 = r0 + 4; writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; r2 = r0 + 4; /* Next insn is delay slot */ pc=0x1275c; run_12600(); return; case 0x147a4: f12 = readPages[(r28+-32380)>>>12][((r28+-32380)>>>2)&0x3ff]; f24 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; f0 = r8; f13 = readPages[(r28+-32384)>>>12][((r28+-32384)>>>2)&0x3ff]; f25 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f0)); f15 = (int)(l >>> 32); f14 = (int)l; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r3; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r4; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x147d4; pc=0x33400; run_33400(); return; case 0x147d4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x137fc; run_13600(); return; case 0x14800: pc=0x14800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14800() throws ExecutionException { /* 0x14800 - 0x14a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x14800: case 0x14804: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1482c; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x1482c: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15330; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x14854: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14904; continue; } case 0x14878: writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r0 + 2; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x14890: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x148b8; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x148b8: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x153f8; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x148e0: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14878; continue; } case 0x14904: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x14878; continue; case 0x14910: r2 = r8 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14960; continue; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r8 = r8 & r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; case 0x14960: r2 = r5 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x149ac; continue; } f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x149ac: r4 = 7 << 16; r4 = r4 + -9024; /* Next insn is delay slot */ r31=0x149bc; pc=0x1ae00; run_1ae00(); return; case 0x149bc: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r7 = r6 << 5; r7 = r7 - r3; r4 = r7 + -24; r4 = r2 + r4; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13b90; run_13a00(); return; case 0x149e4: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14a0c; run_14a00(); return; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x14a00: pc=0x14a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14a00() throws ExecutionException { /* 0x14a00 - 0x14c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x14a00: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14a0c: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x153bc; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x14a34: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14878; run_14800(); return; } /* Next insn is delay slot */ pc=0x14904; run_14800(); return; case 0x14a60: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14a88; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14a88: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15344; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x14ab0: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x1377c; run_13600(); return; case 0x14ad4: r2 = r7 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14b24; continue; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r8 = fcsr; r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r8; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; case 0x14b24: r2 = r5 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14b70; continue; } f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14b70: r4 = 7 << 16; r4 = r4 + -9024; /* Next insn is delay slot */ r31=0x14b80; pc=0x1ae00; run_1ae00(); return; case 0x14b80: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x141dc; run_14000(); return; case 0x14bd0: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14bf8; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14bf8: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x153d0; run_15200(); return; } case 0x14c00: pc=0x14c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_14c00() throws ExecutionException { /* 0x14c00 - 0x14e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x14c00: f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x14c20: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14878; run_14800(); return; } /* Next insn is delay slot */ pc=0x14904; run_14800(); return; case 0x14c4c: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x14c74; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14c74: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1536c; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x14c9c: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14878; run_14800(); return; } /* Next insn is delay slot */ pc=0x14904; run_14800(); return; case 0x14cc8: r8 = r7 & 256; if(r8 != r0) { /* Next insn is delay slot */ pc=0x14cf0; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14cf0: r7 = r5 & 256; if(r7 != r0) { /* Next insn is delay slot */ pc=0x1540c; run_15400(); return; } f0 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; { long l = Double.doubleToLongBits(((double)f0)); f15 = (int)(l >>> 32); f14 = (int)l; } writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f14; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f15; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14d14: f12 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; f13 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r3; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r4; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x14d38; pc=0x33400; run_33400(); return; case 0x14d38: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x14d70: r2 = r7 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14dc0; continue; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r8 = fcsr; r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r8; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; case 0x14dc0: r2 = r5 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14e0c; run_14e00(); return; } f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; case 0x14e00: pc=0x14e00; 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: writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14e0c: r4 = 7 << 16; r4 = r4 + -9024; /* Next insn is delay slot */ r31=0x14e1c; pc=0x1ae00; run_1ae00(); return; case 0x14e1c: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13c94; run_13c00(); return; case 0x14e6c: r6 = r7 & 256; if(r6 != r0) { /* Next insn is delay slot */ pc=0x14e94; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x14e94: r6 = r5 & 256; if(r6 != r0) { /* Next insn is delay slot */ pc=0x15358; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14eb8: f2 = r0; f3 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x15258; run_15200(); return; } f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; r6 = r2 + r0; r2 = r0 + 2; case 0x14f20: r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = r0 + -257; r7 = r7 & r5; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x14f40: r2 = r7 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14f90; continue; } f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r8 = fcsr; r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r8; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; case 0x14f90: r2 = r5 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14fdc; continue; } f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r0 + -257; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 & r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; case 0x14fdc: r4 = 7 << 16; r4 = r4 + -9024; /* Next insn is delay slot */ r31=0x14fec; pc=0x1ae00; run_1ae00(); return; case 0x14fec: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; case 0x15000: pc=0x15000; 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: r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13854; run_13800(); return; case 0x1503c: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15064; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x15064: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15380; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x1508c: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x13708; run_13600(); return; case 0x150b0: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x150d8; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x150d8: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x153e4; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x15100: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = r0 + 2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x15124: r2 = r7 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1514c; continue; } f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 | 256; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; case 0x1514c: r2 = r5 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15394; run_15200(); return; } f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r5 = r5 | 256; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; case 0x15174: f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = r0 + -257; f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r7 = r7 & r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; r2 = r0 + 1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x14878; run_14800(); return; } /* Next insn is delay slot */ pc=0x14904; run_14800(); return; case 0x151a0: r4 = 7 << 16; r4 = r4 + -8004; case 0x151a8: /* Next insn is delay slot */ r31=0x151b0; pc=0x1b000; run_1b000(); return; case 0x151b0: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x14430; run_14400(); return; case 0x15200: pc=0x15200; 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 0x15204: r2 = r5 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x14428; run_14400(); return; } r4 = 7 << 16; r4 = r4 + -9048; /* Next insn is delay slot */ pc=0x151a8; run_15000(); return; case 0x15220: r4 = 7 << 16; r4 = r4 + -8004; /* Next insn is delay slot */ r31=0x15230; pc=0x1b000; run_1b000(); return; case 0x15230: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r7 = r6 << 5; r7 = r7 - r3; r4 = r7 + -24; r4 = r2 + r4; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14578; run_14400(); return; case 0x15258: r5 = r5 & 16; if(r5 != r0) { /* Next insn is delay slot */ pc=0x15604; run_15600(); return; } r6 = r2 + r0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; r2 = r0 + 2; /* Next insn is delay slot */ pc=0x14f20; run_14e00(); return; case 0x15278: /* Next insn is delay slot */ r31=0x15280; pc=0x1c000; run_1c000(); return; case 0x15280: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; f0 = r16; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; { long l = Double.doubleToLongBits(((double)f0)); f29 = (int)(l >>> 32); f28 = (int)l; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x15660; run_15600(); return; } f24 = readPages[(r28+-32388)>>>12][((r28+-32388)>>>2)&0x3ff]; f26 = f22; f27 = f23; f25 = readPages[(r28+-32392)>>>12][((r28+-32392)>>>2)&0x3ff]; case 0x152ac: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } r2 = r2 & 15; f2 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } /* Next insn is delay slot */ r31=0x152cc; pc=0x1c000; run_1c000(); return; case 0x152cc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r2 + -48; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x152ac; continue; } /* Next insn is delay slot */ pc=0x12bb0; run_12a00(); return; case 0x152ec: r6 = r5 & 16; if(r6 != r0) { /* Next insn is delay slot */ pc=0x155a8; run_15400(); return; } r6 = r2 + r0; r2 = r0 + 2; case 0x15300: writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x130f0; run_13000(); return; case 0x15318: r2 = ~(r0 | r2); r2 = r2 >> (r8&0x1f); r2 = ~(r0 | r2); writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x136a4; run_13600(); return; case 0x15330: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14854; run_14800(); return; case 0x15344: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14ab0; run_14a00(); return; case 0x15358: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14eb8; run_14e00(); return; case 0x1536c: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14c9c; run_14c00(); return; case 0x15380: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1508c; run_15000(); return; case 0x15394: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15174; run_15000(); return; case 0x153a8: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x13b04; run_13a00(); return; case 0x153bc: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14a34; run_14a00(); return; case 0x153d0: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14c20; run_14c00(); return; case 0x153e4: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15100; run_15000(); return; case 0x153f8: f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; case 0x15400: pc=0x15400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_15400() throws ExecutionException { /* 0x15400 - 0x15600 */ int addr, tmp; for(;;) { switch(pc) { case 0x15400: f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x148e0; run_14800(); return; case 0x1540c: f14 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f15 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x14d14; run_14c00(); return; case 0x15420: r4 = readPages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1542c; pc=0x18000; run_18000(); return; case 0x1542c: r4 = readPages[(r28+-30820)>>>12][((r28+-30820)>>>2)&0x3ff]; r6 = readPages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x15440; pc=0x31000; run_31000(); return; case 0x15440: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1555c; continue; } r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r22 + 1; writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r22 = r22 << 2; r2 = r2 + r22; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x15474: r2 = r0 + 80; /* Next insn is delay slot */ pc=0x1341c; run_13400(); return; case 0x15480: r30 = r0 + -1; r22 = r0 + r0; r16 = r0 + 46; case 0x1548c: r30 = r30 + 1; /* Next insn is delay slot */ r31=0x15498; pc=0x1c000; run_1c000(); return; case 0x15498: if(r2 == r16) { /* Next insn is delay slot */ pc=0x15528; continue; } r5 = r2 < 47 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x15534; continue; } r4 = r0 + 48; if(r2 == r4) { /* Next insn is delay slot */ pc=0x15528; continue; } r5 = r0 + 49; if(r2 == r5) { /* Next insn is delay slot */ pc=0x15540; continue; } case 0x154c4: r2 = r30 < 9 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15550; continue; } r4 = r30 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x15578; continue; } r2 = 1 << 16; r2 = r22 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15550; continue; } r2 = r0 + 84; case 0x154f0: r5 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r6 = r5 << 5; r4 = r5 << 3; r4 = r6 - r4; r6 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r5 = r5 + 1; r4 = r6 + r4; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r22; writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r5; writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x12c58; run_12c00(); return; case 0x15528: r22 = r22 << 1; /* Next insn is delay slot */ pc=0x1548c; continue; case 0x15534: r3 = r0 + 35; if(r2 != r3) { /* Next insn is delay slot */ pc=0x154c4; continue; } case 0x15540: r3 = r22 << 1; r22 = r3 | 1; /* Next insn is delay slot */ pc=0x1548c; continue; case 0x15550: r2 = r0 + 80; /* Next insn is delay slot */ pc=0x154f0; continue; case 0x1555c: r4 = 7 << 16; r4 = r4 + -9160; /* Next insn is delay slot */ r31=0x1556c; pc=0x1b000; run_1b000(); return; case 0x1556c: r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x125d8; run_12400(); return; case 0x15578: r2 = r22 < 256 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15550; continue; } r2 = r0 + 82; /* Next insn is delay slot */ pc=0x154f0; continue; case 0x15590: r2 = r16 < 256 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15474; continue; } r2 = r0 + 82; /* Next insn is delay slot */ pc=0x1341c; run_13400(); return; case 0x155a8: r4 = 7 << 16; r4 = r4 + -8004; /* Next insn is delay slot */ r31=0x155b8; pc=0x1b000; run_1b000(); return; case 0x155b8: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r4 = r2 + r4; r3 = r2 + r3; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15300; run_15200(); return; case 0x15600: pc=0x15600; 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 0x15604: r4 = 7 << 16; r4 = r4 + -8004; /* Next insn is delay slot */ r31=0x15614; pc=0x1b000; run_1b000(); return; case 0x15614: r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r6 << 3; r4 = r6 << 5; r4 = r4 - r3; r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; r3 = r4 + -48; r4 = r4 + -24; r3 = r2 + r3; r4 = r2 + r4; r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r22 << 2; r2 = r2 + -8; r16 = r16 + r2; r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x14f20; run_14e00(); return; case 0x15660: f26 = f20; f27 = f21; /* Next insn is delay slot */ pc=0x12bb0; run_12a00(); return; case 0x15800: pc=0x15800; 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: r29 = r29 + -24; r4 = r0 + 256; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x15814; pc=0x17600; run_17600(); return; case 0x15814: r4 = r0 + 8; writePages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x15824; pc=0x17600; run_17600(); return; case 0x15824: r4 = r0 + 256; writePages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x15834; pc=0x17600; run_17600(); return; case 0x15834: r5 = 7 << 16; r4 = r28 + -30816; r5 = r5 + 5648; writePages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x1584c; pc=0x30e00; run_30e00(); return; case 0x1584c: r5 = 7 << 16; r4 = r28 + -30820; r5 = r5 + 5448; /* Next insn is delay slot */ r31=0x15860; pc=0x30e00; run_30e00(); return; case 0x15860: r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; r2 = r5 << 1; r5 = r5 << 3; writePages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x1587c; pc=0x40600; run_40600(); return; case 0x1587c: writePages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x158c8; continue; } r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r2 << 1; r5 = r2 << 4; r2 = r2 << 6; r5 = r2 - r5; writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x158ac; pc=0x40600; run_40600(); return; case 0x158ac: writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15908; continue; } case 0x158b8: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x158c8: r4 = 7 << 16; r4 = r4 + -6876; /* Next insn is delay slot */ r31=0x158d8; pc=0x1b200; run_1b200(); return; case 0x158d8: r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; r3 = r2 << 1; r5 = r2 << 4; r2 = r2 << 6; r5 = r2 - r5; writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x158fc; pc=0x40600; run_40600(); return; case 0x158fc: writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x158b8; continue; } case 0x15908: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6876; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b200; run_1b200(); return; 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: r29 = r29 + -48; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x15a1c; pc=0x12400; run_12400(); return; case 0x15a1c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x15ad4; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r0 + 64; r5 = r2 & 80; if(r5 == r3) { /* Next insn is delay slot */ pc=0x15af8; continue; } case 0x15a38: r3 = r2 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x15abc; continue; } r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15a70; continue; } r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x15a70: f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r0 + 1; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f2; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x15abc: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x15ad4: r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x15ae4; pc=0x1b000; run_1b000(); return; case 0x15ae4: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r0 + 64; r5 = r2 & 80; if(r5 != r3) { /* Next insn is delay slot */ pc=0x15a38; continue; } case 0x15af8: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; /* Next insn is delay slot */ r31=0x15b10; pc=0x17e00; run_17e00(); return; case 0x15b10: r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x15b24; pc=0x17e00; run_17e00(); return; case 0x15b24: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x15b38; pc=0x17e00; run_17e00(); return; case 0x15b38: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x15b48; pc=0x17c00; run_17c00(); return; case 0x15b48: r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x15b5c; pc=0x1b200; run_1b200(); return; case 0x15b5c: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15a38; continue; 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: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; /* Next insn is delay slot */ r31=0x15c18; pc=0x12400; run_12400(); return; case 0x15c18: if(r2 != r0) { /* Next insn is delay slot */ pc=0x15d28; continue; } case 0x15c20: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 256; if(r3 == r0) { /* Next insn is delay slot */ pc=0x15c74; continue; } f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r0 + -257; f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 & r3; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x15c74: r3 = r2 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x15d40; continue; } r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x15ca0; continue; } case 0x15c8c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x15ca0: r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r2; if(r16 == r0) { /* Next insn is delay slot */ pc=0x15c8c; continue; } r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; /* Next insn is delay slot */ r31=0x15cd0; pc=0x17e00; run_17e00(); return; case 0x15cd0: r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x15ce4; pc=0x17e00; run_17e00(); return; case 0x15ce4: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x15cf8; pc=0x17e00; run_17e00(); return; case 0x15cf8: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x15d08; pc=0x17c00; run_17c00(); return; case 0x15d08: r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r25 = r16 + r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r25; return; case 0x15d28: r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x15d38; pc=0x1b000; run_1b000(); return; case 0x15d38: /* Next insn is delay slot */ pc=0x15c20; continue; case 0x15d40: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -8020; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x15e00: pc=0x15e00; 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: r29 = r29 + -48; r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x15e18; pc=0x12400; run_12400(); return; case 0x15e18: if(r2 != r0) { /* Next insn is delay slot */ pc=0x15ec8; continue; } case 0x15e20: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r2 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x15eac; continue; } r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x15ee0; continue; } case 0x15e40: r2 = r2 & 256; if(r2 != r0) { /* Next insn is delay slot */ pc=0x15e64; continue; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x15e64: f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; r2 = f2; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x15eac: r4 = 7 << 16; r4 = r4 + -8020; /* Next insn is delay slot */ r31=0x15ebc; pc=0x1b000; run_1b000(); return; case 0x15ebc: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15e40; continue; case 0x15ec8: r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x15ed8; pc=0x1b000; run_1b000(); return; case 0x15ed8: /* Next insn is delay slot */ pc=0x15e20; continue; case 0x15ee0: r3 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r3; if(r16 == r0) { /* Next insn is delay slot */ pc=0x15e40; continue; } r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; /* Next insn is delay slot */ r31=0x15f10; pc=0x17e00; run_17e00(); return; case 0x15f10: r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x15f24; pc=0x17e00; run_17e00(); return; case 0x15f24: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x15f38; pc=0x17e00; run_17e00(); return; case 0x15f38: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x15f48; pc=0x17c00; run_17c00(); return; case 0x15f48: r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r16; r31=0x15f5c; return; case 0x15f5c: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x15e40; continue; case 0x16000: pc=0x16000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_16000() throws ExecutionException { /* 0x16000 - 0x16200 */ int addr, tmp; for(;;) { switch(pc) { case 0x16000: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; /* Next insn is delay slot */ r31=0x16018; pc=0x12400; run_12400(); return; case 0x16018: if(r2 != r0) { /* Next insn is delay slot */ pc=0x16094; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x160b8; continue; } case 0x16034: r3 = r2 & 256; if(r3 == r0) { /* Next insn is delay slot */ pc=0x16080; continue; } f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r0 + -257; f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 & r3; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x16080: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x16094: r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x160a4; pc=0x1b000; run_1b000(); return; case 0x160a4: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 16; if(r3 != r0) { /* Next insn is delay slot */ pc=0x16034; continue; } case 0x160b8: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; /* Next insn is delay slot */ r31=0x160d0; pc=0x17e00; run_17e00(); return; case 0x160d0: r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x160e4; pc=0x17e00; run_17e00(); return; case 0x160e4: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x160f8; pc=0x17e00; run_17e00(); return; case 0x160f8: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x16108; pc=0x17c00; run_17c00(); return; case 0x16108: r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1611c; pc=0x1b200; run_1b200(); return; case 0x1611c: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x16034; continue; case 0x16200: pc=0x16200; 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: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r16 = r4 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x16218; pc=0x12400; run_12400(); return; case 0x16218: r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r3 & 256; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1626c; continue; } f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r4 = r0 + -257; f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = r3 & r4; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; case 0x1626c: r3 = r2 < 2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1628c; continue; } r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x16288; pc=0x1b000; run_1b000(); return; case 0x16288: r2 = r0 + r0; case 0x1628c: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 64; r4 = r4 & 80; if(r4 == r3) { /* Next insn is delay slot */ pc=0x162b4; continue; } case 0x162a0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x162b4: r3 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r3; if(r16 == r0) { /* Next insn is delay slot */ pc=0x162a0; continue; } r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x162e8; pc=0x17e00; run_17e00(); return; case 0x162e8: r3 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x162fc; pc=0x17e00; run_17e00(); return; case 0x162fc: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x16310; pc=0x17e00; run_17e00(); return; case 0x16310: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x16320; pc=0x17c00; run_17c00(); return; case 0x16320: r3 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r16; r31=0x16334; return; case 0x16334: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x16400: pc=0x16400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_16400() throws ExecutionException { /* 0x16400 - 0x16600 */ int addr, tmp; for(;;) { switch(pc) { case 0x16400: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; /* Next insn is delay slot */ r31=0x16418; pc=0x12400; run_12400(); return; case 0x16418: if(r2 != r0) { /* Next insn is delay slot */ pc=0x164dc; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x16500; continue; } case 0x16434: r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x16454; continue; } case 0x16440: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x16454: r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r2; if(r16 == r0) { /* Next insn is delay slot */ pc=0x16440; continue; } r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r5 + -8864; /* Next insn is delay slot */ r31=0x16484; pc=0x17e00; run_17e00(); return; case 0x16484: r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x16498; pc=0x17e00; run_17e00(); return; case 0x16498: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6496; /* Next insn is delay slot */ r31=0x164ac; pc=0x17e00; run_17e00(); return; case 0x164ac: r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x164bc; pc=0x17c00; run_17c00(); return; case 0x164bc: r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r25 = r16 + r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r25; return; case 0x164dc: r4 = 7 << 16; r4 = r4 + -8036; /* Next insn is delay slot */ r31=0x164ec; pc=0x1b000; run_1b000(); return; case 0x164ec: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 64; if(r3 != r0) { /* Next insn is delay slot */ pc=0x16434; continue; } case 0x16500: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -8020; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x16600: pc=0x16600; 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: r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x16634; continue; } r2 = r2 + -1; writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; r3 = r2 + 4; writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r3; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x16634: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; 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 + -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; r17 = r4 + r0; r18 = r5 + r0; r16 = r0 + 45; case 0x16820: r3 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x168ec; continue; } r6 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r7 = tmp; if(r7 != r16) { /* Next insn is delay slot */ pc=0x168ec; continue; } r3 = r3 + -1; writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r3; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r6 = r6 + 4; writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r6; r4 = r2 + 1; if(r3 != r16) { /* Next insn is delay slot */ pc=0x168ac; 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 */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x168ec; continue; } r4 = r2 + 2; /* Next insn is delay slot */ pc=r18; r31=0x1688c; return; case 0x1688c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x16820; continue; } r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + -7984; /* Next insn is delay slot */ pc=0x168cc; continue; case 0x168ac: /* Next insn is delay slot */ pc=r17; r31=0x168b4; return; case 0x168b4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x16820; continue; } r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + -7956; case 0x168cc: r6 = 7 << 16; r6 = r6 + -7904; r7 = r2 + r0; /* Next insn is delay slot */ r31=0x168e0; pc=0x3bc00; run_3bc00(); return; case 0x168e0: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x168ec; pc=0x38e00; run_38e00(); return; case 0x168ec: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; r29 = r29 + -24; r7 = r4 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r2 == r0) { /* Next insn is delay slot */ pc=0x16a4c; continue; } r2 = r2 + -1; writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; r3 = r2 + 4; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x16a4c; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x16a4c: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = 7 << 16; r5 = r5 + -7928; r6 = r6 + -7904; /* Next insn is delay slot */ r31=0x16a6c; pc=0x3bc00; run_3bc00(); return; case 0x16a6c: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x16a78; pc=0x38e00; run_38e00(); return; case 0x16a78: 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: writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r4; writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r5; if(r4 == r0) { /* Next insn is delay slot */ pc=0x16c2c; continue; } r2 = r5 + 4; r4 = r4 + -1; writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r2; writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r4; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x16c2c: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; r3 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; r29 = r29 + -24; r7 = r6 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r3; if(r6 == r0) { /* Next insn is delay slot */ pc=0x16e2c; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x16e3c; continue; } case 0x16e2c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x16e3c: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r6 = 7 << 16; r5 = r5 + -7912; r6 = r6 + -7904; /* Next insn is delay slot */ r31=0x16e5c; pc=0x3bc00; run_3bc00(); return; case 0x16e5c: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x16e68; pc=0x38e00; run_38e00(); return; case 0x16e68: 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: r4 = readPages[(r28+-30760)>>>12][((r28+-30760)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x17054; continue; } case 0x17014: r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x17024; pc=0x31000; run_31000(); return; case 0x17024: if(r2 == r0) { /* Next insn is delay slot */ pc=0x17040; continue; } 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 0x17040: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x17054: r5 = 7 << 16; r4 = r28 + -30760; r5 = r5 + 5848; /* Next insn is delay slot */ r31=0x17068; pc=0x30e00; run_30e00(); return; case 0x17068: r4 = readPages[(r28+-30760)>>>12][((r28+-30760)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x17014; continue; case 0x17200: pc=0x17200; 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: r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x17228; continue; } if(r5 != r0) { /* Next insn is delay slot */ pc=0x17234; continue; } case 0x17228: writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=r31; return; case 0x17234: r4 = 7 << 16; r4 = r4 + -7876; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x17400: pc=0x17400; 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: if(r4 == r0) { /* Next insn is delay slot */ pc=0x17418; continue; } r2 = 7 << 16; writePages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=r31; return; case 0x17418: r4 = 7 << 16; r4 = r4 + 5996; r2 = 7 << 16; writePages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=r31; return; case 0x17600: pc=0x17600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_17600() throws ExecutionException { /* 0x17600 - 0x17800 */ int addr, tmp; for(;;) { switch(pc) { case 0x17600: r29 = r29 + -32; r2 = r4 < 128 ? 1 : 0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x17624; continue; } r17 = r0 + 128; case 0x17624: r4 = r0 + 12; /* Next insn is delay slot */ r31=0x17630; pc=0x3e800; run_3e800(); return; case 0x17630: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x17678; continue; } writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r17; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x17650; pc=0x3e800; run_3e800(); return; case 0x17650: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x17678; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x17678: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r4 = 7 << 16; r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r4 + -7800; r5 = r0 + 1; r6 = r0 + 37; /* Next insn is delay slot */ r31=0x17698; pc=0x3dc00; run_3dc00(); return; case 0x17698: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x176a4; pc=0x38e00; run_38e00(); return; case 0x176a4: case 0x17800: pc=0x17800; 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: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; r17 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; r17 = r17 << 1; r16 = r4 + r0; r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r17 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1782c; pc=0x40600; run_40600(); return; case 0x1782c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x17854; continue; } r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x17854: r4 = 7 << 16; r4 = r4 + -6876; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x17868; pc=0x1b200; run_1b200(); return; case 0x17868: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; 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: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x17a1c; pc=0x1b400; run_1b400(); return; case 0x17a1c: r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r6 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r4 = r2 + r0; /* Next insn is delay slot */ r31=0x17a30; pc=0x48fdc; run_48e00(); return; case 0x17a30: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; 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: r29 = r29 + -40; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; r17 = r5 << 24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; r16 = r4 + r0; r17 = r17 >> 24; if(r3 == r2) { /* Next insn is delay slot */ pc=0x17c60; continue; } r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r3 + 1; r3 = r2 + r3; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x17c60: r18 = r3 << 1; r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x17c74; pc=0x40600; run_40600(); return; case 0x17c74: if(r2 == r0) { /* Next insn is delay slot */ pc=0x17cb4; continue; } case 0x17c7c: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; r4 = r3 + 1; r3 = r2 + r3; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x17cb4: r4 = 7 << 16; r4 = r4 + -6876; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x17cc8; pc=0x1b200; run_1b200(); return; case 0x17cc8: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x17c7c; continue; case 0x17e00: pc=0x17e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_17e00() throws ExecutionException { /* 0x17e00 - 0x18000 */ int addr, tmp; for(;;) { switch(pc) { case 0x17e00: r29 = r29 + -48; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r17 = tmp; r18 = r5 + 1; if(r17 == r0) { /* Next insn is delay slot */ pc=0x17ec8; continue; } r19 = 7 << 16; r16 = r4 + r0; r19 = r19 + -6876; /* Next insn is delay slot */ pc=0x17e68; continue; case 0x17e40: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r5 + 1; r5 = r2 + r5; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; r18 = r18 + 1; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r18+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r17 = tmp; if(r17 == r0) { /* Next insn is delay slot */ pc=0x17ec8; continue; } case 0x17e68: r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r5 != r2) { /* Next insn is delay slot */ pc=0x17e40; continue; } r20 = r5 << 1; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r5 = r20 + r0; /* Next insn is delay slot */ r31=0x17e90; pc=0x40600; run_40600(); return; case 0x17e90: if(r2 == r0) { /* Next insn is delay slot */ pc=0x17eec; continue; } case 0x17e98: r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r20; r3 = r5 + 1; r5 = r2 + r5; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; r18 = r18 + 1; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r18+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r17 = tmp; if(r17 != r0) { /* Next insn is delay slot */ pc=0x17e68; continue; } case 0x17ec8: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x17eec: r4 = r19 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x17efc; pc=0x1b200; run_1b200(); return; case 0x17efc: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x17e98; continue; case 0x18000: pc=0x18000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_18000() throws ExecutionException { /* 0x18000 - 0x18200 */ int addr, tmp; for(;;) { switch(pc) { case 0x18000: r29 = r29 + -40; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; r18 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; r2 = r2 < r18 ? 1 : 0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r16 = r4 + r0; r17 = r5 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1808c; continue; } r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; case 0x18034: r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1806c; continue; } case 0x1804c: r3 = r3 | 32; r2 = r2 + 1; r4 = r4 + 1; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1804c; continue; } case 0x1806c: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1808c: r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x1809c; pc=0x40600; run_40600(); return; case 0x1809c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x180b4; continue; } writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x18034; continue; case 0x180b4: r4 = 7 << 16; r4 = r4 + -6876; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x180c8; pc=0x1b200; run_1b200(); return; case 0x180c8: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x18034; continue; case 0x18200: pc=0x18200; 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: r29 = r29 + -24; r4 = r0 + 12; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x18218; pc=0x3e800; run_3e800(); return; case 0x18218: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x18260; continue; } writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r4 = r0 + 1024; r2 = r0 + 1024; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x1823c; pc=0x3e800; run_3e800(); return; case 0x1823c: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x18260; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff] = r16; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x18260: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r4 = 7 << 16; r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r4 + -7800; r5 = r0 + 1; r6 = r0 + 37; /* Next insn is delay slot */ r31=0x18280; pc=0x3dc00; run_3dc00(); return; case 0x18280: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x1828c; pc=0x38e00; run_38e00(); return; case 0x1828c: case 0x18400: pc=0x18400; 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: r2 = r4 << 24; r2 = r2 >> 24; /* Next insn is delay slot */ pc=r31; return; case 0x18600: pc=0x18600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_18600() throws ExecutionException { /* 0x18600 - 0x18800 */ int addr, tmp; for(;;) { switch(pc) { case 0x18600: r4 = r4 << 24; r4 = r4 >> 24; r3 = r4 & 255; r2 = r3 + -65; r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1864c; continue; } r2 = r3 + -97; r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x18640; continue; } r3 = r3 + -32; r2 = r3 << 24; r2 = r2 >> 24; /* Next insn is delay slot */ pc=r31; return; case 0x18640: r2 = r4 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x1864c: r2 = r0 + -128; r2 = r4 | r2; /* Next insn is delay slot */ pc=r31; return; case 0x18800: pc=0x18800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_18800() throws ExecutionException { /* 0x18800 - 0x18a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x18800: r2 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; r4 = r4 & 255; r4 = r2 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=r31; 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: r4 = r4 << 24; r4 = r4 >> 24; r3 = r4 & 255; r2 = r3 + -97; r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x18a64; continue; } r2 = r3 + -91; r2 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x18a50; continue; } r2 = r0 + 96; if(r4 == r2) { /* Next insn is delay slot */ pc=0x18a78; continue; } r2 = r0 + 64; if(r4 == r2) { /* Next insn is delay slot */ pc=0x18a84; continue; } r2 = r4 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x18a50: r3 = r3 + -64; r2 = r3 << 24; r2 = r2 >> 24; /* Next insn is delay slot */ pc=r31; return; case 0x18a64: r3 = r3 + -96; r2 = r3 << 24; r2 = r2 >> 24; /* Next insn is delay slot */ pc=r31; return; case 0x18a78: r2 = r0 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x18a84: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; r4 = r4 << 24; r25 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r4 >> 24; /* Next insn is delay slot */ pc=r25; return; 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 = r28 + -32348; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=r31; return; 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: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r5 + r0; r5 = 7 << 16; r5 = r5 + 12832; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x19028; pc=0x3b800; run_3b800(); return; case 0x19028: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x19084; continue; } r4 = r17 + r0; r5 = r0 + 1; r6 = r0 + 256; r7 = r2 + r0; /* Next insn is delay slot */ r31=0x1904c; pc=0x3c600; run_3c600(); return; case 0x1904c: r3 = r0 + 256; if(r2 == r3) { /* Next insn is delay slot */ pc=0x19068; continue; } r4 = 7 << 16; r4 = r4 + -7760; /* Next insn is delay slot */ r31=0x19068; pc=0x1b000; run_1b000(); return; case 0x19068: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r16 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x39200; run_39200(); return; case 0x19084: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6824; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x19200: pc=0x19200; 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: r4 = readPages[(r28+-30756)>>>12][((r28+-30756)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x19240; continue; } case 0x19214: r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x19224; pc=0x31000; run_31000(); return; case 0x19224: if(r2 == r0) { /* Next insn is delay slot */ pc=0x19260; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x19230: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x19240: r5 = 7 << 16; r4 = r28 + -30756; r5 = r5 + 6008; /* Next insn is delay slot */ r31=0x19254; pc=0x30e00; run_30e00(); return; case 0x19254: r4 = readPages[(r28+-30756)>>>12][((r28+-30756)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x19214; continue; case 0x19260: r4 = 7 << 16; r4 = r4 + -7728; /* Next insn is delay slot */ r31=0x19270; pc=0x1b000; run_1b000(); return; case 0x19270: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x19230; continue; case 0x19400: pc=0x19400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_19400() throws ExecutionException { /* 0x19400 - 0x19600 */ int addr, tmp; for(;;) { switch(pc) { case 0x19400: r29 = r29 + -88; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; r19 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r29 + 40; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; r5 = r19 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; /* Next insn is delay slot */ r31=0x19438; pc=0x48fdc; run_48e00(); return; case 0x19438: r3 = r2 + r0; r2 = r0 + 1; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; r2 = r0 + 80; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r5 = r29 + 16; r6 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x19474; pc=0x2f600; run_2f600(); return; case 0x19474: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x19540; continue; } r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1951c; continue; } r18 = 7 << 16; r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = r0 + 125; r18 = r18 + -7708; case 0x194a4: r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r3 + r2; r5 = r29 + 16; r6 = r0 + 1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x194c4; pc=0x2f600; run_2f600(); return; case 0x194c4: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r3 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x194e8; pc=0x1a400; run_1a400(); return; case 0x194e8: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 == r17) { /* Next insn is delay slot */ pc=0x19504; continue; } r4 = r18 + r0; /* Next insn is delay slot */ r31=0x19504; pc=0x1b800; run_1b800(); return; case 0x19504: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r2 < r3 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x194a4; continue; } case 0x1951c: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x19540: r18 = 7 << 16; r17 = r0 + 125; r18 = r18 + -7708; case 0x1954c: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r3 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x19570; pc=0x1a400; run_1a400(); return; case 0x19570: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 == r17) { /* Next insn is delay slot */ pc=0x1958c; continue; } r4 = r18 + r0; /* Next insn is delay slot */ r31=0x1958c; pc=0x1b800; run_1b800(); return; case 0x1958c: r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r3 + r2; r5 = r29 + 16; r6 = r0 + 1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x195b0; pc=0x2f600; run_2f600(); return; case 0x195b0: r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r2 = r3 + r2; r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x1954c; continue; } r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x19600: pc=0x19600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_19600() throws ExecutionException { /* 0x19600 - 0x19800 */ int addr, tmp; for(;;) { switch(pc) { case 0x19600: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r29 = r29 + -40; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r17 = r5 << 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r17 = r17 >> 24; r16 = r4 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r0; if(r2 == r17) { /* Next insn is delay slot */ pc=0x196b8; continue; } /* Next insn is delay slot */ r31=0x1964c; pc=0x1f400; run_1f400(); return; case 0x1964c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x196b8; continue; } r18 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = 7 << 16; r19 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; r5 = r5 + -7684; r4 = r19 + r0; /* Next insn is delay slot */ r31=0x19670; pc=0x42c00; run_42c00(); return; case 0x19670: if(r2 != r0) { /* Next insn is delay slot */ pc=0x196d8; continue; } case 0x19678: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; if(r3 == r2) { /* Next insn is delay slot */ pc=0x19704; continue; } case 0x19688: r4 = r17 + r0; writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x19698; pc=0x1d800; run_1d800(); return; case 0x19698: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x196a8; pc=0x17c00; run_17c00(); return; case 0x196a8: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x196b4; pc=0x17a00; run_17a00(); return; case 0x196b4: writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; case 0x196b8: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x196d8: r5 = 7 << 16; r4 = r19 + r0; r5 = r5 + -7676; /* Next insn is delay slot */ r31=0x196ec; pc=0x42c00; run_42c00(); return; case 0x196ec: if(r2 != r0) { /* Next insn is delay slot */ pc=0x19718; continue; } r2 = r0 + 1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x19678; continue; case 0x19704: /* Next insn is delay slot */ r31=0x1970c; pc=0x1c000; run_1c000(); return; case 0x1970c: r18 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x19688; continue; case 0x19718: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6980; r29 = r29 + 40; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x19800: pc=0x19800; 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: r29 = r29 + -88; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r20; r20 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r29 + 40; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; r5 = r20 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r19; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1983c; pc=0x48fdc; run_48e00(); return; case 0x1983c: r3 = r2 + r0; r19 = 7 << 16; r2 = r0 + 1; r18 = 7 << 16; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r3; r2 = r3 + r0; r19 = r19 + -6980; r17 = r0 + 125; r18 = r18 + -7708; case 0x19864: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x198cc; continue; } r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x19888; pc=0x1c000; run_1c000(); return; case 0x19888: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x19894; pc=0x16000; run_16000(); return; case 0x19894: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x199d8; continue; } case 0x198a4: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x199a8; continue; } r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; case 0x198c0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1997c; continue; } r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x198cc: r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x198ec; pc=0x1a400; run_1a400(); return; case 0x198ec: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 == r17) { /* Next insn is delay slot */ pc=0x19908; continue; } r4 = r18 + r0; /* Next insn is delay slot */ r31=0x19908; pc=0x1b800; run_1b800(); return; case 0x19908: r2 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x19970; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x19930; pc=0x1c000; run_1c000(); return; case 0x19930: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x1993c; pc=0x16000; run_16000(); return; case 0x1993c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x199ec; continue; } case 0x1994c: r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x199bc; continue; } r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1997c; continue; } case 0x19970: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x19864; continue; case 0x1997c: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r19 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r20; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r20 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x199a8: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x198c0; continue; case 0x199bc: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x19970; continue; } /* Next insn is delay slot */ pc=0x1997c; continue; case 0x199d8: r4 = r19 + r0; /* Next insn is delay slot */ r31=0x199e4; pc=0x1b200; run_1b200(); return; case 0x199e4: /* Next insn is delay slot */ pc=0x198a4; continue; case 0x199ec: r4 = r19 + r0; /* Next insn is delay slot */ r31=0x199f8; pc=0x1b200; run_1b200(); return; case 0x199f8: /* Next insn is delay slot */ pc=0x1994c; continue; case 0x19a00: pc=0x19a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_19a00() throws ExecutionException { /* 0x19a00 - 0x19c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x19a00: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x19a58; continue; } /* Next insn is delay slot */ r31=0x19a20; pc=0x1d400; run_1d400(); return; case 0x19a20: /* Next insn is delay slot */ r31=0x19a28; pc=0x1c000; run_1c000(); return; case 0x19a28: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x19a94; continue; } case 0x19a34: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x19aac; continue; } case 0x19a44: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x19a58: /* Next insn is delay slot */ r31=0x19a60; pc=0x1a400; run_1a400(); return; case 0x19a60: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 125; if(r3 == r2) { /* Next insn is delay slot */ pc=0x19a20; continue; } r4 = 7 << 16; r4 = r4 + -6912; /* Next insn is delay slot */ r31=0x19a80; pc=0x1b200; run_1b200(); return; case 0x19a80: /* Next insn is delay slot */ r31=0x19a88; pc=0x1c000; run_1c000(); return; case 0x19a88: r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x19a34; continue; } case 0x19a94: /* Next insn is delay slot */ r31=0x19a9c; pc=0x1c000; run_1c000(); return; case 0x19a9c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x19a44; continue; } case 0x19aac: /* Next insn is delay slot */ r31=0x19ab4; pc=0x1f400; run_1f400(); return; case 0x19ab4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x19b24; continue; } r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r5 + -7668; /* Next insn is delay slot */ r31=0x19ad4; pc=0x42c00; run_42c00(); return; case 0x19ad4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x19b70; continue; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x19b88; continue; } case 0x19aec: r3 = r0 + 123; if(r2 == r3) { /* Next insn is delay slot */ pc=0x19b08; continue; } r4 = 7 << 16; r4 = r4 + -6860; /* Next insn is delay slot */ r31=0x19b08; pc=0x1b200; run_1b200(); return; case 0x19b08: if(r16 == r0) { /* Next insn is delay slot */ pc=0x19b38; continue; } r4 = r0 + r0; /* Next insn is delay slot */ r31=0x19b1c; pc=0x1d400; run_1d400(); return; case 0x19b1c: /* Next insn is delay slot */ r31=0x19b24; pc=0x1c000; run_1c000(); return; case 0x19b24: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1ce00; run_1ce00(); return; case 0x19b38: /* Next insn is delay slot */ r31=0x19b40; pc=0x1a400; run_1a400(); return; case 0x19b40: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 125; if(r3 == r2) { /* Next insn is delay slot */ pc=0x19b1c; continue; } r4 = 7 << 16; r4 = r4 + -6912; /* Next insn is delay slot */ r31=0x19b60; pc=0x1b200; run_1b200(); return; case 0x19b60: /* Next insn is delay slot */ r31=0x19b68; pc=0x1c000; run_1c000(); return; case 0x19b68: /* Next insn is delay slot */ pc=0x19b24; continue; case 0x19b70: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x19b80; pc=0x1b000; run_1b000(); return; case 0x19b80: /* Next insn is delay slot */ pc=0x19b24; continue; case 0x19b88: /* Next insn is delay slot */ r31=0x19b90; pc=0x1c000; run_1c000(); return; case 0x19b90: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x19aec; continue; case 0x19c00: pc=0x19c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_19c00() throws ExecutionException { /* 0x19c00 - 0x19e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x19c00: r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r29 = r29 + -32; r2 = r2 < 3 ? 1 : 0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r4 + r0; r17 = r5 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x19c80; continue; } case 0x19c28: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x19c38; pc=0x1be00; run_1be00(); return; case 0x19c38: /* Next insn is delay slot */ r31=0x19c40; pc=0x1a400; run_1a400(); return; case 0x19c40: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 13; if(r3 == r2) { /* Next insn is delay slot */ pc=0x19c60; continue; } r4 = 7 << 16; r4 = r4 + -7632; /* Next insn is delay slot */ r31=0x19c60; pc=0x1b000; run_1b000(); return; case 0x19c60: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x39200; run_39200(); return; case 0x19c80: r4 = 7 << 16; r4 = r4 + -7660; /* Next insn is delay slot */ r31=0x19c90; pc=0x3fc00; run_3fc00(); return; case 0x19c90: /* Next insn is delay slot */ pc=0x19c28; continue; case 0x19e00: pc=0x19e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_19e00() throws ExecutionException { /* 0x19e00 - 0x1a000 */ int addr, tmp; for(;;) { switch(pc) { case 0x19e00: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r29 = r29 + -40; r6 = r5 + r0; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; if(r2 != r0) { /* Next insn is delay slot */ pc=0x19e64; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7568; /* Next insn is delay slot */ r31=0x19e54; pc=0x3bc00; run_3bc00(); return; case 0x19e54: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x19e64: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7596; r6 = r8 + r0; /* Next insn is delay slot */ r31=0x19ea0; pc=0x3bc00; run_3bc00(); return; case 0x19ea0: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1a000: pc=0x1a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1a000() throws ExecutionException { /* 0x1a000 - 0x1a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1a000: r29 = r29 + -24; r4 = r0 + 1; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1a014; pc=0x11800; run_11800(); return; case 0x1a014: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x1a020; pc=0x38e00; run_38e00(); return; case 0x1a020: case 0x1a200: pc=0x1a200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1a200() throws ExecutionException { /* 0x1a200 - 0x1a400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1a200: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r29 = r29 + -40; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a28c; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -6980; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; r5 = r5 + -7568; r6 = r6 + 1168; /* Next insn is delay slot */ r31=0x1a260; pc=0x3bc00; run_3bc00(); return; case 0x1a260: r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1a2dc; continue; } r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1a28c: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = 7 << 16; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r3 + 1168; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -6980; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1a2d4; pc=0x3bc00; run_3bc00(); return; case 0x1a2d4: /* Next insn is delay slot */ pc=0x1a260; continue; case 0x1a2dc: /* Next insn is delay slot */ r31=0x1a2e4; pc=0x1a000; run_1a000(); return; case 0x1a2e4: case 0x1a400: pc=0x1a400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1a400() throws ExecutionException { /* 0x1a400 - 0x1a600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1a400: r29 = r29 + -72; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r31; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r23; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r22; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r21; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r20; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r19; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r18; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x1a430; pc=0x1c000; run_1c000(); return; case 0x1a430: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 125; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1a4f8; continue; } r3 = r0 + 13; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1a4f8; continue; } r21 = 7 << 16; r20 = 7 << 16; r23 = 7 << 16; r21 = r21 + -7236; r20 = r20 + -6980; r22 = 7 << 16; r19 = 7 << 16; r23 = r23 + -7524; case 0x1a46c: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x1a478; pc=0x31e00; run_31e00(); return; case 0x1a478: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r0 + r0; case 0x1a480: r2 = r2 & 255; r3 = (r2&0xffffffffL) < (47&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1a75c; run_1a600(); return; } r4 = 7 << 16; r3 = r2 << 2; r4 = r4 + -7424; r3 = r4 + r3; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; return; case 0x1a4b0: r16 = r16 | 1; case 0x1a4b4: /* Next insn is delay slot */ r31=0x1a4bc; pc=0x1c000; run_1c000(); return; case 0x1a4bc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; continue; } case 0x1a4cc: /* Next insn is delay slot */ r31=0x1a4d4; pc=0x28400; run_28400(); return; case 0x1a4d4: /* Next insn is delay slot */ r31=0x1a4dc; pc=0x1c000; run_1c000(); return; case 0x1a4dc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 125; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1a4f8; continue; } r3 = r0 + 13; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1a46c; continue; } case 0x1a4f8: r31 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r23 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r22 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r21 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r19 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r18 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 72; /* Next insn is delay slot */ pc=r31; return; case 0x1a528: r2 = r16 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a6c4; run_1a600(); return; } r16 = r16 | 2; /* Next insn is delay slot */ r31=0x1a540; pc=0x1c000; run_1c000(); return; case 0x1a540: /* Next insn is delay slot */ r31=0x1a548; pc=0x1ec00; run_1ec00(); return; case 0x1a548: if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a810; run_1a800(); return; } case 0x1a550: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; case 0x1a558: if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; continue; } /* Next insn is delay slot */ pc=0x1a4cc; continue; case 0x1a568: r2 = r16 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a6c4; run_1a600(); return; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r16 = r16 | 2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r2 = r0 + r0; r18 = r0 + 45; r17 = r0 + 45; /* Next insn is delay slot */ pc=0x1a5c0; continue; case 0x1a594: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1a5b0; pc=0x1c000; run_1c000(); return; case 0x1a5b0: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; if(r2 != r17) { /* Next insn is delay slot */ pc=0x1a60c; run_1a600(); return; } case 0x1a5bc: r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; case 0x1a5c0: r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x1a594; continue; } /* Next insn is delay slot */ r31=0x1a5d8; pc=0x17800; run_17800(); return; case 0x1a5d8: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1a600; pc=0x1c000; run_1c000(); return; case 0x1a600: pc=0x1a600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1a600() throws ExecutionException { /* 0x1a600 - 0x1a800 */ int addr, tmp; for(;;) { switch(pc) { case 0x1a600: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; if(r2 == r17) { /* Next insn is delay slot */ pc=0x1a5bc; run_1a400(); return; } case 0x1a60c: r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1a618; pc=0x17c00; run_17c00(); return; case 0x1a618: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = r16 + r0; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = r0 + r0; r7 = r0 + 1; /* Next insn is delay slot */ r31=0x1a634; pc=0x2f800; run_2f800(); return; case 0x1a634: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a64c: /* Next insn is delay slot */ r31=0x1a654; pc=0x1c000; run_1c000(); return; case 0x1a654: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 46; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1a680; continue; } r2 = r2 & 255; r2 = r2 + r21; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1a880; run_1a800(); return; } case 0x1a680: /* Next insn is delay slot */ r31=0x1a688; pc=0x20a00; run_20a00(); return; case 0x1a688: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a6a0: /* Next insn is delay slot */ r31=0x1a6a8; pc=0x1c000; run_1c000(); return; case 0x1a6a8: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1a9cc; run_1a800(); return; } case 0x1a6b4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 61; if(r3 == r2) { /* Next insn is delay slot */ pc=0x1a99c; run_1a800(); return; } case 0x1a6c4: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a83c; run_1a800(); return; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = r22 + -7568; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r20; r6 = r19 + 1168; /* Next insn is delay slot */ r31=0x1a70c; pc=0x3bc00; run_3bc00(); return; case 0x1a70c: r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1aac0; run_1aa00(); return; } /* Next insn is delay slot */ r31=0x1a730; pc=0x1c800; run_1c800(); return; case 0x1a730: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1a558; run_1a400(); return; case 0x1a73c: /* Next insn is delay slot */ r31=0x1a744; pc=0x2e200; run_2e200(); return; case 0x1a744: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a75c: r2 = r21 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1a6c4; continue; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r17 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1a788; pc=0x1ec00; run_1ec00(); return; case 0x1a788: r4 = r2 + r0; /* Next insn is delay slot */ pc=r17; r31=0x1a794; return; case 0x1a794: if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a550; run_1a400(); return; } r2 = r16 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a9dc; run_1a800(); return; } r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r4 = r0 + -96; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r16 = r16 | 2; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r4) { /* Next insn is delay slot */ pc=0x1aa14; run_1aa00(); return; } r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a7e8; continue; } r2 = r0 + -62; if(r3 == r2) { /* Next insn is delay slot */ pc=0x1aa04; run_1aa00(); return; } case 0x1a7e8: r4 = r0 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x1a7f8; pc=0x2fc00; run_2fc00(); return; case 0x1a7f8: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; case 0x1a800: pc=0x1a800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1a800() throws ExecutionException { /* 0x1a800 - 0x1aa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1a800: if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a810: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = r16 + r0; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1a824; pc=0x2fc00; run_2fc00(); return; case 0x1a824: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a83c: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r19 + 1168; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r20; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1a878; pc=0x3bc00; run_3bc00(); return; case 0x1a878: /* Next insn is delay slot */ pc=0x1a70c; run_1a600(); return; case 0x1a880: r2 = r16 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a9dc; continue; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 43; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x1a8a0; pc=0x17c00; run_17c00(); return; case 0x1a8a0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 43; if(r3 != r2) { /* Next insn is delay slot */ pc=0x1a948; continue; } r18 = r0 + 43; r17 = r0 + 43; /* Next insn is delay slot */ pc=0x1a8ec; continue; case 0x1a8c0: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1a8dc; pc=0x1c000; run_1c000(); return; case 0x1a8dc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r17) { /* Next insn is delay slot */ pc=0x1a948; continue; } case 0x1a8ec: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1a8c0; continue; } /* Next insn is delay slot */ r31=0x1a910; pc=0x17800; run_17800(); return; case 0x1a910: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1a938; pc=0x1c000; run_1c000(); return; case 0x1a938: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r17) { /* Next insn is delay slot */ pc=0x1a8ec; continue; } case 0x1a948: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x1a954; pc=0x30800; run_30800(); return; case 0x1a954: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1a964; pc=0x17c00; run_17c00(); return; case 0x1a964: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r16 = r16 | 2; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r16 + r0; r6 = r0 + r0; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x1a984; pc=0x2f800; run_2f800(); return; case 0x1a984: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a99c: /* Next insn is delay slot */ r31=0x1a9a4; pc=0x1c000; run_1c000(); return; case 0x1a9a4: /* Next insn is delay slot */ r31=0x1a9ac; pc=0x2de00; run_2de00(); return; case 0x1a9ac: /* Next insn is delay slot */ r31=0x1a9b4; pc=0x1ce00; run_1ce00(); return; case 0x1a9b4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1a9cc: /* Next insn is delay slot */ r31=0x1a9d4; pc=0x1c000; run_1c000(); return; case 0x1a9d4: /* Next insn is delay slot */ pc=0x1a6b4; run_1a600(); return; case 0x1a9dc: /* Next insn is delay slot */ r31=0x1a9e4; pc=0x1a200; run_1a200(); return; case 0x1a9e4: /* Next insn is delay slot */ r31=0x1a9ec; pc=0x1c800; run_1c800(); return; case 0x1a9ec: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a480; run_1a400(); return; } /* Next insn is delay slot */ pc=0x1a4cc; run_1a400(); return; case 0x1aa00: pc=0x1aa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1aa00() throws ExecutionException { /* 0x1aa00 - 0x1ac00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1aa00: case 0x1aa04: addr=r5+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r4) { /* Next insn is delay slot */ pc=0x1a7e8; run_1a600(); return; } case 0x1aa14: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1a7e8; run_1a600(); return; } r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1aa78; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; r5 = r22 + -7568; r6 = r6 + -7532; /* Next insn is delay slot */ r31=0x1aa70; pc=0x3bc00; run_3bc00(); return; case 0x1aa70: /* Next insn is delay slot */ pc=0x1a7e8; run_1a600(); return; case 0x1aa78: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = 7 << 16; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r3 + -7532; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1aab8; pc=0x3bc00; run_3bc00(); return; case 0x1aab8: /* Next insn is delay slot */ pc=0x1a7e8; run_1a600(); return; case 0x1aac0: /* Next insn is delay slot */ r31=0x1aac8; pc=0x1a000; run_1a000(); return; case 0x1aac8: case 0x1ac00: pc=0x1ac00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ac00() throws ExecutionException { /* 0x1ac00 - 0x1ae00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ac00: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r29 = r29 + -40; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1ac68; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = 7 << 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7568; r6 = r6 + -7532; /* Next insn is delay slot */ r31=0x1ac58; pc=0x3bc00; run_3bc00(); return; case 0x1ac58: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1ac68: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = 7 << 16; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r3 + -7532; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1aca8; pc=0x3bc00; run_3bc00(); return; case 0x1aca8: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1ae00: pc=0x1ae00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ae00() throws ExecutionException { /* 0x1ae00 - 0x1b000 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ae00: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r29 = r29 + -40; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1ae24; continue; } r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1ae24: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1ae84; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = 7 << 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7568; r6 = r6 + -7532; /* Next insn is delay slot */ r31=0x1ae74; pc=0x3bc00; run_3bc00(); return; case 0x1ae74: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1ae84: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = 7 << 16; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r3 + -7532; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1aec4; pc=0x3bc00; run_3bc00(); return; case 0x1aec4: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1b000: pc=0x1b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1b000() throws ExecutionException { /* 0x1b000 - 0x1b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1b000: r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; r29 = r29 + -40; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1b084; continue; } r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = 7 << 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7568; r6 = r6 + 1168; /* Next insn is delay slot */ r31=0x1b058; pc=0x3bc00; run_3bc00(); return; case 0x1b058: r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1b0cc; continue; } r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x1b084: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = 7 << 16; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = r3 + 1168; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r5 = r5 + -7596; /* Next insn is delay slot */ r31=0x1b0c4; pc=0x3bc00; run_3bc00(); return; case 0x1b0c4: /* Next insn is delay slot */ pc=0x1b058; continue; case 0x1b0cc: /* Next insn is delay slot */ r31=0x1b0d4; pc=0x1a000; run_1a000(); return; case 0x1b0d4: case 0x1b200: pc=0x1b200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1b200() throws ExecutionException { /* 0x1b200 - 0x1b400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1b200: r5 = 7 << 16; r29 = r29 + -24; r5 = r5 + -7476; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1b218; pc=0x19e00; run_19e00(); return; case 0x1b218: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x1b224; pc=0x11800; run_11800(); return; case 0x1b224: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x1b230; pc=0x38e00; run_38e00(); return; case 0x1b230: case 0x1b400: pc=0x1b400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1b400() throws ExecutionException { /* 0x1b400 - 0x1b600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1b400: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1b410; pc=0x3e800; run_3e800(); return; case 0x1b410: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1b428; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x1b428: r4 = 7 << 16; r4 = r4 + -6876; /* Next insn is delay slot */ r31=0x1b438; pc=0x1b200; run_1b200(); return; case 0x1b438: case 0x1b600: pc=0x1b600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1b600() throws ExecutionException { /* 0x1b600 - 0x1b800 */ int addr, tmp; for(;;) { switch(pc) { case 0x1b600: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -24; r3 = r0 + 32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1b66c; continue; } case 0x1b618: r3 = r0 + 123; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1b638; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x1b638: /* Next insn is delay slot */ r31=0x1b640; pc=0x1a400; run_1a400(); return; case 0x1b640: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 125; if(r3 != r2) { /* Next insn is delay slot */ pc=0x1b680; continue; } /* Next insn is delay slot */ r31=0x1b658; pc=0x1c000; run_1c000(); return; case 0x1b658: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x1b66c: /* Next insn is delay slot */ r31=0x1b674; pc=0x1c000; run_1c000(); return; case 0x1b674: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1b618; continue; case 0x1b680: r4 = 7 << 16; r4 = r4 + -6912; /* Next insn is delay slot */ r31=0x1b690; pc=0x1b200; run_1b200(); return; case 0x1b690: case 0x1b800: pc=0x1b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1b800() throws ExecutionException { /* 0x1b800 - 0x1ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1b800: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = r5 + r0; r16 = r4 + r0; r5 = 7 << 16; r4 = 7 << 16; r4 = r4 + -7460; r5 = r5 + -7532; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x1b830; pc=0x19e00; run_19e00(); return; case 0x1b830: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + -7432; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x1b84c; pc=0x3bc00; run_3bc00(); return; case 0x1b84c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x1b858; pc=0x1b200; run_1b200(); return; case 0x1b858: 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: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r29 = r29 + -80; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r21; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r20; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r19; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; if(r4 == r3) { /* Next insn is delay slot */ pc=0x1bacc; continue; } r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + -6800; /* Next insn is delay slot */ r31=0x1ba50; pc=0x3bc00; run_3bc00(); return; case 0x1ba50: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; addr=r28+-30732; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1ba64: r3 = r0 + 10; if(r17 == r3) { /* Next insn is delay slot */ pc=0x1baa0; continue; } r3 = r0 + 13; if(r17 == r3) { /* Next insn is delay slot */ pc=0x1baa0; continue; } r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = (r3&0xffffffffL) < (1024&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1baa0; continue; } r4 = r3 + 1; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; r2 = r2 + r3; addr=r2+20; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1baa0: r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r21 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r19 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r18 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; addr=r28+-30732; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x1bacc: addr=r28+-30732; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r3 = r0 + 10; if(r5 != r3) { /* Next insn is delay slot */ pc=0x1ba64; continue; } r6 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r5 + -6776; r6 = r6 + -1; /* Next insn is delay slot */ r31=0x1baf8; pc=0x3bc00; run_3bc00(); return; case 0x1baf8: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1bb8c; continue; } addr=r29+36; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+16; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r21 = r29 + 36; r20 = r29 + 16; case 0x1bb20: r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = 7 << 16; r6 = r21 + r0; r5 = r5 + -6752; r7 = r20 + r0; /* Next insn is delay slot */ r31=0x1bb3c; pc=0x3bc00; run_3bc00(); return; case 0x1bb3c: r6 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = r0 + 1024; r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1bc28; run_1bc00(); return; } case 0x1bb54: r2 = r6 + r2; r4 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r5 = 7 << 16; addr=r2+20; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r5 = r5 + -6780; r6 = r6 + 20; /* Next insn is delay slot */ r31=0x1bb74; pc=0x3bc00; run_3bc00(); return; case 0x1bb74: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1ba64; continue; case 0x1bb8c: r21 = r29 + 36; r6 = 7 << 16; r7 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r21 + r0; r5 = r0 + 5; r6 = r6 + -6768; /* Next insn is delay slot */ r31=0x1bbac; pc=0x41c00; run_41c00(); return; case 0x1bbac: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r20 = r29 + 16; r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; addr=r29+16; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1bb20; continue; } r19 = 7 << 16; r18 = r20 + r0; r16 = r0 + r0; r19 = r19 + -6760; case 0x1bbd4: r2 = r2 + r16; addr=r2+1044; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r18 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x1bbec; pc=0x42000; run_42000(); return; case 0x1bbec: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r16 = r16 + 1; r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r18 = r18 + 2; r4 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; case 0x1bc00: pc=0x1bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1bc00() throws ExecutionException { /* 0x1bc00 - 0x1be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1bc00: if(r4 != r0) { /* Next insn is delay slot */ pc=0x1bbd4; run_1ba00(); return; } r4 = r0 + 9; if(r3 != r4) { /* Next insn is delay slot */ pc=0x1bb20; run_1ba00(); return; } r3 = 11822 << 16; r3 = r3 + 11776; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x1bb20; run_1ba00(); return; case 0x1bc28: r2 = r0 + 1023; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x1bb54; run_1ba00(); return; case 0x1be00: pc=0x1be00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1be00() throws ExecutionException { /* 0x1be00 - 0x1c000 */ int addr, tmp; for(;;) { switch(pc) { case 0x1be00: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 1; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=r31; return; case 0x1c000: pc=0x1c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1c000() throws ExecutionException { /* 0x1c000 - 0x1c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1c000: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r29 = r29 + -48; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1c0a0; continue; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r3 + 1; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1c050: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1c074; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; case 0x1c074: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x1c0a0: r21 = 7 << 16; r4 = 7 << 16; r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r16 = r0 + r0; r21 = r21 + -6444; r20 = r4 + -6700; r18 = r0 + -1; r19 = r0 + 13; r17 = r0 + 10; case 0x1c0c4: r3 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1c41c; run_1c400(); return; } case 0x1c0d0: r5 = r5 << 2; r5 = r21 + r5; r3 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; return; case 0x1c0e8: if(r16 == r18) { /* Next insn is delay slot */ pc=0x1c2ec; run_1c200(); return; } if(r16 == r19) { /* Next insn is delay slot */ pc=0x1c2ec; run_1c200(); return; } if(r16 == r17) { /* Next insn is delay slot */ pc=0x1c2ec; run_1c200(); return; } r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1c108: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1c304; run_1c200(); return; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r16 = tmp; case 0x1c144: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c0e8; continue; } r4 = r16 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c16c; pc=0x1ba00; run_1ba00(); return; case 0x1c16c: /* Next insn is delay slot */ pc=0x1c0e8; continue; case 0x1c174: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1c51c; run_1c400(); return; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r16 = tmp; case 0x1c1b0: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c1d8; continue; } r4 = r16 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c1d8; pc=0x1ba00; run_1ba00(); return; case 0x1c1d8: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1c1dc: r3 = r0 + -1; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c478; run_1c400(); return; } r4 = 7 << 16; r3 = r16 & 255; r4 = r4 + -7236; r3 = r3 + r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; case 0x1c200: pc=0x1c200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1c200() throws ExecutionException { /* 0x1c200 - 0x1c400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1c200: r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1c25c; continue; } r3 = r0 + 32; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c460; run_1c400(); return; } r3 = r16 < 33 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1c43c; run_1c400(); return; } r3 = r0 + 59; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c4e8; run_1c400(); return; } r3 = r0 + 125; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c4d0; run_1c400(); return; } r2 = r0 + 58; if(r16 == r2) { /* Next insn is delay slot */ pc=0x1c490; run_1c400(); return; } case 0x1c24c: r4 = 7 << 16; r4 = r4 + -6740; /* Next insn is delay slot */ r31=0x1c25c; pc=0x1b000; run_1b000(); return; case 0x1c25c: r2 = r16 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c270: r20 = r0 + 9; r22 = r0 + 32; case 0x1c278: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1c400; run_1c400(); return; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r16 = tmp; case 0x1c2b4: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c2dc; continue; } r4 = r16 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c2dc; pc=0x1ba00; run_1ba00(); return; case 0x1c2dc: if(r16 == r20) { /* Next insn is delay slot */ pc=0x1c320; continue; } if(r16 == r22) { /* Next insn is delay slot */ pc=0x1c320; continue; } case 0x1c2ec: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 1; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1c0d0; run_1c000(); return; case 0x1c304: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1c314; pc=0x41600; run_41600(); return; case 0x1c314: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x1c144; run_1c000(); return; case 0x1c320: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1c278; continue; case 0x1c32c: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c340: r3 = r0 + 5; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c358: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1c500; run_1c400(); return; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r16 = tmp; case 0x1c394: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c3bc; continue; } r4 = r16 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c3bc; pc=0x1ba00; run_1ba00(); return; case 0x1c3bc: if(r16 != r17) { /* Next insn is delay slot */ pc=0x1c2ec; continue; } r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1c0d0; run_1c000(); return; case 0x1c3d8: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; r2 = r0 + 125; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c3ec: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; r2 = r0 + 13; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c400: pc=0x1c400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1c400() throws ExecutionException { /* 0x1c400 - 0x1c600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1c400: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1c410; pc=0x41600; run_41600(); return; case 0x1c410: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x1c2b4; run_1c200(); return; case 0x1c41c: r4 = r20 + r0; /* Next insn is delay slot */ r31=0x1c428; pc=0x1b800; run_1b800(); return; case 0x1c428: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1c0c4; run_1c000(); return; case 0x1c43c: r3 = r0 + 10; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c4b8; continue; } r3 = r0 + 13; if(r16 == r3) { /* Next insn is delay slot */ pc=0x1c4a0; continue; } r3 = r0 + 9; if(r16 != r3) { /* Next insn is delay slot */ pc=0x1c24c; run_1c200(); return; } case 0x1c460: r3 = r0 + 2; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c478: r3 = r0 + 8; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c490: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c4a0: r3 = r0 + 4; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c4b8: r3 = r0 + 3; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c4d0: r3 = r0 + 7; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c4e8: r3 = r0 + 6; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c050; run_1c000(); return; case 0x1c500: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1c510; pc=0x41600; run_41600(); return; case 0x1c510: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x1c394; run_1c200(); return; case 0x1c51c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1c52c; pc=0x41600; run_41600(); return; case 0x1c52c: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x1c1b0; run_1c000(); return; case 0x1c600: pc=0x1c600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1c600() throws ExecutionException { /* 0x1c600 - 0x1c800 */ int addr, tmp; for(;;) { switch(pc) { case 0x1c600: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r29 = r29 + -24; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1c654; continue; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r3 + 1; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1c638: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c700; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x1c654: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1c754; continue; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r16 = tmp; case 0x1c690: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c6b8; continue; } r4 = r16 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c6b8; pc=0x1ba00; run_1ba00(); return; case 0x1c6b8: r2 = r0 + 10; if(r16 == r2) { /* Next insn is delay slot */ pc=0x1c6f0; continue; } r2 = r0 + 13; if(r16 == r2) { /* Next insn is delay slot */ pc=0x1c770; continue; } r2 = r0 + -1; if(r16 == r2) { /* Next insn is delay slot */ pc=0x1c728; continue; } r2 = r16 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c638; continue; case 0x1c6f0: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 3; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1c700: r4 = 7 << 16; r4 = r4 + -6680; /* Next insn is delay slot */ r31=0x1c710; pc=0x1b000; run_1b000(); return; case 0x1c710: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; case 0x1c714: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x1c728: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 8; r4 = 7 << 16; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r4 + -6680; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1c748; pc=0x1b000; run_1b000(); return; case 0x1c748: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1c714; continue; case 0x1c754: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1c764; pc=0x41600; run_41600(); return; case 0x1c764: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x1c690; continue; case 0x1c770: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 4; r4 = 7 << 16; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r4 + -6680; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1c790; pc=0x1b000; run_1b000(); return; case 0x1c790: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1c714; continue; case 0x1c800: pc=0x1c800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1c800() throws ExecutionException { /* 0x1c800 - 0x1ca00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1c800: r29 = r29 + -56; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; r23 = 7 << 16; r21 = 7 << 16; r22 = 7 << 16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r21 = r21 + -6408; r23 = r23 + -6700; r22 = r22 + -7236; case 0x1c848: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c8b0; continue; } case 0x1c850: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1c8e4; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1c884: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1c848; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1c850; continue; } case 0x1c8b0: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1c8e4: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r17 = r0 + -1; r18 = r0 + 13; r16 = r0 + 10; case 0x1c8f8: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1cc5c; run_1cc00(); return; } case 0x1c904: r5 = r5 << 2; r5 = r21 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1c91c: if(r30 == r17) { /* Next insn is delay slot */ pc=0x1c9a8; continue; } case 0x1c924: if(r30 == r18) { /* Next insn is delay slot */ pc=0x1c9a8; continue; } if(r30 == r16) { /* Next insn is delay slot */ pc=0x1c9a8; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1c93c: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1cab4; run_1ca00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1c978: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1c91c; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1c9a0; pc=0x1ba00; run_1ba00(); return; case 0x1c9a0: if(r30 != r17) { /* Next insn is delay slot */ pc=0x1c924; continue; } case 0x1c9a8: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1c904; continue; case 0x1c9c0: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1cd40; run_1cc00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1c9fc: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; case 0x1ca00: pc=0x1ca00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ca00() throws ExecutionException { /* 0x1ca00 - 0x1cc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ca00: r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1ca24; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1ca24; pc=0x1ba00; run_1ba00(); return; case 0x1ca24: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1ca28: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1cce8; run_1cc00(); return; } r4 = r30 & 255; r4 = r4 + r22; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1caa0; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1cca0; run_1cc00(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1cc7c; run_1cc00(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1ccb8; run_1cc00(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1cd28; run_1cc00(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1cd18; run_1cc00(); return; } case 0x1ca90: r4 = 7 << 16; r4 = r4 + -6740; /* Next insn is delay slot */ r31=0x1caa0; pc=0x1b000; run_1b000(); return; case 0x1caa0: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cab4: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1cac4; pc=0x41600; run_41600(); return; case 0x1cac4: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1c978; run_1c800(); return; case 0x1cad0: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cae4: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1cd5c; run_1cc00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1cb20: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1cb48; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1cb48; pc=0x1ba00; run_1ba00(); return; case 0x1cb48: if(r30 != r16) { /* Next insn is delay slot */ pc=0x1c9a8; run_1c800(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1c904; run_1c800(); return; case 0x1cb64: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cb7c: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cb90: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r19 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r20 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1cc2c; run_1cc00(); return; } case 0x1cbb0: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1cbcc: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1cbf4; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1cbf4; pc=0x1ba00; run_1ba00(); return; case 0x1cbf4: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1cc04; run_1cc00(); return; } if(r30 != r20) { /* Next insn is delay slot */ pc=0x1c9a8; run_1c800(); return; } case 0x1cc00: pc=0x1cc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1cc00() throws ExecutionException { /* 0x1cc00 - 0x1ce00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1cc00: case 0x1cc04: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1cbb0; run_1ca00(); return; } case 0x1cc2c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1cc3c; pc=0x41600; run_41600(); return; case 0x1cc3c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1cbcc; run_1ca00(); return; case 0x1cc48: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cc5c: r4 = r23 + r0; /* Next insn is delay slot */ r31=0x1cc68; pc=0x1b800; run_1b800(); return; case 0x1cc68: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1c8f8; run_1c800(); return; case 0x1cc7c: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1ccd0; continue; } r4 = r0 + 13; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1cd00; continue; } r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1ca90; run_1ca00(); return; } case 0x1cca0: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1ccb8: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1ccd0: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cce8: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cd00: r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cd18: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cd28: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1c884; run_1c800(); return; case 0x1cd40: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1cd50; pc=0x41600; run_41600(); return; case 0x1cd50: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1c9fc; run_1c800(); return; case 0x1cd5c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1cd6c; pc=0x41600; run_41600(); return; case 0x1cd6c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1cb20; run_1ca00(); return; case 0x1ce00: pc=0x1ce00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ce00() throws ExecutionException { /* 0x1ce00 - 0x1d000 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ce00: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -56; r3 = r0 + 32; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1d284; run_1d200(); return; } case 0x1ce3c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x1ce78; continue; } case 0x1ce44: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1ce78: r4 = 7 << 16; r4 = r4 + -6644; /* Next insn is delay slot */ r31=0x1ce88; pc=0x1b000; run_1b000(); return; case 0x1ce88: r21 = 7 << 16; r23 = 7 << 16; r22 = 7 << 16; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r21 = r21 + -6372; r23 = r23 + -6700; r22 = r22 + -7236; case 0x1cea4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x1ce44; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1cf0c; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1cee0: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1cea4; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x1cea4; continue; case 0x1cf0c: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r17 = r0 + -1; r18 = r0 + 13; r16 = r0 + 10; case 0x1cf20: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1d298; run_1d200(); return; } case 0x1cf2c: r5 = r5 << 2; r5 = r21 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1cf44: if(r30 == r17) { /* Next insn is delay slot */ pc=0x1d138; run_1d000(); return; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1d138; run_1d000(); return; } if(r30 == r16) { /* Next insn is delay slot */ pc=0x1d138; run_1d000(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1cf64: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1d150; run_1d000(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1cfa0: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1cf44; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1cfc8; pc=0x1ba00; run_1ba00(); return; case 0x1cfc8: /* Next insn is delay slot */ pc=0x1cf44; continue; case 0x1cfd0: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1d37c; run_1d200(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; case 0x1d000: pc=0x1d000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1d000() throws ExecutionException { /* 0x1d000 - 0x1d200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1d000: r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1d00c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1d034; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1d034; pc=0x1ba00; run_1ba00(); return; case 0x1d034: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1d038: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1d2e8; run_1d200(); return; } r4 = r30 & 255; r4 = r4 + r22; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1d0b0; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1d324; run_1d200(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1d2b8; run_1d200(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1d354; run_1d200(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1d300; run_1d200(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1d36c; run_1d200(); return; } case 0x1d0a0: r4 = 7 << 16; r4 = r4 + -6740; /* Next insn is delay slot */ r31=0x1d0b0; pc=0x1b000; run_1b000(); return; case 0x1d0b0: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d0c4: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r19 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r20 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1d254; run_1d200(); return; } case 0x1d0e4: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1d100: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1d128; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1d128; pc=0x1ba00; run_1ba00(); return; case 0x1d128: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1d22c; run_1d200(); return; } if(r30 == r20) { /* Next insn is delay slot */ pc=0x1d22c; run_1d200(); return; } case 0x1d138: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1cf2c; run_1ce00(); return; case 0x1d150: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1d160; pc=0x41600; run_41600(); return; case 0x1d160: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1cfa0; run_1ce00(); return; case 0x1d16c: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d180: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1d398; run_1d200(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1d1bc: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1d1e4; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1d1e4; pc=0x1ba00; run_1ba00(); return; case 0x1d1e4: if(r30 != r16) { /* Next insn is delay slot */ pc=0x1d138; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1cf2c; run_1ce00(); return; case 0x1d200: pc=0x1d200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1d200() throws ExecutionException { /* 0x1d200 - 0x1d400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1d200: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d218: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d22c: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1d0e4; run_1d000(); return; } case 0x1d254: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1d264; pc=0x41600; run_41600(); return; case 0x1d264: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1d100; run_1d000(); return; case 0x1d270: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d284: /* Next insn is delay slot */ r31=0x1d28c; pc=0x1c000; run_1c000(); return; case 0x1d28c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1ce3c; run_1ce00(); return; case 0x1d298: r4 = r23 + r0; /* Next insn is delay slot */ r31=0x1d2a4; pc=0x1b800; run_1b800(); return; case 0x1d2a4: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1cf20; run_1ce00(); return; case 0x1d2b8: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1d33c; continue; } r4 = r0 + 13; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1d318; continue; } r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d2e8: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d300: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d318: r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1d0a0; run_1d000(); return; } case 0x1d324: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d33c: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d354: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d36c: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1cee0; run_1ce00(); return; case 0x1d37c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1d38c; pc=0x41600; run_41600(); return; case 0x1d38c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1d00c; run_1d000(); return; case 0x1d398: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1d3a8; pc=0x41600; run_41600(); return; case 0x1d3a8: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1d1bc; run_1d000(); return; case 0x1d400: pc=0x1d400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1d400() throws ExecutionException { /* 0x1d400 - 0x1d600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1d400: r29 = r29 + -56; r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; r20 = 7 << 16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r16 = r4 + r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r19 = r0 + 1; r21 = r0 + 39; r20 = r20 + -6680; case 0x1d448: /* Next insn is delay slot */ r31=0x1d450; pc=0x1c000; run_1c000(); return; case 0x1d450: r23 = r2 + r0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x1d48c; continue; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1d758; run_1d600(); return; } case 0x1d478: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1d48c: if(r23 == r21) { /* Next insn is delay slot */ pc=0x1d534; continue; } r2 = r23 < 40 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1d6e4; run_1d600(); return; } r2 = r0 + 123; if(r23 == r2) { /* Next insn is delay slot */ pc=0x1d744; run_1d600(); return; } r2 = r0 + 125; if(r23 != r2) { /* Next insn is delay slot */ pc=0x1d4bc; continue; } r19 = r19 + -1; case 0x1d4bc: if(r19 != r0) { /* Next insn is delay slot */ pc=0x1d448; continue; } case 0x1d4c4: if(r16 == r0) { /* Next insn is delay slot */ pc=0x1d774; run_1d600(); return; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1d4dc; pc=0x17c00; run_17c00(); return; case 0x1d4dc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 13; /* Next insn is delay slot */ r31=0x1d4ec; pc=0x17c00; run_17c00(); return; case 0x1d4ec: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=0x17a00; run_17a00(); return; case 0x1d524: r4 = 7 << 16; r4 = r4 + -6912; /* Next insn is delay slot */ r31=0x1d534; pc=0x1b200; run_1b200(); return; case 0x1d534: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r17 = r0 + 10; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r22 = r0 + 3; r18 = r0 + 13; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1d5e0; continue; } case 0x1d550: r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r30 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r30 == r0) { /* Next insn is delay slot */ pc=0x1d688; run_1d600(); return; } case 0x1d574: if(r16 == r0) { /* Next insn is delay slot */ pc=0x1d5b0; continue; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r2) { /* Next insn is delay slot */ pc=0x1d70c; run_1d600(); return; } case 0x1d598: r2 = r3 + 1; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r5 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1d5b0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1d4bc; continue; } if(r23 == r3) { /* Next insn is delay slot */ pc=0x1d4bc; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1d550; continue; } case 0x1d5e0: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1d728; run_1d600(); return; } case 0x1d600: pc=0x1d600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1d600() throws ExecutionException { /* 0x1d600 - 0x1d800 */ int addr, tmp; for(;;) { switch(pc) { case 0x1d600: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1d61c: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1d644; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1d644; pc=0x1ba00; run_1ba00(); return; case 0x1d644: if(r30 == r17) { /* Next insn is delay slot */ pc=0x1d67c; continue; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1d6c0; continue; } r2 = r0 + -1; if(r30 == r2) { /* Next insn is delay slot */ pc=0x1d69c; continue; } r30 = r30 << 24; r30 = r30 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r30 != r0) { /* Next insn is delay slot */ pc=0x1d574; run_1d400(); return; } /* Next insn is delay slot */ pc=0x1d688; continue; case 0x1d67c: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r22; case 0x1d688: r4 = r20 + r0; /* Next insn is delay slot */ r31=0x1d694; pc=0x1b000; run_1b000(); return; case 0x1d694: /* Next insn is delay slot */ pc=0x1d574; run_1d400(); return; case 0x1d69c: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 8; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r20 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1d6b8; pc=0x1b000; run_1b000(); return; case 0x1d6b8: /* Next insn is delay slot */ pc=0x1d574; run_1d400(); return; case 0x1d6c0: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 4; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r20 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1d6dc; pc=0x1b000; run_1b000(); return; case 0x1d6dc: /* Next insn is delay slot */ pc=0x1d574; run_1d400(); return; case 0x1d6e4: r2 = r0 + 13; if(r23 == r2) { /* Next insn is delay slot */ pc=0x1d524; run_1d400(); return; } r2 = r0 + 34; if(r23 == r2) { /* Next insn is delay slot */ pc=0x1d534; run_1d400(); return; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x1d448; run_1d400(); return; } /* Next insn is delay slot */ pc=0x1d4c4; run_1d400(); return; case 0x1d70c: /* Next insn is delay slot */ r31=0x1d714; pc=0x17800; run_17800(); return; case 0x1d714: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1d598; run_1d400(); return; case 0x1d728: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1d738; pc=0x41600; run_41600(); return; case 0x1d738: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1d61c; continue; case 0x1d744: r19 = r19 + 1; if(r19 != r0) { /* Next insn is delay slot */ pc=0x1d448; run_1d400(); return; } /* Next insn is delay slot */ pc=0x1d4c4; run_1d400(); return; case 0x1d758: /* Next insn is delay slot */ r31=0x1d760; pc=0x17800; run_17800(); return; case 0x1d760: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1d478; run_1d400(); return; case 0x1d774: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1d800: pc=0x1d800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1d800() throws ExecutionException { /* 0x1d800 - 0x1da00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1d800: r29 = r29 + -56; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r23 = tmp; r20 = r4 << 24; r20 = r20 >> 24; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; if(r23 == r20) { /* Next insn is delay slot */ pc=0x1da5c; run_1da00(); return; } if(r23 == r0) { /* Next insn is delay slot */ pc=0x1da5c; run_1da00(); return; } r18 = 7 << 16; r19 = r0 + 34; r18 = r18 + -6680; r16 = r0 + 10; r21 = r0 + 3; /* Next insn is delay slot */ pc=0x1d888; continue; case 0x1d860: r2 = r0 + 39; if(r23 == r2) { /* Next insn is delay slot */ pc=0x1d8c0; continue; } case 0x1d86c: /* Next insn is delay slot */ r31=0x1d874; pc=0x1c000; run_1c000(); return; case 0x1d874: r23 = r2 + r0; if(r20 == r2) { /* Next insn is delay slot */ pc=0x1da5c; run_1da00(); return; } if(r23 == r0) { /* Next insn is delay slot */ pc=0x1da5c; run_1da00(); return; } case 0x1d888: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1db10; run_1da00(); return; } case 0x1d8a4: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r23 != r19) { /* Next insn is delay slot */ pc=0x1d860; continue; } case 0x1d8c0: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r17 = r0 + 13; r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1d964; continue; } case 0x1d8d8: r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r22 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r22 == r0) { /* Next insn is delay slot */ pc=0x1d9f8; continue; } case 0x1d8fc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r2) { /* Next insn is delay slot */ pc=0x1da20; run_1da00(); return; } case 0x1d918: r5 = r4 + r0; r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r4 = r3 + 1; writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r6 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1da5c; run_1da00(); return; } case 0x1d944: if(r23 == r3) { /* Next insn is delay slot */ pc=0x1d86c; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1d8d8; continue; } case 0x1d964: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1daf4; run_1da00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r22 = tmp; case 0x1d9a0: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1d9c8; continue; } r4 = r22 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1d9c8; pc=0x1ba00; run_1ba00(); return; case 0x1d9c8: if(r22 == r16) { /* Next insn is delay slot */ pc=0x1dad4; run_1da00(); return; } if(r22 == r17) { /* Next insn is delay slot */ pc=0x1dab0; run_1da00(); return; } r2 = r0 + -1; if(r22 == r2) { /* Next insn is delay slot */ pc=0x1da8c; run_1da00(); return; } r22 = r22 << 24; r22 = r22 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r22 != r0) { /* Next insn is delay slot */ pc=0x1d8fc; continue; } case 0x1d9f8: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x1da04; pc=0x1b000; run_1b000(); return; case 0x1da00: pc=0x1da00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1da00() throws ExecutionException { /* 0x1da00 - 0x1dc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1da00: case 0x1da04: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x1d918; run_1d800(); return; } case 0x1da20: /* Next insn is delay slot */ r31=0x1da28; pc=0x17800; run_17800(); return; case 0x1da28: r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r4 = r3 + 1; writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r6 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1d944; run_1d800(); return; } case 0x1da5c: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1da8c: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 8; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r18 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1daa8; pc=0x1b000; run_1b000(); return; case 0x1daa8: /* Next insn is delay slot */ pc=0x1da04; continue; case 0x1dab0: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 4; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r18 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1dacc; pc=0x1b000; run_1b000(); return; case 0x1dacc: /* Next insn is delay slot */ pc=0x1da04; continue; case 0x1dad4: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r18 + r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r21; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1daec; pc=0x1b000; run_1b000(); return; case 0x1daec: /* Next insn is delay slot */ pc=0x1da04; continue; case 0x1daf4: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1db04; pc=0x41600; run_41600(); return; case 0x1db04: r22 = r2 + r0; /* Next insn is delay slot */ pc=0x1d9a0; run_1d800(); return; case 0x1db10: /* Next insn is delay slot */ r31=0x1db18; pc=0x17800; run_17800(); return; case 0x1db18: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1d8a4; run_1d800(); return; case 0x1dc00: pc=0x1dc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1dc00() throws ExecutionException { /* 0x1dc00 - 0x1de00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1dc00: r29 = r29 + -56; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r23 = 7 << 16; r17 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r16 = r0 + r0; r17 = r17 + -7236; r23 = r23 + -6336; case 0x1dc44: r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1dd04; continue; } case 0x1dc60: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x1df24; run_1de00(); return; } case 0x1dc7c: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r16 = r16 + 1; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1dd54; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1dcc4: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1dc44; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1dc60; continue; } case 0x1dd04: if(r16 != r0) { /* Next insn is delay slot */ pc=0x1dd1c; continue; } r4 = 7 << 16; r4 = r4 + -6844; /* Next insn is delay slot */ r31=0x1dd1c; pc=0x1b000; run_1b000(); return; case 0x1dd1c: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r16 + r0; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1dd54: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r19 = r0 + -1; r20 = r0 + 13; r18 = r0 + 10; case 0x1dd68: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1e0e8; run_1e000(); return; } case 0x1dd74: r5 = r5 << 2; r5 = r23 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1dd8c: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1de18; run_1de00(); return; } case 0x1dd94: if(r30 == r20) { /* Next insn is delay slot */ pc=0x1de18; run_1de00(); return; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1de18; run_1de00(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1ddac: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1df40; run_1de00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1dde8: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1dd8c; continue; } case 0x1de00: pc=0x1de00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1de00() throws ExecutionException { /* 0x1de00 - 0x1e000 */ int addr, tmp; for(;;) { switch(pc) { case 0x1de00: r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1de10; pc=0x1ba00; run_1ba00(); return; case 0x1de10: if(r30 != r19) { /* Next insn is delay slot */ pc=0x1dd94; run_1dc00(); return; } case 0x1de18: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1dd74; run_1dc00(); return; case 0x1de30: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1e1d0; run_1e000(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1de6c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1de94; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1de94; pc=0x1ba00; run_1ba00(); return; case 0x1de94: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1de98: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e178; run_1e000(); return; } r4 = r30 & 255; r4 = r17 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1df10; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e130; run_1e000(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1e10c; run_1e000(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e148; run_1e000(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e1b8; run_1e000(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1e1a8; run_1e000(); return; } case 0x1df00: r2 = 7 << 16; r4 = r2 + -6740; /* Next insn is delay slot */ r31=0x1df10; pc=0x1b000; run_1b000(); return; case 0x1df10: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1df24: /* Next insn is delay slot */ r31=0x1df2c; pc=0x17800; run_17800(); return; case 0x1df2c: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1dc7c; run_1dc00(); return; case 0x1df40: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1df50; pc=0x41600; run_41600(); return; case 0x1df50: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1dde8; run_1dc00(); return; case 0x1df5c: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1df70: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1e1ec; run_1e000(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1dfac: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1dfd4; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1dfd4; pc=0x1ba00; run_1ba00(); return; case 0x1dfd4: if(r30 != r18) { /* Next insn is delay slot */ pc=0x1de18; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1dd74; run_1dc00(); return; case 0x1dff0: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1e000: pc=0x1e000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1e000() throws ExecutionException { /* 0x1e000 - 0x1e200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1e000: /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e008: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r21 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r22 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1e0a4; continue; } case 0x1e028: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1e044: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e06c; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1e06c; pc=0x1ba00; run_1ba00(); return; case 0x1e06c: if(r30 == r21) { /* Next insn is delay slot */ pc=0x1e07c; continue; } if(r30 != r22) { /* Next insn is delay slot */ pc=0x1de18; run_1de00(); return; } case 0x1e07c: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1e028; continue; } case 0x1e0a4: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1e0b4; pc=0x41600; run_41600(); return; case 0x1e0b4: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1e044; continue; case 0x1e0c0: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e0d4: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e0e8: r4 = 7 << 16; r4 = r4 + -6700; /* Next insn is delay slot */ r31=0x1e0f8; pc=0x1b800; run_1b800(); return; case 0x1e0f8: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1dd68; run_1dc00(); return; case 0x1e10c: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e160; continue; } r4 = r0 + 13; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e190; continue; } r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1df00; run_1de00(); return; } case 0x1e130: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e148: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e160: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e178: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e190: r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e1a8: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e1b8: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1dcc4; run_1dc00(); return; case 0x1e1d0: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1e1e0; pc=0x41600; run_41600(); return; case 0x1e1e0: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1de6c; run_1de00(); return; case 0x1e1ec: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1e1fc; pc=0x41600; run_41600(); return; case 0x1e1fc: r30 = r2 + r0; case 0x1e200: pc=0x1e200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1e200() throws ExecutionException { /* 0x1e200 - 0x1e400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1e200: /* Next insn is delay slot */ pc=0x1dfac; run_1de00(); return; case 0x1e400: pc=0x1e400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1e400() throws ExecutionException { /* 0x1e400 - 0x1e600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1e400: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -64; r3 = r0 + 32; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1e9c4; run_1e800(); return; } case 0x1e43c: r3 = r0 + 46; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1e9e0; run_1e800(); return; } writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r0; case 0x1e44c: r3 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r17 = 7 << 16; r23 = 7 << 16; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r0; r16 = r0 + r0; r17 = r17 + -7236; r23 = r23 + -6300; case 0x1e468: r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e528; continue; } case 0x1e484: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x1e758; run_1e600(); return; } case 0x1e4a0: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r16 = r16 + 1; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1e588; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1e4e8: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1e468; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1e484; continue; } case 0x1e528: if(r16 != r0) { /* Next insn is delay slot */ pc=0x1e540; continue; } r4 = 7 << 16; r4 = r4 + -6844; /* Next insn is delay slot */ r31=0x1e540; pc=0x1b000; run_1b000(); return; case 0x1e540: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1e550; pc=0x17c00; run_17c00(); return; case 0x1e550: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r16 + r0; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x1e588: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r19 = r0 + -1; r20 = r0 + 13; r18 = r0 + 10; case 0x1e59c: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1e91c; run_1e800(); return; } case 0x1e5a8: r5 = r5 << 2; r5 = r23 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1e5c0: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1e64c; run_1e600(); return; } case 0x1e5c8: if(r30 == r20) { /* Next insn is delay slot */ pc=0x1e64c; run_1e600(); return; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1e64c; run_1e600(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1e5e0: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1e774; run_1e600(); return; } case 0x1e600: pc=0x1e600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1e600() throws ExecutionException { /* 0x1e600 - 0x1e800 */ int addr, tmp; for(;;) { switch(pc) { case 0x1e600: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1e61c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e5c0; run_1e400(); return; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1e644; pc=0x1ba00; run_1ba00(); return; case 0x1e644: if(r30 != r19) { /* Next insn is delay slot */ pc=0x1e5c8; run_1e400(); return; } case 0x1e64c: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1e5a8; run_1e400(); return; case 0x1e664: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1ea4c; run_1ea00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1e6a0: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e6c8; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1e6c8; pc=0x1ba00; run_1ba00(); return; case 0x1e6c8: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1e6cc: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e9ac; run_1e800(); return; } r4 = r30 & 255; r4 = r17 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1e744; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e964; run_1e800(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1e940; run_1e800(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e97c; run_1e800(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1ea34; run_1ea00(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1ea24; run_1ea00(); return; } case 0x1e734: r2 = 7 << 16; r4 = r2 + -6740; /* Next insn is delay slot */ r31=0x1e744; pc=0x1b000; run_1b000(); return; case 0x1e744: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e758: /* Next insn is delay slot */ r31=0x1e760; pc=0x17800; run_17800(); return; case 0x1e760: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1e4a0; run_1e400(); return; case 0x1e774: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1e784; pc=0x41600; run_41600(); return; case 0x1e784: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1e61c; continue; case 0x1e790: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e7a4: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1ea68; run_1ea00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1e7e0: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e808; run_1e800(); return; } r4 = r30 << 24; r4 = r4 >> 24; case 0x1e800: pc=0x1e800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1e800() throws ExecutionException { /* 0x1e800 - 0x1ea00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1e800: /* Next insn is delay slot */ r31=0x1e808; pc=0x1ba00; run_1ba00(); return; case 0x1e808: if(r30 != r18) { /* Next insn is delay slot */ pc=0x1e64c; run_1e600(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1e5a8; run_1e400(); return; case 0x1e824: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e83c: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e850: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r21 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r22 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1e8ec; continue; } case 0x1e870: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1e88c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1e8b4; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1e8b4; pc=0x1ba00; run_1ba00(); return; case 0x1e8b4: if(r30 == r21) { /* Next insn is delay slot */ pc=0x1e8c4; continue; } if(r30 != r22) { /* Next insn is delay slot */ pc=0x1e64c; run_1e600(); return; } case 0x1e8c4: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1e870; continue; } case 0x1e8ec: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1e8fc; pc=0x41600; run_41600(); return; case 0x1e8fc: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1e88c; continue; case 0x1e908: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e91c: r4 = 7 << 16; r4 = r4 + -6700; /* Next insn is delay slot */ r31=0x1e92c; pc=0x1b800; run_1b800(); return; case 0x1e92c: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1e59c; run_1e400(); return; case 0x1e940: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1e994; continue; } r4 = r0 + 13; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1ea0c; run_1ea00(); return; } r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1e734; run_1e600(); return; } case 0x1e964: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e97c: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e994: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e9ac: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1e9c4: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x1e9d0; pc=0x1c000; run_1c000(); return; case 0x1e9d0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1e43c; run_1e400(); return; case 0x1e9e0: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x1e9ec; pc=0x1c000; run_1c000(); return; case 0x1e9ec: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; case 0x1ea00: pc=0x1ea00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ea00() throws ExecutionException { /* 0x1ea00 - 0x1ec00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ea00: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x1e44c; run_1e400(); return; case 0x1ea0c: r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1ea24: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1ea34: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1e4e8; run_1e400(); return; case 0x1ea4c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1ea5c; pc=0x41600; run_41600(); return; case 0x1ea5c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1e6a0; run_1e600(); return; case 0x1ea68: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1ea78; pc=0x41600; run_41600(); return; case 0x1ea78: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1e7e0; run_1e600(); return; case 0x1ec00: pc=0x1ec00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ec00() throws ExecutionException { /* 0x1ec00 - 0x1ee00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ec00: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -56; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r17 = 7 << 16; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r23 = 7 << 16; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r0 + r0; r17 = r17 + -7236; r23 = r23 + -6264; case 0x1ec4c: r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1ed0c; continue; } case 0x1ec68: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x1ef3c; run_1ee00(); return; } case 0x1ec84: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r16 = r16 + 1; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1ed6c; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1eccc: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1ec4c; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1ec68; continue; } case 0x1ed0c: if(r16 != r0) { /* Next insn is delay slot */ pc=0x1ed24; continue; } r4 = 7 << 16; r4 = r4 + -6844; /* Next insn is delay slot */ r31=0x1ed24; pc=0x1b000; run_1b000(); return; case 0x1ed24: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1ed34; pc=0x17c00; run_17c00(); return; case 0x1ed34: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r16 + r0; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1ed6c: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r19 = r0 + -1; r20 = r0 + 13; r18 = r0 + 10; case 0x1ed80: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1f100; run_1f000(); return; } case 0x1ed8c: r5 = r5 << 2; r5 = r23 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1eda4: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1ee30; run_1ee00(); return; } case 0x1edac: if(r30 == r20) { /* Next insn is delay slot */ pc=0x1ee30; run_1ee00(); return; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1ee30; run_1ee00(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1edc4: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1ef58; run_1ee00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1ee00: pc=0x1ee00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1ee00() throws ExecutionException { /* 0x1ee00 - 0x1f000 */ int addr, tmp; for(;;) { switch(pc) { case 0x1ee00: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1eda4; run_1ec00(); return; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1ee28; pc=0x1ba00; run_1ba00(); return; case 0x1ee28: if(r30 != r19) { /* Next insn is delay slot */ pc=0x1edac; run_1ec00(); return; } case 0x1ee30: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1ed8c; run_1ec00(); return; case 0x1ee48: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f1e8; run_1f000(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1ee84: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1eeac; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1eeac; pc=0x1ba00; run_1ba00(); return; case 0x1eeac: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1eeb0: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f190; run_1f000(); return; } r4 = r30 & 255; r4 = r17 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1ef28; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f148; run_1f000(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1f124; run_1f000(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f160; run_1f000(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f1d0; run_1f000(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1f1c0; run_1f000(); return; } case 0x1ef18: r2 = 7 << 16; r4 = r2 + -6740; /* Next insn is delay slot */ r31=0x1ef28; pc=0x1b000; run_1b000(); return; case 0x1ef28: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1ef3c: /* Next insn is delay slot */ r31=0x1ef44; pc=0x17800; run_17800(); return; case 0x1ef44: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1ec84; run_1ec00(); return; case 0x1ef58: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1ef68; pc=0x41600; run_41600(); return; case 0x1ef68: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1ee00; continue; case 0x1ef74: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1ef88: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f204; run_1f200(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1efc4: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1efec; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1efec; pc=0x1ba00; run_1ba00(); return; case 0x1efec: if(r30 != r18) { /* Next insn is delay slot */ pc=0x1ee30; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; case 0x1f000: pc=0x1f000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1f000() throws ExecutionException { /* 0x1f000 - 0x1f200 */ int addr, tmp; for(;;) { switch(pc) { case 0x1f000: /* Next insn is delay slot */ pc=0x1ed8c; run_1ec00(); return; case 0x1f008: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f020: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r21 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r22 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f0bc; continue; } case 0x1f040: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1f05c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f084; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1f084; pc=0x1ba00; run_1ba00(); return; case 0x1f084: if(r30 == r21) { /* Next insn is delay slot */ pc=0x1f094; continue; } if(r30 != r22) { /* Next insn is delay slot */ pc=0x1ee30; run_1ee00(); return; } case 0x1f094: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1f040; continue; } case 0x1f0bc: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1f0cc; pc=0x41600; run_41600(); return; case 0x1f0cc: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1f05c; continue; case 0x1f0d8: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f0ec: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f100: r4 = 7 << 16; r4 = r4 + -6700; /* Next insn is delay slot */ r31=0x1f110; pc=0x1b800; run_1b800(); return; case 0x1f110: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1ed80; run_1ec00(); return; case 0x1f124: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f178; continue; } r4 = r0 + 13; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f1a8; continue; } r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1ef18; run_1ee00(); return; } case 0x1f148: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f160: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f178: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f190: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f1a8: r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f1c0: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f1d0: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1eccc; run_1ec00(); return; case 0x1f1e8: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1f1f8; pc=0x41600; run_41600(); return; case 0x1f1f8: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1ee84; run_1ee00(); return; case 0x1f200: pc=0x1f200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1f200() throws ExecutionException { /* 0x1f200 - 0x1f400 */ int addr, tmp; for(;;) { switch(pc) { case 0x1f200: case 0x1f204: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1f214; pc=0x41600; run_41600(); return; case 0x1f214: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1efc4; run_1ee00(); return; case 0x1f400: pc=0x1f400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1f400() throws ExecutionException { /* 0x1f400 - 0x1f600 */ int addr, tmp; for(;;) { switch(pc) { case 0x1f400: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -56; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r17 = 7 << 16; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r23 = 7 << 16; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r0 + r0; r17 = r17 + -7236; r23 = r23 + -6228; case 0x1f44c: r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f50c; continue; } case 0x1f468: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x1f750; run_1f600(); return; } case 0x1f484: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r16 = r16 + 1; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1f580; continue; } r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x1f4cc: r3 = r0 + 10; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1f44c; continue; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; r3 = r2 & 255; r3 = r17 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 64; if(r3 != r0) { /* Next insn is delay slot */ pc=0x1f468; continue; } case 0x1f50c: if(r16 != r0) { /* Next insn is delay slot */ pc=0x1f524; continue; } r4 = 7 << 16; r4 = r4 + -6844; /* Next insn is delay slot */ r31=0x1f524; pc=0x1b000; run_1b000(); return; case 0x1f524: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1f534; pc=0x17c00; run_17c00(); return; case 0x1f534: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r4 + r0; /* Next insn is delay slot */ r31=0x1f548; pc=0x18000; run_18000(); return; case 0x1f548: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r16 + r0; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1f580: r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r30 = r0 + r0; r19 = r0 + -1; r20 = r0 + 13; r18 = r0 + 10; case 0x1f594: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1f914; run_1f800(); return; } case 0x1f5a0: r5 = r5 << 2; r5 = r23 + r5; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r4; return; case 0x1f5b8: if(r30 == r19) { /* Next insn is delay slot */ pc=0x1f644; run_1f600(); return; } case 0x1f5c0: if(r30 == r20) { /* Next insn is delay slot */ pc=0x1f644; run_1f600(); return; } if(r30 == r18) { /* Next insn is delay slot */ pc=0x1f644; run_1f600(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1f5d8: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f76c; run_1f600(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; case 0x1f600: pc=0x1f600; 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: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1f614: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f5b8; run_1f400(); return; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1f63c; pc=0x1ba00; run_1ba00(); return; case 0x1f63c: if(r30 != r19) { /* Next insn is delay slot */ pc=0x1f5c0; run_1f400(); return; } case 0x1f644: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x1f5a0; run_1f400(); return; case 0x1f65c: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f9fc; run_1f800(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1f698: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f6c0; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1f6c0; pc=0x1ba00; run_1ba00(); return; case 0x1f6c0: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; case 0x1f6c4: r4 = r0 + -1; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f9a4; run_1f800(); return; } r4 = r30 & 255; r4 = r17 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x1f73c; continue; } r4 = r0 + 32; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f95c; run_1f800(); return; } r4 = r30 < 33 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x1f938; run_1f800(); return; } r4 = r0 + 59; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f974; run_1f800(); return; } r4 = r0 + 125; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f9e4; run_1f800(); return; } r3 = r0 + 58; if(r30 == r3) { /* Next insn is delay slot */ pc=0x1f9d4; run_1f800(); return; } case 0x1f72c: r2 = 7 << 16; r4 = r2 + -6740; /* Next insn is delay slot */ r31=0x1f73c; pc=0x1b000; run_1b000(); return; case 0x1f73c: r2 = r30 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f750: /* Next insn is delay slot */ r31=0x1f758; pc=0x17800; run_17800(); return; case 0x1f758: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1f484; run_1f400(); return; case 0x1f76c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1f77c; pc=0x41600; run_41600(); return; case 0x1f77c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1f614; continue; case 0x1f788: r2 = r0 + 125; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f79c: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1fa18; run_1fa00(); return; } r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1f7d8: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f800; run_1f800(); return; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1f800; pc=0x1ba00; run_1ba00(); return; case 0x1f800: pc=0x1f800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_1f800() throws ExecutionException { /* 0x1f800 - 0x1fa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x1f800: if(r30 != r18) { /* Next insn is delay slot */ pc=0x1f644; run_1f600(); return; } r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x1f5a0; run_1f400(); return; case 0x1f81c: r2 = r0 + 5; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 10; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f834: r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r21 = r0 + 9; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r22 = r0 + 32; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x1f8d0; continue; } case 0x1f854: r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r30 = tmp; case 0x1f870: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1f898; continue; } r4 = r30 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1f898; pc=0x1ba00; run_1ba00(); return; case 0x1f898: if(r30 == r21) { /* Next insn is delay slot */ pc=0x1f8a8; continue; } if(r30 != r22) { /* Next insn is delay slot */ pc=0x1f644; run_1f600(); return; } case 0x1f8a8: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x1f854; continue; } case 0x1f8d0: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1f8e0; pc=0x41600; run_41600(); return; case 0x1f8e0: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1f870; continue; case 0x1f8ec: r2 = r0 + 13; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f900: r2 = r0 + 10; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f914: r4 = 7 << 16; r4 = r4 + -6700; /* Next insn is delay slot */ r31=0x1f924; pc=0x1b800; run_1b800(); return; case 0x1f924: r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1f594; run_1f400(); return; case 0x1f938: r4 = r0 + 10; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f98c; continue; } r4 = r0 + 13; if(r30 == r4) { /* Next insn is delay slot */ pc=0x1f9bc; continue; } r4 = r0 + 9; if(r30 != r4) { /* Next insn is delay slot */ pc=0x1f72c; run_1f600(); return; } case 0x1f95c: r2 = r0 + 2; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + 32; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f974: r2 = r0 + 6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f98c: r2 = r0 + 3; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f9a4: r2 = r0 + 8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f9bc: r2 = r0 + 4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f9d4: r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f9e4: r2 = r0 + 7; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; r2 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x1f4cc; run_1f400(); return; case 0x1f9fc: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; case 0x1fa00: pc=0x1fa00; 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: r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1fa0c; pc=0x41600; run_41600(); return; case 0x1fa0c: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1f698; run_1f600(); return; case 0x1fa18: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1fa28; pc=0x41600; run_41600(); return; case 0x1fa28: r30 = r2 + r0; /* Next insn is delay slot */ pc=0x1f7d8; run_1f600(); return; case 0x1fc00: pc=0x1fc00; 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+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -56; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1fef0; run_1fe00(); return; } case 0x1fc38: r3 = r0 + 60; if(r2 == r3) { /* Next insn is delay slot */ pc=0x1fe9c; run_1fe00(); return; } r3 = r0 + 34; if(r2 != r3) { /* Next insn is delay slot */ pc=0x1fd44; continue; } r16 = r0 + 34; case 0x1fc54: /* Next insn is delay slot */ r31=0x1fc5c; pc=0x1c600; run_1c600(); return; case 0x1fc5c: if(r2 == r16) { /* Next insn is delay slot */ pc=0x1ff28; run_1fe00(); return; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r18 = 7 << 16; r17 = r0 + 10; r19 = r0 + 13; r20 = r0 + -1; r18 = r18 + -6680; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1fd18; continue; } case 0x1fc84: if(r16 == r2) { /* Next insn is delay slot */ pc=0x1fecc; run_1fe00(); return; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x1fdf8; continue; } r5 = r4 + r0; case 0x1fcac: r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r4 + r3; writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r6; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x1fd60; continue; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r3 + 1; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1fc84; continue; } case 0x1fcfc: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x1fd08; pc=0x1b000; run_1b000(); return; case 0x1fd08: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1fc84; continue; } case 0x1fd18: r2 = r0 + 1; case 0x1fd1c: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x1fd44: r4 = 7 << 16; r4 = r4 + -6532; /* Next insn is delay slot */ r31=0x1fd54; pc=0x1b000; run_1b000(); return; case 0x1fd54: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x1fd1c; continue; case 0x1fd60: r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; if(r3 < 0) { /* Next insn is delay slot */ pc=0x1fe80; run_1fe00(); return; } r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r21 = tmp; case 0x1fd9c: r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x1fdc4; continue; } r4 = r21 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x1fdc4; pc=0x1ba00; run_1ba00(); return; case 0x1fdc4: if(r21 == r17) { /* Next insn is delay slot */ pc=0x1fe5c; run_1fe00(); return; } if(r21 == r19) { /* Next insn is delay slot */ pc=0x1fe38; run_1fe00(); return; } if(r21 == r20) { /* Next insn is delay slot */ pc=0x1fe14; run_1fe00(); return; } r2 = r21 << 24; r2 = r2 >> 24; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x1fc84; continue; } /* Next insn is delay slot */ pc=0x1fcfc; continue; case 0x1fdf8: /* Next insn is delay slot */ r31=0x1fe00; pc=0x17800; run_17800(); return; case 0x1fe00: pc=0x1fe00; 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: r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1fcac; run_1fc00(); return; case 0x1fe14: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 8; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r18 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1fe30; pc=0x1b000; run_1b000(); return; case 0x1fe30: /* Next insn is delay slot */ pc=0x1fd08; run_1fc00(); return; case 0x1fe38: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 4; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r18 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1fe54; pc=0x1b000; run_1b000(); return; case 0x1fe54: /* Next insn is delay slot */ pc=0x1fd08; run_1fc00(); return; case 0x1fe5c: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = r0 + 3; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r4 = r18 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x1fe78; pc=0x1b000; run_1b000(); return; case 0x1fe78: /* Next insn is delay slot */ pc=0x1fd08; run_1fc00(); return; case 0x1fe80: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x1fe90; pc=0x41600; run_41600(); return; case 0x1fe90: r21 = r2 + r0; /* Next insn is delay slot */ pc=0x1fd9c; run_1fc00(); return; case 0x1fe9c: if(r4 == r0) { /* Next insn is delay slot */ pc=0x1ff0c; continue; } r5 = readPages[(r28+-30676)>>>12][((r28+-30676)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x1ff44; continue; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r16 = r0 + 62; /* Next insn is delay slot */ r31=0x1fec4; pc=0x17e00; run_17e00(); return; case 0x1fec4: /* Next insn is delay slot */ pc=0x1fc54; run_1fc00(); return; case 0x1fecc: /* Next insn is delay slot */ r31=0x1fed4; pc=0x1c000; run_1c000(); return; case 0x1fed4: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x1fee4; pc=0x17c00; run_17c00(); return; case 0x1fee4: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x1fd1c; run_1fc00(); return; case 0x1fef0: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x1fefc; pc=0x1c000; run_1c000(); return; case 0x1fefc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x1fc38; run_1fc00(); return; case 0x1ff0c: r4 = 7 << 16; r4 = r4 + -6608; /* Next insn is delay slot */ r31=0x1ff1c; pc=0x1b000; run_1b000(); return; case 0x1ff1c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x1fd1c; run_1fc00(); return; case 0x1ff28: r4 = 7 << 16; r4 = r4 + -6492; /* Next insn is delay slot */ r31=0x1ff38; pc=0x1b000; run_1b000(); return; case 0x1ff38: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x1fd1c; run_1fc00(); return; case 0x1ff44: r4 = 7 << 16; r4 = r4 + -6572; /* Next insn is delay slot */ r31=0x1ff54; pc=0x1b000; run_1b000(); return; case 0x1ff54: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x1fd1c; run_1fc00(); return; case 0x20000: pc=0x20000; 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: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -24; r3 = r0 + 32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20060; continue; } case 0x20018: r3 = r0 + 44; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20038; continue; } r2 = r0 + r0; case 0x20028: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x20038: /* Next insn is delay slot */ r31=0x20040; pc=0x1c000; run_1c000(); return; case 0x20040: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20074; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x20060: /* Next insn is delay slot */ r31=0x20068; pc=0x1c000; run_1c000(); return; case 0x20068: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x20018; continue; case 0x20074: /* Next insn is delay slot */ r31=0x2007c; pc=0x1c000; run_1c000(); return; case 0x2007c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x20028; continue; case 0x20200: pc=0x20200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_20200() throws ExecutionException { /* 0x20200 - 0x20400 */ int addr, tmp; for(;;) { switch(pc) { case 0x20200: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -24; r3 = r0 + 43; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20264; continue; } r16 = r0 + r0; case 0x20220: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20244; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r16 + r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x20244: /* Next insn is delay slot */ r31=0x2024c; pc=0x1c000; run_1c000(); return; case 0x2024c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r16 + r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x20264: /* Next insn is delay slot */ r31=0x2026c; pc=0x1c000; run_1c000(); return; case 0x2026c: r3 = r0 + 49; if(r2 == r3) { /* Next insn is delay slot */ pc=0x202b0; continue; } r3 = r0 + 50; if(r2 == r3) { /* Next insn is delay slot */ pc=0x202c8; continue; } r3 = r0 + 51; if(r2 == r3) { /* Next insn is delay slot */ pc=0x202d4; continue; } r4 = 7 << 16; r4 = r4 + -6472; /* Next insn is delay slot */ r31=0x202a0; pc=0x1b000; run_1b000(); return; case 0x202a0: r16 = r0 + r0; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x20220; continue; case 0x202b0: r16 = r0 + 1; case 0x202b4: /* Next insn is delay slot */ r31=0x202bc; pc=0x1c000; run_1c000(); return; case 0x202bc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x20220; continue; case 0x202c8: r16 = r0 + 2; /* Next insn is delay slot */ pc=0x202b4; continue; case 0x202d4: r16 = r0 + 4; /* Next insn is delay slot */ pc=0x202b4; continue; case 0x20400: pc=0x20400; 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: r29 = r29 + -24; r4 = r0 + 128; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x20414; pc=0x17600; run_17600(); return; case 0x20414: r4 = r0 + 128; writePages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x20424; pc=0x17600; run_17600(); return; case 0x20424: writePages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff]; r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r3 = r2 << 1; r5 = r2 << 4; r2 = r2 << 6; r5 = r2 - r5; writePages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x2044c; pc=0x40600; run_40600(); return; case 0x2044c: writePages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20468; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x20468: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6876; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b200; run_1b200(); return; case 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 + -48; r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x20628; pc=0x1e400; run_1e400(); return; case 0x20628: r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x20998; run_20800(); return; } case 0x2064c: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x20660; pc=0x17e00; run_17e00(); return; case 0x20660: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x20674; pc=0x17e00; run_17e00(); return; case 0x20674: r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20684; pc=0x17c00; run_17c00(); return; case 0x20684: r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = r0 + 32; /* Next insn is delay slot */ r31=0x20694; pc=0x17c00; run_17c00(); return; case 0x20694: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x209b0; run_20800(); return; } case 0x206a4: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = r0 + 123; r19 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; if(r2 == r3) { /* Next insn is delay slot */ pc=0x207d0; continue; } r17 = r0 + 126; r16 = r0 + 46; r18 = r0 + 44; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; if(r2 == r17) { /* Next insn is delay slot */ pc=0x20748; continue; } case 0x206d4: r5 = r0 + 118; /* Next insn is delay slot */ r31=0x206e0; pc=0x17c00; run_17c00(); return; case 0x206e0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x2077c; continue; } case 0x206f0: /* Next insn is delay slot */ r31=0x206f8; pc=0x1dc00; run_1dc00(); return; case 0x206f8: /* Next insn is delay slot */ r31=0x20700; pc=0x20000; run_20000(); return; case 0x20700: if(r2 == r0) { /* Next insn is delay slot */ pc=0x207ac; continue; } case 0x20708: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2097c; run_20800(); return; } case 0x20724: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; if(r2 != r17) { /* Next insn is delay slot */ pc=0x206d4; continue; } case 0x20748: r5 = r0 + 86; /* Next insn is delay slot */ r31=0x20754; pc=0x17c00; run_17c00(); return; case 0x20754: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 126; /* Next insn is delay slot */ r31=0x20764; pc=0x17c00; run_17c00(); return; case 0x20764: /* Next insn is delay slot */ r31=0x2076c; pc=0x1c000; run_1c000(); return; case 0x2076c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x206f0; continue; } case 0x2077c: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 46; /* Next insn is delay slot */ r31=0x2078c; pc=0x17c00; run_17c00(); return; case 0x2078c: /* Next insn is delay slot */ r31=0x20794; pc=0x1c000; run_1c000(); return; case 0x20794: /* Next insn is delay slot */ r31=0x2079c; pc=0x1dc00; run_1dc00(); return; case 0x2079c: /* Next insn is delay slot */ r31=0x207a4; pc=0x20000; run_20000(); return; case 0x207a4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x20708; continue; } case 0x207ac: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x207cc; continue; } r4 = 7 << 16; r4 = r4 + -6860; /* Next insn is delay slot */ r31=0x207cc; pc=0x1b200; run_1b200(); return; case 0x207cc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; case 0x207d0: r5 = r0 + r0; /* Next insn is delay slot */ r31=0x207dc; pc=0x17c00; run_17c00(); return; case 0x207dc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x207e8; pc=0x17a00; run_17a00(); return; case 0x207e8: r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = r0 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x207fc; pc=0x17c00; run_17c00(); return; case 0x207fc: r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; case 0x20800: pc=0x20800; 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: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x20814; pc=0x17e00; run_17e00(); return; case 0x20814: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20824; pc=0x17c00; run_17c00(); return; case 0x20824: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + 15856; r6 = r19 + r0; r7 = r0 + 1; /* Next insn is delay slot */ r31=0x20840; pc=0x31200; run_31200(); return; case 0x20840: if(r2 != r0) { /* Next insn is delay slot */ pc=0x208a0; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r16 = 7 << 16; r17 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r16 + -6052; /* Next insn is delay slot */ r31=0x20860; pc=0x1ac00; run_1ac00(); return; case 0x20860: r3 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r16 + -6052; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r3 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r3 = 7 << 16; r3 = r3 + -6192; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + -6180; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x208a0; pc=0x1b200; run_1b200(); return; case 0x208a0: r4 = r0 + 20; /* Next insn is delay slot */ r31=0x208ac; pc=0x1b400; run_1b400(); return; case 0x208ac: r16 = r2 + r0; r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x208d0; pc=0x10268; run_10200(); return; case 0x208d0: r17 = r2 + 1; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x208e0; pc=0x1b400; run_1b400(); return; case 0x208e0: r4 = r2 + r0; r5 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x208f4; pc=0x48fdc; run_48e00(); return; case 0x208f4: writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x20914; pc=0x10268; run_10200(); return; case 0x20914: r17 = r2 + 1; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x20924; pc=0x1b400; run_1b400(); return; case 0x20924: r4 = r2 + r0; r5 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x20938; pc=0x48fdc; run_48e00(); return; case 0x20938: writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r20; r4 = r0 + 1; /* Next insn is delay slot */ r31=0x2094c; pc=0x1d400; run_1d400(); return; case 0x2094c: writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2097c: /* Next insn is delay slot */ r31=0x20984; pc=0x17800; run_17800(); return; case 0x20984: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x20724; run_20600(); return; case 0x20998: r5 = r0 + 46; /* Next insn is delay slot */ r31=0x209a4; pc=0x17c00; run_17c00(); return; case 0x209a4: r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2064c; run_20600(); return; case 0x209b0: /* Next insn is delay slot */ r31=0x209b8; pc=0x1c000; run_1c000(); return; case 0x209b8: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x206a4; run_20600(); return; case 0x20a00: pc=0x20a00; 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+-32760)>>>12][((r28+-32760)>>>2)&0x3ff]; r29 = r29 + -96; r2 = r2 + -1; writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r22; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r21; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r20; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r19; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; if(r2 < 0) { /* Next insn is delay slot */ pc=0x20e64; run_20e00(); return; } case 0x20a38: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x20a44; pc=0x1e400; run_1e400(); return; case 0x20a44: r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x20e24; run_20e00(); return; } case 0x20a68: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x20a7c; pc=0x17e00; run_17e00(); return; case 0x20a7c: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x20a90; pc=0x17e00; run_17e00(); return; case 0x20a90: r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20aa0; pc=0x17c00; run_17c00(); return; case 0x20aa0: r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = r0 + 32; /* Next insn is delay slot */ r31=0x20ab0; pc=0x17c00; run_17c00(); return; case 0x20ab0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x20e50; run_20e00(); return; } case 0x20ac0: r19 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20bdc; continue; } r20 = 7 << 16; r17 = r0 + r0; r16 = r0 + r0; r20 = r20 + -6876; r18 = r0 + 126; /* Next insn is delay slot */ pc=0x20b2c; continue; case 0x20ae8: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; if(r2 == r18) { /* Next insn is delay slot */ pc=0x20b88; continue; } case 0x20af8: r5 = r0 + 118; /* Next insn is delay slot */ r31=0x20b04; pc=0x17c00; run_17c00(); return; case 0x20b04: r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r16 = r16 + 1; r4 = r4 + r17; /* Next insn is delay slot */ r31=0x20b18; pc=0x16400; run_16400(); return; case 0x20b18: /* Next insn is delay slot */ r31=0x20b20; pc=0x20000; run_20000(); return; case 0x20b20: r17 = r17 + 24; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20bdc; continue; } case 0x20b2c: r2 = readPages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff]; r3 = r16 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x20ae8; continue; } r3 = r2 << 1; r5 = r2 << 4; r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r2 = r2 << 6; r5 = r2 - r5; writePages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x20b60; pc=0x40600; run_40600(); return; case 0x20b60: writePages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x20ae8; continue; } r4 = r20 + r0; /* Next insn is delay slot */ r31=0x20b78; pc=0x1b200; run_1b200(); return; case 0x20b78: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; if(r2 != r18) { /* Next insn is delay slot */ pc=0x20af8; continue; } case 0x20b88: r5 = r0 + 86; /* Next insn is delay slot */ r31=0x20b94; pc=0x17c00; run_17c00(); return; case 0x20b94: /* Next insn is delay slot */ r31=0x20b9c; pc=0x1c000; run_1c000(); return; case 0x20b9c: r4 = r29 + 52; /* Next insn is delay slot */ r31=0x20ba8; pc=0x1e400; run_1e400(); return; case 0x20ba8: r21 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r5 = r0 + r0; r21 = r21 + r17; /* Next insn is delay slot */ r31=0x20bc0; pc=0x2f400; run_2f400(); return; case 0x20bc0: writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x20bcc; pc=0x20000; run_20000(); return; case 0x20bcc: r16 = r16 + 1; r17 = r17 + 24; if(r2 != r0) { /* Next insn is delay slot */ pc=0x20b2c; continue; } case 0x20bdc: r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20bec; pc=0x17c00; run_17c00(); return; case 0x20bec: r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x20c04; pc=0x17e00; run_17e00(); return; case 0x20c00: pc=0x20c00; 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: case 0x20c04: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20c14; pc=0x17c00; run_17c00(); return; case 0x20c14: r5 = 7 << 16; r4 = r29 + 60; r5 = r5 + 15856; r6 = r19 + r0; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x20c30; pc=0x31200; run_31200(); return; case 0x20c30: r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20e7c; run_20e00(); return; } r17 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r5 = 7 << 16; r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r4 = r29 + 36; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r5 = r5 + -6084; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = readPages[(r17+12)>>>12][((r17+12)>>>2)&0x3ff]; r7 = r0 + r0; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r6 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; r2 = r29 + 16; r20 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r19 = tmp; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r2; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r0; r21 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x20c98; pc=0x2e400; run_2e400(); return; case 0x20c98: /* Next insn is delay slot */ r31=0x20ca0; pc=0x1c000; run_1c000(); return; case 0x20ca0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x20d94; continue; } r18 = 7 << 16; r22 = 7 << 16; r16 = r0 + r0; r18 = r18 + 16944; r22 = r22 + -6076; /* Next insn is delay slot */ pc=0x20d18; continue; case 0x20ccc: r4 = r29 + 52; /* Next insn is delay slot */ r31=0x20cd8; pc=0x1e400; run_1e400(); return; case 0x20cd8: r4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x20ce8; pc=0x2f400; run_2f400(); return; case 0x20ce8: r5 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r4 = r2 + r0; r5 = r5 + r16; r6 = r0 + 24; /* Next insn is delay slot */ r31=0x20d00; pc=0x48fdc; run_48e00(); return; case 0x20d00: /* Next insn is delay slot */ r31=0x20d08; pc=0x20000; run_20000(); return; case 0x20d08: r16 = r16 + 24; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20d94; continue; } case 0x20d14: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; case 0x20d18: r2 = r0 + 126; if(r3 != r2) { /* Next insn is delay slot */ pc=0x20ccc; continue; } /* Next insn is delay slot */ r31=0x20d2c; pc=0x1c000; run_1c000(); return; case 0x20d2c: r4 = r29 + 52; /* Next insn is delay slot */ r31=0x20d38; pc=0x1e400; run_1e400(); return; case 0x20d38: r6 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r4 = r29 + 56; r5 = r18 + r0; r7 = r0 + 1; /* Next insn is delay slot */ r31=0x20d50; pc=0x31200; run_31200(); return; case 0x20d50: if(r2 != r0) { /* Next insn is delay slot */ pc=0x20d68; continue; } r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x20e3c; run_20e00(); return; } case 0x20d68: r2 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; r2 = r2 + r16; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = r16 + 24; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x20d8c; pc=0x20000; run_20000(); return; case 0x20d8c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x20d14; continue; } case 0x20d94: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r3 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x20dac; pc=0x1a400; run_1a400(); return; case 0x20dac: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r2 = r0 + 125; if(r5 == r2) { /* Next insn is delay slot */ pc=0x20dcc; continue; } r4 = 7 << 16; r4 = r4 + -7708; /* Next insn is delay slot */ r31=0x20dcc; pc=0x1b800; run_1b800(); return; case 0x20dcc: r4 = r29 + 36; /* Next insn is delay slot */ r31=0x20dd8; pc=0x2e600; run_2e600(); return; case 0x20dd8: writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r21; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r20; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r19&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x20dec; pc=0x1ce00; run_1ce00(); return; case 0x20dec: r2 = readPages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff]; r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r2 = r2 + 1; r22 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r21 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; case 0x20e00: pc=0x20e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_20e00() throws ExecutionException { /* 0x20e00 - 0x21000 */ int addr, tmp; for(;;) { switch(pc) { case 0x20e00: r20 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r19 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; r29 = r29 + 96; /* Next insn is delay slot */ pc=r31; return; case 0x20e24: r5 = r0 + 46; /* Next insn is delay slot */ r31=0x20e30; pc=0x17c00; run_17c00(); return; case 0x20e30: r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x20a68; run_20a00(); return; case 0x20e3c: r4 = r22 + r0; /* Next insn is delay slot */ r31=0x20e48; pc=0x1b000; run_1b000(); return; case 0x20e48: /* Next insn is delay slot */ pc=0x20d68; run_20c00(); return; case 0x20e50: /* Next insn is delay slot */ r31=0x20e58; pc=0x1c000; run_1c000(); return; case 0x20e58: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x20ac0; run_20a00(); return; case 0x20e64: r4 = 7 << 16; r4 = r4 + -6168; /* Next insn is delay slot */ r31=0x20e74; pc=0x1b200; run_1b200(); return; case 0x20e74: /* Next insn is delay slot */ pc=0x20a38; run_20a00(); return; case 0x20e7c: r4 = 7 << 16; r4 = r4 + -6124; /* Next insn is delay slot */ r31=0x20e8c; pc=0x1b000; run_1b000(); return; case 0x20e8c: /* Next insn is delay slot */ r31=0x20e94; pc=0x1c800; run_1c800(); return; case 0x20e94: /* Next insn is delay slot */ pc=0x20dec; run_20c00(); return; case 0x21000: pc=0x21000; 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 + -32; r3 = r6 & 255; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = r6 & 65280; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r2 = ((r0 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x21028; continue; } r2 = r2 | 2; case 0x21028: r5 = 255 << 16; r5 = r6 & r5; if(r5 == r0) { /* Next insn is delay slot */ pc=0x21094; continue; } r2 = r2 | 4; case 0x2103c: if(r4 == r0) { /* Next insn is delay slot */ pc=0x210b8; continue; } r2 = r2 & r4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21290; run_21200(); return; } case 0x21050: r2 = r0 + 2; if(r4 == r2) { /* Next insn is delay slot */ pc=0x211b0; continue; } r2 = r0 + 4; if(r4 != r2) { /* Next insn is delay slot */ pc=0x21220; run_21200(); return; } case 0x21068: r4 = r6 >>> 16; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r4 & 255; /* Next insn is delay slot */ pc=r2; r31=0x2107c; return; case 0x2107c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x26200; run_26200(); return; case 0x21094: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2103c; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -3048; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x210b8: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r5 = r4 & 7; if(r5 != r0) { /* Next insn is delay slot */ pc=0x211dc; continue; } r5 = r2 + -1; r5 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x212d0; run_21200(); return; } r5 = r0 + 4; if(r2 == r5) { /* Next insn is delay slot */ pc=0x21068; continue; } r5 = r4 & 32; if(r5 == r0) { /* Next insn is delay slot */ pc=0x21240; run_21200(); return; } r5 = r2 & 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x2110c; continue; } r5 = r4 & 8; if(r5 != r0) { /* Next insn is delay slot */ pc=0x21268; run_21200(); return; } case 0x2110c: r5 = r2 & 2; if(r5 != r0) { /* Next insn is delay slot */ pc=0x21170; continue; } r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21268; run_21200(); return; } r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x21068; continue; } r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r0 | 32768; r3 = r3 + r2; r2 = 1 << 16; r2 = r2 | 32768; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21068; continue; } r4 = 7 << 16; r4 = r4 + -3084; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x21164; pc=0x1ac00; run_1ac00(); return; case 0x21164: r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x21068; continue; case 0x21170: r4 = r4 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x211b0; continue; } r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + 128; r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x211b0; continue; } r4 = 7 << 16; r4 = r4 + -3084; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x211a8; pc=0x1ac00; run_1ac00(); return; case 0x211a8: r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x211b0: r4 = r6 >>> 8; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r4 & 255; /* Next insn is delay slot */ pc=r2; r31=0x211c4; return; case 0x211c4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x26000; run_26000(); return; case 0x211dc: r4 = r2 & r4; r5 = r4 & 1; if(r5 != r0) { /* Next insn is delay slot */ pc=0x21268; run_21200(); return; } r4 = r4 & 2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x211b0; continue; } case 0x211f8: r2 = r2 & 4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x21068; continue; } 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: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6936; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x21220: r2 = r0 + 1; if(r4 == r2) { /* Next insn is delay slot */ pc=0x21268; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x21240: r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r4 < 0) { /* Next insn is delay slot */ pc=0x212dc; continue; } r5 = r2 & 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x212ac; continue; } r5 = r4 < 256 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x212ac; continue; } case 0x21268: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r3 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21278; return; case 0x21278: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x25e00; run_25e00(); return; case 0x21290: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6028; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x212ac: r3 = r2 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x211f8; run_21000(); return; } r3 = 1 << 16; r4 = r4 < r3 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x211b0; run_21000(); return; } /* Next insn is delay slot */ pc=0x211f8; run_21000(); return; case 0x212d0: r4 = r2 + r0; /* Next insn is delay slot */ pc=0x21050; run_21000(); return; case 0x212dc: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -5984; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x21400: pc=0x21400; 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: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -40; r3 = r0 + 32; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; r16 = r4 + r0; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2161c; run_21600(); return; } case 0x21424: r3 = r0 + 35; if(r2 == r3) { /* Next insn is delay slot */ pc=0x21544; continue; } r3 = r0 + 91; if(r2 != r3) { /* Next insn is delay slot */ pc=0x214a8; continue; } /* Next insn is delay slot */ r31=0x21444; pc=0x1c000; run_1c000(); return; case 0x21444: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x21450; pc=0x15c00; run_15c00(); return; case 0x21450: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2145c; pc=0x32200; run_32200(); return; case 0x2145c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 93; if(r3 == r2) { /* Next insn is delay slot */ pc=0x216dc; run_21600(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x2147c; pc=0x1b000; run_1b000(); return; case 0x2147c: r2 = r0 + r0; case 0x21480: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x2148c; pc=0x1ce00; run_1ce00(); return; case 0x2148c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x214a8: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x214b4; pc=0x16200; run_16200(); return; case 0x214b4: r4 = r16 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x214c4; pc=0x32200; run_32200(); return; case 0x214c4: r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r3 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21590; continue; } r2 = r0 + 16; r16 = r0 + r0; case 0x214e0: r3 = r3 & 128; if(r3 == r0) { /* Next insn is delay slot */ pc=0x214f0; continue; } r16 = r2 + r0; case 0x214f0: if(r17 != r0) { /* Next insn is delay slot */ pc=0x21640; run_21600(); return; } case 0x214f8: /* Next insn is delay slot */ r31=0x21500; pc=0x20000; run_20000(); return; case 0x21500: if(r2 == r0) { /* Next insn is delay slot */ pc=0x21630; run_21600(); return; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 + -83; r2 = r2 & 255; r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x215fc; continue; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -5280; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x21544: /* Next insn is delay slot */ r31=0x2154c; pc=0x1c000; run_1c000(); return; case 0x2154c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x21558; pc=0x15c00; run_15c00(); return; case 0x21558: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x21564; pc=0x32000; run_32000(); return; case 0x21564: r2 = r0 + 64; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x21574; pc=0x1ce00; run_1ce00(); return; case 0x21574: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x21590: r2 = r0 + 144; r16 = r0 + 128; /* Next insn is delay slot */ pc=0x214e0; continue; case 0x215a0: r17 = r0 + 2; case 0x215a4: /* Next insn is delay slot */ r31=0x215ac; pc=0x1c000; run_1c000(); return; case 0x215ac: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x21730; run_21600(); return; } r2 = r17 | r16; case 0x215bc: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x215c8; pc=0x1ce00; run_1ce00(); return; case 0x215c8: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x215e4: r17 = r0 + 3; /* Next insn is delay slot */ pc=0x215a4; continue; case 0x215f0: r17 = r0 + 1; /* Next insn is delay slot */ pc=0x215a4; continue; case 0x215fc: r4 = 7 << 16; case 0x21600: pc=0x21600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_21600() throws ExecutionException { /* 0x21600 - 0x21800 */ int addr, tmp; for(;;) { switch(pc) { case 0x21600: r4 = r4 + -6980; r17 = r0 + r0; /* Next insn is delay slot */ r31=0x21610; pc=0x1b000; run_1b000(); return; case 0x21610: r2 = r17 | r16; /* Next insn is delay slot */ pc=0x215bc; run_21400(); return; case 0x2161c: /* Next insn is delay slot */ r31=0x21624; pc=0x1c000; run_1c000(); return; case 0x21624: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x21424; run_21400(); return; case 0x21630: r17 = r0 + r0; r2 = r17 | r16; /* Next insn is delay slot */ pc=0x215bc; run_21400(); return; case 0x21640: /* Next insn is delay slot */ r31=0x21648; pc=0x20000; run_20000(); return; case 0x21648: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x216b0; continue; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 + -83; r2 = r2 & 255; r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21798; continue; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -5124; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x21690: r17 = r0 + 8; case 0x21694: /* Next insn is delay slot */ r31=0x2169c; pc=0x1c000; run_1c000(); return; case 0x2169c: r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x216b0; continue; } /* Next insn is delay slot */ r31=0x216b0; pc=0x1c000; run_1c000(); return; case 0x216b0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 41; r16 = r16 | r17; if(r3 == r2) { /* Next insn is delay slot */ pc=0x217f4; continue; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x216d4; pc=0x1b000; run_1b000(); return; case 0x216d4: /* Next insn is delay slot */ pc=0x214f8; run_21400(); return; case 0x216dc: /* Next insn is delay slot */ r31=0x216e4; pc=0x1c000; run_1c000(); return; case 0x216e4: /* Next insn is delay slot */ r31=0x216ec; pc=0x20000; run_20000(); return; case 0x216ec: if(r2 == r0) { /* Next insn is delay slot */ pc=0x217e8; continue; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 + -83; r2 = r2 & 255; r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x217b4; continue; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4968; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x21730: /* Next insn is delay slot */ r31=0x21738; pc=0x1c000; run_1c000(); return; case 0x21738: r2 = r17 | r16; /* Next insn is delay slot */ pc=0x215bc; run_21400(); return; case 0x21744: r17 = r0 + 4; /* Next insn is delay slot */ pc=0x21694; continue; case 0x21750: r17 = r0 + 12; /* Next insn is delay slot */ pc=0x21694; continue; case 0x2175c: r16 = r0 + 34; case 0x21760: /* Next insn is delay slot */ r31=0x21768; pc=0x1c000; run_1c000(); return; case 0x21768: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x217d4; continue; } r2 = r16 + r0; /* Next insn is delay slot */ pc=0x21480; run_21400(); return; case 0x21780: r16 = r0 + 33; /* Next insn is delay slot */ pc=0x21760; continue; case 0x2178c: r16 = r0 + 35; /* Next insn is delay slot */ pc=0x21760; continue; case 0x21798: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x217a8; pc=0x1b000; run_1b000(); return; case 0x217a8: r17 = r0 + r0; /* Next insn is delay slot */ pc=0x216b0; continue; case 0x217b4: r4 = 7 << 16; r4 = r4 + -6980; r16 = r0 + 32; /* Next insn is delay slot */ r31=0x217c8; pc=0x1b000; run_1b000(); return; case 0x217c8: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x21480; run_21400(); return; case 0x217d4: /* Next insn is delay slot */ r31=0x217dc; pc=0x1c000; run_1c000(); return; case 0x217dc: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x21480; run_21400(); return; case 0x217e8: r2 = r0 + 32; /* Next insn is delay slot */ pc=0x21480; run_21400(); return; case 0x217f4: /* Next insn is delay slot */ r31=0x217fc; pc=0x1c000; run_1c000(); return; case 0x217fc: /* Next insn is delay slot */ pc=0x214f8; run_21400(); return; case 0x21800: pc=0x21800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_21800() throws ExecutionException { /* 0x21800 - 0x21a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x21800: 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 + -136; r6 = r5 + r0; r5 = r29 + 104; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x21a2c; pc=0x31000; run_31000(); return; case 0x21a2c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x21b60; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21dc8; run_21c00(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4812; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x21a74: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x21a80; pc=0x15c00; run_15c00(); return; case 0x21a80: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x21a8c; pc=0x32200; run_32200(); return; case 0x21a8c: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21e38; run_21e00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x22058; run_22000(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r6 = r6 + -2; r16 = r6 & 65535; r6 = r6 & 32768; if(r6 == r0) { /* Next insn is delay slot */ pc=0x21aec; continue; } r2 = 65535 << 16; r16 = r16 + r2; case 0x21aec: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x21b34; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x22268; run_22200(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x21b10: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x21b28; pc=0x42000; run_42000(); return; case 0x21b28: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x21b34; pc=0x1b000; run_1b000(); return; case 0x21b34: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21b44; return; case 0x21b44: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21b54; return; case 0x21b54: /* Next insn is delay slot */ r31=0x21b5c; pc=0x1ce00; run_1ce00(); return; case 0x21b5c: r2 = r0 + 1; case 0x21b60: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x21b84: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x21b90; pc=0x15c00; run_15c00(); return; case 0x21b90: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x21b9c; pc=0x32200; run_32200(); return; case 0x21b9c: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21e8c; run_21e00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x22084; run_22000(); return; } r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r16 = r6 - r16; r16 = r16 + -3; r16 = r16 & 65535; case 0x21be8: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21bf8; return; case 0x21bf8: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x21c04; pc=0x26000; run_26000(); return; case 0x21c00: pc=0x21c00; 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: case 0x21c04: /* Next insn is delay slot */ r31=0x21c0c; pc=0x1ce00; run_1ce00(); return; case 0x21c0c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21b60; run_21a00(); return; case 0x21c18: /* Next insn is delay slot */ r31=0x21c20; pc=0x15e00; run_15e00(); return; case 0x21c20: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x21c2c; pc=0x20000; run_20000(); return; case 0x21c2c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x21e44; run_21e00(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x21c44; pc=0x1b000; run_1b000(); return; case 0x21c44: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21b60; run_21a00(); return; case 0x21c50: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x21c5c; pc=0x20200; run_20200(); return; case 0x21c5c: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x21c6c; pc=0x21400; run_21400(); return; case 0x21c6c: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4784; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x21c98: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x21ca4; pc=0x20200; run_20200(); return; case 0x21ca4: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x21cb4; pc=0x21400; run_21400(); return; case 0x21cb4: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22254; run_22200(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21de8; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x22240; run_22200(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x21cec: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x21d04; pc=0x21000; run_21000(); return; case 0x21d04: r2 = r0 + 1; case 0x21d08: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x21d2c: /* Next insn is delay slot */ r31=0x21d34; pc=0x20200; run_20200(); return; case 0x21d34: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x21d44; pc=0x21400; run_21400(); return; case 0x21d44: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x220b0; run_22000(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x21e98; run_21e00(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22134; run_22000(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x21d80: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x21d98; pc=0x21000; run_21000(); return; case 0x21d98: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; continue; case 0x21da4: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21db4; return; case 0x21db4: /* Next insn is delay slot */ r31=0x21dbc; pc=0x1ce00; run_1ce00(); return; case 0x21dbc: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21b60; run_21a00(); return; case 0x21dc8: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x21ddc; pc=0x1b800; run_1b800(); return; case 0x21ddc: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; continue; case 0x21de8: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22148; run_22000(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } case 0x21e00: pc=0x21e00; 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: r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x21e2c; return; case 0x21e2c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x21e38: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x21b34; run_21a00(); return; case 0x21e44: /* Next insn is delay slot */ r31=0x21e4c; pc=0x15e00; run_15e00(); return; case 0x21e4c: r18 = r2 + r0; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x21e60; return; case 0x21e60: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x21e6c; pc=0x25e00; run_25e00(); return; case 0x21e6c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x21e78; pc=0x25e00; run_25e00(); return; case 0x21e78: /* Next insn is delay slot */ r31=0x21e80; pc=0x1ce00; run_1ce00(); return; case 0x21e80: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21b60; run_21a00(); return; case 0x21e8c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x21be8; run_21a00(); return; case 0x21e98: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2203c; run_22000(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x21ec4; pc=0x21000; run_21000(); return; case 0x21ec4: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x21ed0: r2 = 7 << 16; r2 = r2 + -2504; case 0x21ed8: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x21ef0; pc=0x21000; run_21000(); return; case 0x21ef0: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x21efc: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; case 0x21f08: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x21f20; pc=0x21000; run_21000(); return; case 0x21f20: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x21f2c: r2 = 7 << 16; r2 = r2 + -2432; r17 = r17 + r2; r2 = 7 << 16; r3 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x21f98; continue; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x21f98; continue; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x21f90; continue; } r16 = r16 & 256; r2 = r2 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x22294; run_22200(); return; } r20 = readPages[(r2+36)>>>12][((r2+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x21f84: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r2 = r0 + 2; r20 = r2 - r20; case 0x21f90: r2 = r6 << 8; r6 = r2 | r6; case 0x21f98: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x21fa8; pc=0x21000; run_21000(); return; case 0x21fa8: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x21fb4: r2 = 7 << 16; r2 = r2 + -2612; /* Next insn is delay slot */ pc=0x21ed8; continue; case 0x21fc4: r2 = 7 << 16; r2 = r2 + -2360; /* Next insn is delay slot */ pc=0x21ed8; continue; case 0x21fd4: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x21ed8; continue; case 0x21fe4: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x21ed8; continue; case 0x21ff4: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x21ed8; continue; case 0x22000: pc=0x22000; 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: case 0x22004: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x21cec; run_21c00(); return; case 0x22018: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; /* Next insn is delay slot */ pc=0x21f08; run_21e00(); return; case 0x2202c: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x21ed8; run_21e00(); return; case 0x2203c: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x2204c; pc=0x1b000; run_1b000(); return; case 0x2204c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x22058: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x2206c; pc=0x42000; run_42000(); return; case 0x2206c: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x22078; pc=0x1b000; run_1b000(); return; case 0x22078: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x21b34; run_21a00(); return; case 0x22084: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x22098; pc=0x42000; run_42000(); return; case 0x22098: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x220a4; pc=0x1b000; run_1b000(); return; case 0x220a4: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x21be8; run_21a00(); return; case 0x220b0: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x220d4; pc=0x21000; run_21000(); return; case 0x220d4: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x22128; pc=0x1ac00; run_1ac00(); return; case 0x22128: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x22134: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x21d80; run_21c00(); return; case 0x22148: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22274; run_22200(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x22274; run_22200(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x221b0; continue; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x22280; run_22200(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x221a4: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x221b0: r16 = r2 << 8; r16 = r16 | r2; case 0x221b8: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x221cc; pc=0x21000; run_21000(); return; case 0x221cc: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x22200: pc=0x22200; 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: r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x222a8; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x21d04; run_21c00(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x22234; pc=0x1ac00; run_1ac00(); return; case 0x22234: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x22240: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x21cec; run_21c00(); return; case 0x22254: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x21cec; run_21c00(); return; case 0x22268: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x21b10; run_21a00(); return; case 0x22274: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x221b8; run_22000(); return; case 0x22280: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x221a4; run_22000(); return; case 0x22294: r20 = readPages[(r2+40)>>>12][((r2+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x21f84; run_21e00(); return; case 0x222a8: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x222b8; pc=0x1ac00; run_1ac00(); return; case 0x222b8: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x21d08; run_21c00(); return; case 0x22400: pc=0x22400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22400() throws ExecutionException { /* 0x22400 - 0x22600 */ int addr, tmp; for(;;) { switch(pc) { case 0x22400: r29 = r29 + -24; r4 = r0 + 8; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x22414; pc=0x17600; run_17600(); return; case 0x22414: r5 = 7 << 16; r4 = r28 + -30692; r5 = r5 + 7760; writePages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x2242c; pc=0x30e00; run_30e00(); return; case 0x2242c: r5 = 7 << 16; r4 = r28 + -30696; r5 = r5 + 7340; /* Next insn is delay slot */ r31=0x22440; pc=0x30e00; run_30e00(); return; case 0x22440: r5 = 7 << 16; r4 = r28 + -30700; r5 = r5 + 7320; /* Next insn is delay slot */ r31=0x22454; pc=0x30e00; run_30e00(); return; case 0x22454: r5 = 7 << 16; r4 = r28 + -30704; r5 = r5 + 7260; /* Next insn is delay slot */ r31=0x22468; pc=0x30e00; run_30e00(); return; case 0x22468: r5 = 7 << 16; r4 = r28 + -30708; r5 = r5 + 6860; /* Next insn is delay slot */ r31=0x2247c; pc=0x30e00; run_30e00(); return; case 0x2247c: r5 = 7 << 16; r4 = r28 + -30712; r5 = r5 + 6820; /* Next insn is delay slot */ r31=0x22490; pc=0x30e00; run_30e00(); return; case 0x22490: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = 7 << 16; r4 = r28 + -30716; r5 = r5 + 6100; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x30e00; run_30e00(); return; case 0x22600: pc=0x22600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22600() throws ExecutionException { /* 0x22600 - 0x22800 */ int addr, tmp; for(;;) { switch(pc) { case 0x22600: r2 = r0 + 3; if(r4 == r2) { /* Next insn is delay slot */ pc=0x22618; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x22618: r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -136; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x22644; pc=0x18000; run_18000(); return; case 0x22644: r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = r29 + 104; /* Next insn is delay slot */ r31=0x22658; pc=0x31000; run_31000(); return; case 0x22658: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2278c; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22b5c; run_22a00(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4524; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x226a0: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x226ac; pc=0x15c00; run_15c00(); return; case 0x226ac: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x226b8; pc=0x32200; run_32200(); return; case 0x226b8: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22c14; run_22c00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x22c64; run_22c00(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = r6 - r2; r2 = r2 + -2; r16 = r2 & 65535; r2 = r2 & 32768; if(r2 == r0) { /* Next insn is delay slot */ pc=0x22718; continue; } r2 = 65535 << 16; r16 = r16 + r2; case 0x22718: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x22760; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x22e74; run_22e00(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x2273c: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x22754; pc=0x42000; run_42000(); return; case 0x22754: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x22760; pc=0x1b000; run_1b000(); return; case 0x22760: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x22770; return; case 0x22770: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x22780; return; case 0x22780: /* Next insn is delay slot */ r31=0x22788; pc=0x1ce00; run_1ce00(); return; case 0x22788: r2 = r0 + 1; case 0x2278c: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x227b0: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x227bc; pc=0x15c00; run_15c00(); return; case 0x227bc: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x227c8; pc=0x32200; run_32200(); return; case 0x227c8: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22c20; run_22c00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x22c90; run_22c00(); return; } case 0x22800: pc=0x22800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22800() throws ExecutionException { /* 0x22800 - 0x22a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x22800: r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r16 = r6 + -3; r16 = r16 & 65535; case 0x22814: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x22824; return; case 0x22824: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x22830; pc=0x26000; run_26000(); return; case 0x22830: /* Next insn is delay slot */ r31=0x22838; pc=0x1ce00; run_1ce00(); return; case 0x22838: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22844: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x22854; return; case 0x22854: /* Next insn is delay slot */ r31=0x2285c; pc=0x1ce00; run_1ce00(); return; case 0x2285c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22868: /* Next insn is delay slot */ r31=0x22870; pc=0x20200; run_20200(); return; case 0x22870: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x22880; pc=0x21400; run_21400(); return; case 0x22880: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22cbc; run_22c00(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x22c2c; run_22c00(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22d40; run_22c00(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x22b40; run_22a00(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x228bc: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x228d4; pc=0x21000; run_21000(); return; case 0x228d4: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x228e0: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x228ec; pc=0x20200; run_20200(); return; case 0x228ec: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x228fc; pc=0x21400; run_21400(); return; case 0x228fc: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22d54; run_22c00(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22b7c; run_22a00(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x22d68; run_22c00(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x22b40; run_22a00(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x22934: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x2294c; pc=0x21000; run_21000(); return; case 0x2294c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22958: /* Next insn is delay slot */ r31=0x22960; pc=0x15e00; run_15e00(); return; case 0x22960: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2296c; pc=0x20000; run_20000(); return; case 0x2296c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x22bcc; run_22a00(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x22984; pc=0x1b000; run_1b000(); return; case 0x22984: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22990: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x2299c; pc=0x20200; run_20200(); return; case 0x2299c: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x229ac; pc=0x21400; run_21400(); return; case 0x229ac: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22b40; run_22a00(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4496; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x229d8: r3 = 7 << 16; r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; r2 = 7 << 16; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -2432; r17 = r17 + r2; r4 = r4 & 2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x22e8c; run_22e00(); return; } case 0x22a00: pc=0x22a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22a00() throws ExecutionException { /* 0x22a00 - 0x22c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x22a00: if(r18 == r0) { /* Next insn is delay slot */ pc=0x22e8c; run_22e00(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x22a38; continue; } r16 = r16 & 256; r3 = r3 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x22eac; run_22e00(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x22a2c: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x22a38: r3 = r2 << 8; r6 = r3 | r2; case 0x22a40: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x22a50; pc=0x21000; run_21000(); return; case 0x22a50: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22a5c: r2 = 7 << 16; r2 = r2 + -2612; case 0x22a64: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x22a7c; pc=0x21000; run_21000(); return; case 0x22a7c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22a88: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22a98: r2 = 7 << 16; r2 = r2 + -2360; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22aa8: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22ab8: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22ac8: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22ad8: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x22934; run_22800(); return; case 0x22aec: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; case 0x22af8: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x22b10; pc=0x21000; run_21000(); return; case 0x22b10: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22b1c: r2 = 7 << 16; r2 = r2 + -2504; /* Next insn is delay slot */ pc=0x22a64; continue; case 0x22b2c: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; /* Next insn is delay slot */ pc=0x22af8; continue; case 0x22b40: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x22b50; pc=0x1b000; run_1b000(); return; case 0x22b50: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22b5c: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x22b70; pc=0x1b800; run_1b800(); return; case 0x22b70: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22b7c: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x22d7c; run_22c00(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x22b40; continue; } r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x22b40; continue; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x22bc0; return; case 0x22bc0: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22bcc: /* Next insn is delay slot */ r31=0x22bd4; pc=0x15e00; run_15e00(); return; case 0x22bd4: r18 = r2 + r0; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x22be8; return; case 0x22be8: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x22bf4; pc=0x25e00; run_25e00(); return; case 0x22bf4: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x22c00; pc=0x25e00; run_25e00(); return; case 0x22c00: pc=0x22c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22c00() throws ExecutionException { /* 0x22c00 - 0x22e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x22c00: /* Next insn is delay slot */ r31=0x22c08; pc=0x1ce00; run_1ce00(); return; case 0x22c08: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22c14: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x22760; run_22600(); return; case 0x22c20: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x22814; run_22800(); return; case 0x22c2c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x22b40; run_22a00(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x22c58; pc=0x21000; run_21000(); return; case 0x22c58: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22c64: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x22c78; pc=0x42000; run_42000(); return; case 0x22c78: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x22c84; pc=0x1b000; run_1b000(); return; case 0x22c84: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x22760; run_22600(); return; case 0x22c90: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x22ca4; pc=0x42000; run_42000(); return; case 0x22ca4: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x22cb0; pc=0x1b000; run_1b000(); return; case 0x22cb0: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x22814; run_22800(); return; case 0x22cbc: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x22ce0; pc=0x21000; run_21000(); return; case 0x22ce0: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x22d34; pc=0x1ac00; run_1ac00(); return; case 0x22d34: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22d40: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x228bc; run_22800(); return; case 0x22d54: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x22934; run_22800(); return; case 0x22d68: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x22934; run_22800(); return; case 0x22d7c: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x22e80; run_22e00(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x22e80; run_22e00(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x22de4; continue; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x22e98; run_22e00(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x22dd8: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x22de4: r16 = r2 << 8; r16 = r16 | r2; case 0x22dec: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x22e00; pc=0x21000; run_21000(); return; case 0x22e00: pc=0x22e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_22e00() throws ExecutionException { /* 0x22e00 - 0x23000 */ int addr, tmp; for(;;) { switch(pc) { case 0x22e00: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x22ec0; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x228d4; run_22800(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x22e68; pc=0x1ac00; run_1ac00(); return; case 0x22e68: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x22e74: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x2273c; run_22600(); return; case 0x22e80: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x22dec; run_22c00(); return; case 0x22e8c: r6 = r2 + r0; /* Next insn is delay slot */ pc=0x22a40; run_22a00(); return; case 0x22e98: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x22dd8; run_22c00(); return; case 0x22eac: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x22a2c; run_22a00(); return; case 0x22ec0: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x22ed0; pc=0x1ac00; run_1ac00(); return; case 0x22ed0: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2278c; run_22600(); return; case 0x23000: pc=0x23000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23000() throws ExecutionException { /* 0x23000 - 0x23200 */ int addr, tmp; for(;;) { switch(pc) { case 0x23000: r2 = r0 + 3; if(r4 == r2) { /* Next insn is delay slot */ pc=0x23018; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x23018: r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -136; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x23044; pc=0x18000; run_18000(); return; case 0x23044: r4 = readPages[(r28+-30696)>>>12][((r28+-30696)>>>2)&0x3ff]; r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = r29 + 104; /* Next insn is delay slot */ r31=0x23058; pc=0x31000; run_31000(); return; case 0x23058: if(r2 == r0) { /* Next insn is delay slot */ pc=0x230a0; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23574; run_23400(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4236; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x230a0: r4 = readPages[(r28+-30700)>>>12][((r28+-30700)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x230b0; pc=0x21a00; run_21a00(); return; case 0x230b0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x230e0; continue; } case 0x230b8: r2 = r0 + 1; case 0x230bc: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x230e0: r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x230f0; pc=0x21a00; run_21a00(); return; case 0x230f0: r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x230bc; continue; case 0x230fc: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23108; pc=0x15c00; run_15c00(); return; case 0x23108: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23114; pc=0x32200; run_32200(); return; case 0x23114: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2362c; run_23600(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x23698; run_23600(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r16 = r6 + -3; r16 = r16 & 65535; case 0x23160: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23170; return; case 0x23170: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2317c; pc=0x26000; run_26000(); return; case 0x2317c: /* Next insn is delay slot */ r31=0x23184; pc=0x1ce00; run_1ce00(); return; case 0x23184: /* Next insn is delay slot */ pc=0x230b8; continue; case 0x2318c: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23198; pc=0x15c00; run_15c00(); return; case 0x23198: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x231a4; pc=0x32200; run_32200(); return; case 0x231a4: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23620; run_23600(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x2366c; run_23600(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = r6 - r2; r2 = r2 + -2; r16 = r2 & 65535; r2 = r2 & 32768; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23204; run_23200(); return; } r2 = 65535 << 16; case 0x23200: pc=0x23200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23200() throws ExecutionException { /* 0x23200 - 0x23400 */ int addr, tmp; for(;;) { switch(pc) { case 0x23200: r16 = r16 + r2; case 0x23204: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2324c; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23874; run_23800(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x23228: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x23240; pc=0x42000; run_42000(); return; case 0x23240: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2324c; pc=0x1b000; run_1b000(); return; case 0x2324c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2325c; return; case 0x2325c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2326c; return; case 0x2326c: /* Next insn is delay slot */ r31=0x23274; pc=0x1ce00; run_1ce00(); return; case 0x23274: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x2327c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2328c; return; case 0x2328c: /* Next insn is delay slot */ r31=0x23294; pc=0x1ce00; run_1ce00(); return; case 0x23294: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x2329c: /* Next insn is delay slot */ r31=0x232a4; pc=0x20200; run_20200(); return; case 0x232a4: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x232b4; pc=0x21400; run_21400(); return; case 0x232b4: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x236c4; run_23600(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x23638; run_23600(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x23744; run_23600(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2355c; run_23400(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x232f0: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x23308; pc=0x21000; run_21000(); return; case 0x23308: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23310: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x2331c; pc=0x20200; run_20200(); return; case 0x2331c: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x2332c; pc=0x21400; run_21400(); return; case 0x2332c: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x23758; run_23600(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23590; run_23400(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x2376c; run_23600(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2355c; run_23400(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x23364: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x2337c; pc=0x21000; run_21000(); return; case 0x2337c: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23384: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x23390; pc=0x20200; run_20200(); return; case 0x23390: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x233a0; pc=0x21400; run_21400(); return; case 0x233a0: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2355c; run_23400(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -4208; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x233cc: /* Next insn is delay slot */ r31=0x233d4; pc=0x15e00; run_15e00(); return; case 0x233d4: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x233e0; pc=0x20000; run_20000(); return; case 0x233e0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x235dc; run_23400(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x233f8; pc=0x1b000; run_1b000(); return; case 0x233f8: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23400: pc=0x23400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23400() throws ExecutionException { /* 0x23400 - 0x23600 */ int addr, tmp; for(;;) { switch(pc) { case 0x23400: r3 = 7 << 16; r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; r2 = 7 << 16; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -2432; r17 = r17 + r2; r4 = r4 & 2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2388c; run_23800(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x2388c; run_23800(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x23460; continue; } r16 = r16 & 256; r3 = r3 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x238ac; run_23800(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x23454: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x23460: r3 = r2 << 8; r6 = r3 | r2; case 0x23468: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23478; pc=0x21000; run_21000(); return; case 0x23478: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23480: r2 = 7 << 16; r2 = r2 + -2360; case 0x23488: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x234a0; pc=0x21000; run_21000(); return; case 0x234a0: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x234a8: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x23488; continue; case 0x234b8: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x23488; continue; case 0x234c8: r2 = 7 << 16; r2 = r2 + -2612; /* Next insn is delay slot */ pc=0x23488; continue; case 0x234d8: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x23488; continue; case 0x234e8: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x23488; continue; case 0x234f8: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x23364; run_23200(); return; case 0x2350c: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; case 0x23518: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23530; pc=0x21000; run_21000(); return; case 0x23530: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23538: r2 = 7 << 16; r2 = r2 + -2504; /* Next insn is delay slot */ pc=0x23488; continue; case 0x23548: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; /* Next insn is delay slot */ pc=0x23518; continue; case 0x2355c: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x2356c; pc=0x1b000; run_1b000(); return; case 0x2356c: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23574: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x23588; pc=0x1b800; run_1b800(); return; case 0x23588: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23590: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x23780; run_23600(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2355c; continue; } r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2355c; continue; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x235d4; return; case 0x235d4: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x235dc: /* Next insn is delay slot */ r31=0x235e4; pc=0x15e00; run_15e00(); return; case 0x235e4: r18 = r2 + r0; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x235f8; return; case 0x235f8: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x23604; pc=0x25e00; run_25e00(); return; case 0x23600: pc=0x23600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23600() throws ExecutionException { /* 0x23600 - 0x23800 */ int addr, tmp; for(;;) { switch(pc) { case 0x23600: case 0x23604: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x23610; pc=0x25e00; run_25e00(); return; case 0x23610: /* Next insn is delay slot */ r31=0x23618; pc=0x1ce00; run_1ce00(); return; case 0x23618: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23620: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x2324c; run_23200(); return; case 0x2362c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23160; run_23000(); return; case 0x23638: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2355c; run_23400(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x23664; pc=0x21000; run_21000(); return; case 0x23664: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x2366c: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x23680; pc=0x42000; run_42000(); return; case 0x23680: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2368c; pc=0x1b000; run_1b000(); return; case 0x2368c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x2324c; run_23200(); return; case 0x23698: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x236ac; pc=0x42000; run_42000(); return; case 0x236ac: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x236b8; pc=0x1b000; run_1b000(); return; case 0x236b8: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23160; run_23000(); return; case 0x236c4: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x236e8; pc=0x21000; run_21000(); return; case 0x236e8: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x2373c; pc=0x1ac00; run_1ac00(); return; case 0x2373c: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23744: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x232f0; run_23200(); return; case 0x23758: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x23364; run_23200(); return; case 0x2376c: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x23364; run_23200(); return; case 0x23780: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23880; run_23800(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x23880; run_23800(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x237e8; continue; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x23898; run_23800(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x237dc: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x237e8: r16 = r2 << 8; r16 = r16 | r2; case 0x237f0: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x23804; pc=0x21000; run_21000(); return; case 0x23800: pc=0x23800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23800() throws ExecutionException { /* 0x23800 - 0x23a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x23800: case 0x23804: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x238c0; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x2386c; pc=0x1ac00; run_1ac00(); return; case 0x2386c: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23874: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x23228; run_23200(); return; case 0x23880: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x237f0; run_23600(); return; case 0x2388c: r6 = r2 + r0; /* Next insn is delay slot */ pc=0x23468; run_23400(); return; case 0x23898: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x237dc; run_23600(); return; case 0x238ac: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x23454; run_23400(); return; case 0x238c0: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x238d0; pc=0x1ac00; run_1ac00(); return; case 0x238d0: /* Next insn is delay slot */ pc=0x230b8; run_23000(); return; case 0x23a00: pc=0x23a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23a00() throws ExecutionException { /* 0x23a00 - 0x23c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x23a00: r2 = r0 + 3; if(r4 == r2) { /* Next insn is delay slot */ pc=0x23a18; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x23a18: r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -136; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x23a44; pc=0x18000; run_18000(); return; case 0x23a44: r4 = readPages[(r28+-30704)>>>12][((r28+-30704)>>>2)&0x3ff]; r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = r29 + 104; /* Next insn is delay slot */ r31=0x23a58; pc=0x31000; run_31000(); return; case 0x23a58: if(r2 == r0) { /* Next insn is delay slot */ pc=0x23aa0; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23f74; run_23e00(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3948; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x23aa0: r4 = readPages[(r28+-30696)>>>12][((r28+-30696)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x23ab0; pc=0x21a00; run_21a00(); return; case 0x23ab0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ae0; continue; } case 0x23ab8: r2 = r0 + 1; case 0x23abc: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x23ae0: r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x23af0; pc=0x21a00; run_21a00(); return; case 0x23af0: r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x23abc; continue; case 0x23afc: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23b08; pc=0x15c00; run_15c00(); return; case 0x23b08: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23b14; pc=0x32200; run_32200(); return; case 0x23b14: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2402c; run_24000(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x24098; run_24000(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r16 = r6 + -3; r16 = r16 & 65535; case 0x23b60: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23b70; return; case 0x23b70: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x23b7c; pc=0x26000; run_26000(); return; case 0x23b7c: /* Next insn is delay slot */ r31=0x23b84; pc=0x1ce00; run_1ce00(); return; case 0x23b84: /* Next insn is delay slot */ pc=0x23ab8; continue; case 0x23b8c: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23b98; pc=0x15c00; run_15c00(); return; case 0x23b98: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x23ba4; pc=0x32200; run_32200(); return; case 0x23ba4: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24020; run_24000(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x2406c; run_24000(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = r6 - r2; r2 = r2 + -2; r16 = r2 & 65535; r2 = r2 & 32768; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23c04; run_23c00(); return; } r2 = 65535 << 16; case 0x23c00: pc=0x23c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23c00() throws ExecutionException { /* 0x23c00 - 0x23e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x23c00: r16 = r16 + r2; case 0x23c04: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x23c4c; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24274; run_24200(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x23c28: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x23c40; pc=0x42000; run_42000(); return; case 0x23c40: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x23c4c; pc=0x1b000; run_1b000(); return; case 0x23c4c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23c5c; return; case 0x23c5c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23c6c; return; case 0x23c6c: /* Next insn is delay slot */ r31=0x23c74; pc=0x1ce00; run_1ce00(); return; case 0x23c74: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23c7c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23c8c; return; case 0x23c8c: /* Next insn is delay slot */ r31=0x23c94; pc=0x1ce00; run_1ce00(); return; case 0x23c94: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23c9c: /* Next insn is delay slot */ r31=0x23ca4; pc=0x20200; run_20200(); return; case 0x23ca4: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x23cb4; pc=0x21400; run_21400(); return; case 0x23cb4: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x240c4; run_24000(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x24038; run_24000(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24144; run_24000(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x23f5c; run_23e00(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x23cf0: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x23d08; pc=0x21000; run_21000(); return; case 0x23d08: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23d10: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x23d1c; pc=0x20200; run_20200(); return; case 0x23d1c: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x23d2c; pc=0x21400; run_21400(); return; case 0x23d2c: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24158; run_24000(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23f90; run_23e00(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x2416c; run_24000(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x23f5c; run_23e00(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x23d64: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23d7c; pc=0x21000; run_21000(); return; case 0x23d7c: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23d84: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x23d90; pc=0x20200; run_20200(); return; case 0x23d90: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x23da0; pc=0x21400; run_21400(); return; case 0x23da0: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x23f5c; run_23e00(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3920; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x23dcc: /* Next insn is delay slot */ r31=0x23dd4; pc=0x15e00; run_15e00(); return; case 0x23dd4: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x23de0; pc=0x20000; run_20000(); return; case 0x23de0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x23fdc; run_23e00(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x23df8; pc=0x1b000; run_1b000(); return; case 0x23df8: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23e00: pc=0x23e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_23e00() throws ExecutionException { /* 0x23e00 - 0x24000 */ int addr, tmp; for(;;) { switch(pc) { case 0x23e00: r3 = 7 << 16; r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; r2 = 7 << 16; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -2432; r17 = r17 + r2; r4 = r4 & 2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2428c; run_24200(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x2428c; run_24200(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x23e60; continue; } r16 = r16 & 256; r3 = r3 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x242ac; run_24200(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x23e54: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x23e60: r3 = r2 << 8; r6 = r3 | r2; case 0x23e68: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23e78; pc=0x21000; run_21000(); return; case 0x23e78: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23e80: r2 = 7 << 16; r2 = r2 + -2360; case 0x23e88: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23ea0; pc=0x21000; run_21000(); return; case 0x23ea0: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23ea8: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23eb8: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23ec8: r2 = 7 << 16; r2 = r2 + -2612; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23ed8: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23ee8: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23ef8: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x23d64; run_23c00(); return; case 0x23f0c: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; case 0x23f18: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x23f30; pc=0x21000; run_21000(); return; case 0x23f30: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23f38: r2 = 7 << 16; r2 = r2 + -2504; /* Next insn is delay slot */ pc=0x23e88; continue; case 0x23f48: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; /* Next insn is delay slot */ pc=0x23f18; continue; case 0x23f5c: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x23f6c; pc=0x1b000; run_1b000(); return; case 0x23f6c: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23f74: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x23f88; pc=0x1b800; run_1b800(); return; case 0x23f88: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23f90: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24180; run_24000(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x23f5c; continue; } r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x23f5c; continue; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x23fd4; return; case 0x23fd4: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x23fdc: /* Next insn is delay slot */ r31=0x23fe4; pc=0x15e00; run_15e00(); return; case 0x23fe4: r18 = r2 + r0; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x23ff8; return; case 0x23ff8: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x24004; pc=0x25e00; run_25e00(); return; case 0x24000: pc=0x24000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24000() throws ExecutionException { /* 0x24000 - 0x24200 */ int addr, tmp; for(;;) { switch(pc) { case 0x24000: case 0x24004: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x24010; pc=0x25e00; run_25e00(); return; case 0x24010: /* Next insn is delay slot */ r31=0x24018; pc=0x1ce00; run_1ce00(); return; case 0x24018: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x24020: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23c4c; run_23c00(); return; case 0x2402c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23b60; run_23a00(); return; case 0x24038: if(r2 != r0) { /* Next insn is delay slot */ pc=0x23f5c; run_23e00(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x24064; pc=0x21000; run_21000(); return; case 0x24064: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x2406c: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x24080; pc=0x42000; run_42000(); return; case 0x24080: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2408c; pc=0x1b000; run_1b000(); return; case 0x2408c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23c4c; run_23c00(); return; case 0x24098: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x240ac; pc=0x42000; run_42000(); return; case 0x240ac: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x240b8; pc=0x1b000; run_1b000(); return; case 0x240b8: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x23b60; run_23a00(); return; case 0x240c4: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x240e8; pc=0x21000; run_21000(); return; case 0x240e8: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x2413c; pc=0x1ac00; run_1ac00(); return; case 0x2413c: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x24144: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x23cf0; run_23c00(); return; case 0x24158: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x23d64; run_23c00(); return; case 0x2416c: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x23d64; run_23c00(); return; case 0x24180: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24280; run_24200(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x24280; run_24200(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x241e8; continue; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x24298; run_24200(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x241dc: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x241e8: r16 = r2 << 8; r16 = r16 | r2; case 0x241f0: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x24204; pc=0x21000; run_21000(); return; case 0x24200: pc=0x24200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24200() throws ExecutionException { /* 0x24200 - 0x24400 */ int addr, tmp; for(;;) { switch(pc) { case 0x24200: case 0x24204: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x242c0; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x2426c; pc=0x1ac00; run_1ac00(); return; case 0x2426c: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x24274: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x23c28; run_23c00(); return; case 0x24280: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x241f0; run_24000(); return; case 0x2428c: r6 = r2 + r0; /* Next insn is delay slot */ pc=0x23e68; run_23e00(); return; case 0x24298: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x241dc; run_24000(); return; case 0x242ac: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x23e54; run_23e00(); return; case 0x242c0: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x242d0; pc=0x1ac00; run_1ac00(); return; case 0x242d0: /* Next insn is delay slot */ pc=0x23ab8; run_23a00(); return; case 0x24400: pc=0x24400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24400() throws ExecutionException { /* 0x24400 - 0x24600 */ int addr, tmp; for(;;) { switch(pc) { case 0x24400: r2 = r0 + 3; if(r4 == r2) { /* Next insn is delay slot */ pc=0x24418; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x24418: r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -136; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x24444; pc=0x18000; run_18000(); return; case 0x24444: r4 = readPages[(r28+-30708)>>>12][((r28+-30708)>>>2)&0x3ff]; r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = r29 + 104; /* Next insn is delay slot */ r31=0x24458; pc=0x31000; run_31000(); return; case 0x24458: if(r2 == r0) { /* Next insn is delay slot */ pc=0x244a0; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24994; run_24800(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3660; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x244a0: r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x244b0; pc=0x21a00; run_21a00(); return; case 0x244b0: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x244d8: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x244e4; pc=0x15c00; run_15c00(); return; case 0x244e4: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x244f0; pc=0x32200; run_32200(); return; case 0x244f0: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24a58; run_24a00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x24ac8; run_24a00(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r16 = r6 + -3; r16 = r16 & 65535; case 0x2453c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2454c; return; case 0x2454c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x24558; pc=0x26000; run_26000(); return; case 0x24558: /* Next insn is delay slot */ r31=0x24560; pc=0x1ce00; run_1ce00(); return; case 0x24560: r2 = r0 + 1; case 0x24564: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x24588: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x24594; pc=0x15c00; run_15c00(); return; case 0x24594: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x245a0; pc=0x32200; run_32200(); return; case 0x245a0: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24a4c; run_24a00(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x24a9c; run_24a00(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = r6 - r2; r2 = r2 + -2; r16 = r2 & 65535; r2 = r2 & 32768; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24600; run_24600(); return; } r2 = 65535 << 16; r16 = r16 + r2; case 0x24600: pc=0x24600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24600() throws ExecutionException { /* 0x24600 - 0x24800 */ int addr, tmp; for(;;) { switch(pc) { case 0x24600: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x24648; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24cac; run_24c00(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x24624: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x2463c; pc=0x42000; run_42000(); return; case 0x2463c: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x24648; pc=0x1b000; run_1b000(); return; case 0x24648: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x24658; return; case 0x24658: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x24668; return; case 0x24668: /* Next insn is delay slot */ r31=0x24670; pc=0x1ce00; run_1ce00(); return; case 0x24670: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x2467c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2468c; return; case 0x2468c: /* Next insn is delay slot */ r31=0x24694; pc=0x1ce00; run_1ce00(); return; case 0x24694: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x246a0: /* Next insn is delay slot */ r31=0x246a8; pc=0x20200; run_20200(); return; case 0x246a8: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x246b8; pc=0x21400; run_21400(); return; case 0x246b8: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24af4; run_24a00(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x24a64; run_24a00(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24b78; run_24a00(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x24978; run_24800(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x246f4: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x2470c; pc=0x21000; run_21000(); return; case 0x2470c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24718: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x24724; pc=0x20200; run_20200(); return; case 0x24724: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x24734; pc=0x21400; run_21400(); return; case 0x24734: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24b8c; run_24a00(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x249b4; run_24800(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x24ba0; run_24a00(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x24978; run_24800(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x2476c: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x24784; pc=0x21000; run_21000(); return; case 0x24784: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24790: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x2479c; pc=0x20200; run_20200(); return; case 0x2479c: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x247ac; pc=0x21400; run_21400(); return; case 0x247ac: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24978; run_24800(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3632; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x247d8: /* Next insn is delay slot */ r31=0x247e0; pc=0x15e00; run_15e00(); return; case 0x247e0: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x247ec; pc=0x20000; run_20000(); return; case 0x247ec: if(r2 != r0) { /* Next insn is delay slot */ pc=0x24a04; run_24a00(); return; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x24804; pc=0x1b000; run_1b000(); return; case 0x24800: pc=0x24800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24800() throws ExecutionException { /* 0x24800 - 0x24a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x24800: case 0x24804: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24810: r3 = 7 << 16; r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; r2 = 7 << 16; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -2432; r17 = r17 + r2; r4 = r4 & 2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x24cc4; run_24c00(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x24cc4; run_24c00(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x24870; continue; } r16 = r16 & 256; r3 = r3 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x24ce4; run_24c00(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x24864: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x24870: r3 = r2 << 8; r6 = r3 | r2; case 0x24878: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x24888; pc=0x21000; run_21000(); return; case 0x24888: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24894: r2 = 7 << 16; r2 = r2 + -2360; case 0x2489c: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x248b4; pc=0x21000; run_21000(); return; case 0x248b4: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x248c0: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x248d0: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x248e0: r2 = 7 << 16; r2 = r2 + -2612; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x248f0: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x24900: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x24910: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x2476c; run_24600(); return; case 0x24924: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; case 0x24930: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x24948; pc=0x21000; run_21000(); return; case 0x24948: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24954: r2 = 7 << 16; r2 = r2 + -2504; /* Next insn is delay slot */ pc=0x2489c; continue; case 0x24964: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; /* Next insn is delay slot */ pc=0x24930; continue; case 0x24978: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x24988; pc=0x1b000; run_1b000(); return; case 0x24988: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24994: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x249a8; pc=0x1b800; run_1b800(); return; case 0x249a8: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x249b4: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x24bb4; run_24a00(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x24978; continue; } r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x24978; continue; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x249f8; return; case 0x249f8: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24a00: pc=0x24a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24a00() throws ExecutionException { /* 0x24a00 - 0x24c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x24a00: case 0x24a04: /* Next insn is delay slot */ r31=0x24a0c; pc=0x15e00; run_15e00(); return; case 0x24a0c: r18 = r2 + r0; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x24a20; return; case 0x24a20: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x24a2c; pc=0x25e00; run_25e00(); return; case 0x24a2c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x24a38; pc=0x25e00; run_25e00(); return; case 0x24a38: /* Next insn is delay slot */ r31=0x24a40; pc=0x1ce00; run_1ce00(); return; case 0x24a40: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24a4c: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x24648; run_24600(); return; case 0x24a58: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x2453c; run_24400(); return; case 0x24a64: if(r2 != r0) { /* Next insn is delay slot */ pc=0x24978; run_24800(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x24a90; pc=0x21000; run_21000(); return; case 0x24a90: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24a9c: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x24ab0; pc=0x42000; run_42000(); return; case 0x24ab0: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x24abc; pc=0x1b000; run_1b000(); return; case 0x24abc: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x24648; run_24600(); return; case 0x24ac8: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x24adc; pc=0x42000; run_42000(); return; case 0x24adc: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x24ae8; pc=0x1b000; run_1b000(); return; case 0x24ae8: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x2453c; run_24400(); return; case 0x24af4: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x24b18; pc=0x21000; run_21000(); return; case 0x24b18: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x24b6c; pc=0x1ac00; run_1ac00(); return; case 0x24b6c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24b78: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x246f4; run_24600(); return; case 0x24b8c: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x2476c; run_24600(); return; case 0x24ba0: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x2476c; run_24600(); return; case 0x24bb4: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x24cb8; run_24c00(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x24cb8; run_24c00(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x24c1c; run_24c00(); return; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x24cd0; run_24c00(); return; } case 0x24c00: pc=0x24c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24c00() throws ExecutionException { /* 0x24c00 - 0x24e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x24c00: r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x24c10: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x24c1c: r16 = r2 << 8; r16 = r16 | r2; case 0x24c24: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x24c38; pc=0x21000; run_21000(); return; case 0x24c38: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x24cf8; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x24560; run_24400(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x24ca0; pc=0x1ac00; run_1ac00(); return; case 0x24ca0: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24cac: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x24624; run_24600(); return; case 0x24cb8: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x24c24; continue; case 0x24cc4: r6 = r2 + r0; /* Next insn is delay slot */ pc=0x24878; run_24800(); return; case 0x24cd0: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x24c10; continue; case 0x24ce4: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x24864; run_24800(); return; case 0x24cf8: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x24d08; pc=0x1ac00; run_1ac00(); return; case 0x24d08: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x24564; run_24400(); return; case 0x24e00: pc=0x24e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_24e00() throws ExecutionException { /* 0x24e00 - 0x25000 */ int addr, tmp; for(;;) { switch(pc) { case 0x24e00: r2 = r0 + 3; if(r4 == r2) { /* Next insn is delay slot */ pc=0x24e18; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x24e18: r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -136; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x24e44; pc=0x18000; run_18000(); return; case 0x24e44: r4 = readPages[(r28+-30716)>>>12][((r28+-30716)>>>2)&0x3ff]; r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; r5 = r29 + 104; /* Next insn is delay slot */ r31=0x24e58; pc=0x31000; run_31000(); return; case 0x24e58: if(r2 == r0) { /* Next insn is delay slot */ pc=0x24ea0; continue; } r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r2 = r16 >> 10; r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r17 = r16 & 255; r18 = r16 & 768; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2538c; run_25200(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3372; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x24ea0: r4 = readPages[(r28+-30708)>>>12][((r28+-30708)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x24eb0; pc=0x21a00; run_21a00(); return; case 0x24eb0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x24ee0; continue; } case 0x24eb8: r2 = r0 + 1; case 0x24ebc: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x24ee0: r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x24ef0; pc=0x21a00; run_21a00(); return; case 0x24ef0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x24eb8; continue; } r4 = readPages[(r28+-30712)>>>12][((r28+-30712)>>>2)&0x3ff]; r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x24f08; pc=0x21a00; run_21a00(); return; case 0x24f08: r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x24ebc; continue; case 0x24f14: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x24f20; pc=0x15c00; run_15c00(); return; case 0x24f20: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x24f2c; pc=0x32200; run_32200(); return; case 0x24f2c: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25444; run_25400(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x254b0; run_25400(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r6 = r6 - r2; r16 = r6 + -3; r16 = r16 & 65535; case 0x24f78: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x24f88; return; case 0x24f88: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x24f94; pc=0x26000; run_26000(); return; case 0x24f94: /* Next insn is delay slot */ r31=0x24f9c; pc=0x1ce00; run_1ce00(); return; case 0x24f9c: /* Next insn is delay slot */ pc=0x24eb8; continue; case 0x24fa4: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x24fb0; pc=0x15c00; run_15c00(); return; case 0x24fb0: r4 = r29 + 80; /* Next insn is delay slot */ r31=0x24fbc; pc=0x32200; run_32200(); return; case 0x24fbc: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r3 = r4 & r3; r3 = r3 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25438; run_25400(); return; } r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r3 = r0 | 65535; r4 = r6 | 65535; if(r4 != r3) { /* Next insn is delay slot */ pc=0x25484; run_25400(); return; } r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = r6 - r2; case 0x25000: pc=0x25000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25000() throws ExecutionException { /* 0x25000 - 0x25200 */ int addr, tmp; for(;;) { switch(pc) { case 0x25000: r2 = r2 + -2; r16 = r2 & 65535; r2 = r2 & 32768; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2501c; continue; } r2 = 65535 << 16; r16 = r16 + r2; case 0x2501c: r2 = r16 + 128; r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x25064; continue; } r2 = r16 < -128 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2568c; run_25600(); return; } r7 = r0 + -128; r7 = r7 - r16; case 0x25040: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5772; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x25058; pc=0x42000; run_42000(); return; case 0x25058: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x25064; pc=0x1b000; run_1b000(); return; case 0x25064: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x25074; return; case 0x25074: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x25084; return; case 0x25084: /* Next insn is delay slot */ r31=0x2508c; pc=0x1ce00; run_1ce00(); return; case 0x2508c: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25094: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x250a4; return; case 0x250a4: /* Next insn is delay slot */ r31=0x250ac; pc=0x1ce00; run_1ce00(); return; case 0x250ac: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x250b4: /* Next insn is delay slot */ r31=0x250bc; pc=0x20200; run_20200(); return; case 0x250bc: r4 = r29 + 16; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x250cc; pc=0x21400; run_21400(); return; case 0x250cc: r3 = r0 + 16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x254dc; run_25400(); return; } r3 = r2 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x25450; run_25400(); return; } r3 = r0 + 24; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2555c; run_25400(); return; } r3 = r0 + 32; if(r2 != r3) { /* Next insn is delay slot */ pc=0x25374; run_25200(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2996; case 0x25108: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x25120; pc=0x21000; run_21000(); return; case 0x25120: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25128: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x25134; pc=0x20200; run_20200(); return; case 0x25134: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x25144; pc=0x21400; run_21400(); return; case 0x25144: r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x25570; run_25400(); return; } r3 = r2 < 4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x253a8; run_25200(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x25584; run_25400(); return; } r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x25374; run_25200(); return; } r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2764; case 0x2517c: r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x25194; pc=0x21000; run_21000(); return; case 0x25194: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x2519c: r19 = r29 + 16; /* Next insn is delay slot */ r31=0x251a8; pc=0x20200; run_20200(); return; case 0x251a8: r4 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x251b8; pc=0x21400; run_21400(); return; case 0x251b8: r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25374; run_25200(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + -3344; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x251e4: /* Next insn is delay slot */ r31=0x251ec; pc=0x15e00; run_15e00(); return; case 0x251ec: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x251f8; pc=0x20000; run_20000(); return; case 0x251f8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x253f4; run_25200(); return; } case 0x25200: pc=0x25200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25200() throws ExecutionException { /* 0x25200 - 0x25400 */ int addr, tmp; for(;;) { switch(pc) { case 0x25200: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x25210; pc=0x1b000; run_1b000(); return; case 0x25210: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25218: r3 = 7 << 16; r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; r2 = 7 << 16; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r2 = r2 + -2432; r17 = r17 + r2; r4 = r4 & 2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x256a4; run_25600(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x256a4; run_25600(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x25278; continue; } r16 = r16 & 256; r3 = r3 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x256c4; run_25600(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x2526c: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x25278: r3 = r2 << 8; r6 = r3 | r2; case 0x25280: r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x25290; pc=0x21000; run_21000(); return; case 0x25290: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25298: r2 = 7 << 16; r2 = r2 + -2360; case 0x252a0: r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x252b8; pc=0x21000; run_21000(); return; case 0x252b8: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x252c0: r2 = 7 << 16; r2 = r2 + -2396; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x252d0: r2 = 7 << 16; r2 = r2 + -2468; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x252e0: r2 = 7 << 16; r2 = r2 + -2612; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x252f0: r2 = 7 << 16; r2 = r2 + -2576; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x25300: r2 = 7 << 16; r2 = r2 + -2540; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x25310: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2324; /* Next insn is delay slot */ pc=0x2517c; run_25000(); return; case 0x25324: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2256; case 0x25330: r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x25348; pc=0x21000; run_21000(); return; case 0x25348: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25350: r2 = 7 << 16; r2 = r2 + -2504; /* Next insn is delay slot */ pc=0x252a0; continue; case 0x25360: r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2120; /* Next insn is delay slot */ pc=0x25330; continue; case 0x25374: r4 = 7 << 16; r4 = r4 + -3048; /* Next insn is delay slot */ r31=0x25384; pc=0x1b000; run_1b000(); return; case 0x25384: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x2538c: r4 = 7 << 16; r4 = r4 + -5732; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x253a0; pc=0x1b800; run_1b800(); return; case 0x253a0: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x253a8: r3 = r0 + 64; if(r2 == r3) { /* Next insn is delay slot */ pc=0x25598; run_25400(); return; } r3 = r0 + 128; if(r2 != r3) { /* Next insn is delay slot */ pc=0x25374; continue; } r2 = 7 << 16; r2 = r2 + -2920; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x25374; continue; } r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x253ec; return; case 0x253ec: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x253f4: /* Next insn is delay slot */ r31=0x253fc; pc=0x15e00; run_15e00(); return; case 0x253fc: r18 = r2 + r0; case 0x25400: pc=0x25400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25400() throws ExecutionException { /* 0x25400 - 0x25600 */ int addr, tmp; for(;;) { switch(pc) { case 0x25400: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x25410; return; case 0x25410: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x2541c; pc=0x25e00; run_25e00(); return; case 0x2541c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x25428; pc=0x25e00; run_25e00(); return; case 0x25428: /* Next insn is delay slot */ r31=0x25430; pc=0x1ce00; run_1ce00(); return; case 0x25430: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25438: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x25064; run_25000(); return; case 0x25444: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x24f78; run_24e00(); return; case 0x25450: if(r2 != r0) { /* Next insn is delay slot */ pc=0x25374; run_25200(); return; } r2 = 7 << 16; r17 = r17 << 2; r2 = r2 + -2948; r2 = r17 + r2; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x2547c; pc=0x21000; run_21000(); return; case 0x2547c: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25484: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x25498; pc=0x42000; run_42000(); return; case 0x25498: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x254a4; pc=0x1b000; run_1b000(); return; case 0x254a4: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x25064; run_25000(); return; case 0x254b0: r5 = 7 << 16; r4 = r29 + 16; r5 = r5 + -5800; /* Next insn is delay slot */ r31=0x254c4; pc=0x42000; run_42000(); return; case 0x254c4: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x254d0; pc=0x1b000; run_1b000(); return; case 0x254d0: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x24f78; run_24e00(); return; case 0x254dc: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2964; r2 = r17 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r4 = r16 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x25500; pc=0x21000; run_21000(); return; case 0x25500: addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 255; if(r3 != r2) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r2 = 7 << 16; r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r4 = 7 << 16; r4 = r4 + -5840; /* Next insn is delay slot */ r31=0x25554; pc=0x1ac00; run_1ac00(); return; case 0x25554: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x2555c: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2980; /* Next insn is delay slot */ pc=0x25108; run_25000(); return; case 0x25570: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2840; /* Next insn is delay slot */ pc=0x2517c; run_25000(); return; case 0x25584: r2 = 7 << 16; r17 = r17 << 1; r2 = r2 + -2688; /* Next insn is delay slot */ pc=0x2517c; run_25000(); return; case 0x25598: r2 = 7 << 16; r2 = r2 + -2880; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = 7 << 16; r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 & 2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25698; run_25600(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x25698; run_25600(); return; } if(r20 != r0) { /* Next insn is delay slot */ pc=0x25600; run_25600(); return; } r16 = r16 & 256; r3 = r17 + 30664; if(r16 == r0) { /* Next insn is delay slot */ pc=0x256b0; run_25600(); return; } r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; case 0x255f4: r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 2; r20 = r3 - r20; case 0x25600: pc=0x25600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25600() throws ExecutionException { /* 0x25600 - 0x25800 */ int addr, tmp; for(;;) { switch(pc) { case 0x25600: r16 = r2 << 8; r16 = r16 | r2; case 0x25608: r4 = r20 + r0; r5 = r19 + r0; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x2561c; pc=0x21000; run_21000(); return; case 0x2561c: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } addr=r29+27; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r2 = r0 + 139; if(r16 == r2) { /* Next insn is delay slot */ pc=0x256d8; continue; } r2 = r0 + 171; if(r16 != r2) { /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; } r4 = 7 << 16; r4 = r4 + -5888; /* Next insn is delay slot */ r31=0x25684; pc=0x1ac00; run_1ac00(); return; case 0x25684: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x2568c: r7 = r16 + -127; /* Next insn is delay slot */ pc=0x25040; run_25000(); return; case 0x25698: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x25608; continue; case 0x256a4: r6 = r2 + r0; /* Next insn is delay slot */ pc=0x25280; run_25200(); return; case 0x256b0: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x255f4; run_25400(); return; case 0x256c4: r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ pc=0x2526c; run_25200(); return; case 0x256d8: r4 = 7 << 16; r4 = r4 + -5936; /* Next insn is delay slot */ r31=0x256e8; pc=0x1ac00; run_1ac00(); return; case 0x256e8: /* Next insn is delay slot */ pc=0x24eb8; run_24e00(); return; case 0x25800: pc=0x25800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25800() throws ExecutionException { /* 0x25800 - 0x25a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x25800: r29 = r29 + -40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; r18 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = r18 + 16880; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r2 = r2 < r17 ? 1 : 0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r19 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x25914; continue; } r2 = r17 + r0; case 0x2583c: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = r2 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25854; continue; } writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; case 0x25854: r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2586c; continue; } writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; case 0x2586c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x25904; continue; } r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; if(r5 != r0) { /* Next insn is delay slot */ pc=0x258f8; continue; } writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; case 0x25898: r4 = r19 << 24; r6 = r5 + 1; r4 = r4 >> 24; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; r3 = r3 + r5; addr=r3+1044; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x258b0: r3 = readPages[(r18+16880)>>>12][((r18+16880)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = r3 + 1; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r3; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x258f8: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x25898; continue; } case 0x25904: r4 = r19 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ pc=0x258b0; continue; case 0x25914: r2 = 1 << 16; r2 = r17 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x259b4; continue; } case 0x25924: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x25940; continue; } r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2583c; continue; case 0x25940: r4 = 7 << 16; r4 = r4 + -1960; /* Next insn is delay slot */ r31=0x25950; pc=0x1ac00; run_1ac00(); return; case 0x25950: r4 = r17 + 1; r3 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r17 = r17 + 2; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r17; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r5 = r4 < r2 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x25990; continue; } case 0x25974: r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r5 = r4 < r2 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x25974; continue; } case 0x25990: r4 = 7 << 16; r4 = r4 + 16912; if(r3 == r4) { /* Next insn is delay slot */ pc=0x259cc; continue; } r2 = r2 + -1; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2583c; continue; case 0x259b4: r4 = 7 << 16; r4 = r4 + -1984; /* Next insn is delay slot */ r31=0x259c4; pc=0x1b200; run_1b200(); return; case 0x259c4: /* Next insn is delay slot */ pc=0x25924; continue; case 0x259cc: r2 = r0 | 65535; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2583c; continue; case 0x25a00: pc=0x25a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25a00() throws ExecutionException { /* 0x25a00 - 0x25c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x25a00: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r19 = r4 + r0; r4 = 7 << 16; r4 = r4 + -6964; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r18 = 7 << 16; /* Next insn is delay slot */ r31=0x25a30; pc=0x1b000; run_1b000(); return; case 0x25a30: r2 = 2 << 16; r2 = r2 + 22528; r16 = r18 + 16880; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x25b34; continue; } r2 = r17 + r0; case 0x25a5c: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = r2 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25a74; continue; } writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; case 0x25a74: r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x25a8c; continue; } writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; case 0x25a8c: r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x25b24; continue; } r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; if(r5 != r0) { /* Next insn is delay slot */ pc=0x25b18; continue; } writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; case 0x25ab8: r4 = r19 << 24; r6 = r5 + 1; r4 = r4 >> 24; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; r3 = r3 + r5; addr=r3+1044; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x25ad0: r3 = readPages[(r18+16880)>>>12][((r18+16880)>>>2)&0x3ff]; r5 = r2 + 1; r2 = r3 + r2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = r3 + 1; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r3; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x25b18: r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x25ab8; continue; } case 0x25b24: r4 = r19 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ pc=0x25ad0; continue; case 0x25b34: r2 = 1 << 16; r2 = r17 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x25bd4; continue; } case 0x25b44: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x25b60; continue; } r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x25a5c; continue; case 0x25b60: r4 = 7 << 16; r4 = r4 + -1960; /* Next insn is delay slot */ r31=0x25b70; pc=0x1ac00; run_1ac00(); return; case 0x25b70: r5 = r17 + 1; r3 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r17 = r17 + 2; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r17; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r4 = r5 < r2 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x25bb0; continue; } case 0x25b94: r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r4 = r5 < r2 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x25b94; continue; } case 0x25bb0: r4 = 7 << 16; r4 = r4 + 16912; if(r3 == r4) { /* Next insn is delay slot */ pc=0x25bec; continue; } r2 = r2 + -1; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x25a5c; continue; case 0x25bd4: r4 = 7 << 16; r4 = r4 + -1984; /* Next insn is delay slot */ r31=0x25be4; pc=0x1b200; run_1b200(); return; case 0x25be4: /* Next insn is delay slot */ pc=0x25b44; continue; case 0x25bec: r2 = r0 | 65535; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x25a5c; continue; case 0x25c00: pc=0x25c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25c00() throws ExecutionException { /* 0x25c00 - 0x25e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x25c00: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r18 = r4 + r0; if(r4 <= 0) { /* Next insn is delay slot */ pc=0x25c9c; continue; } r2 = 2 << 16; r3 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r2 = r2 + 23040; if(r3 == r2) { /* Next insn is delay slot */ pc=0x25d80; continue; } case 0x25c34: r16 = 7 << 16; r16 = r16 + 16880; r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r4 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r17 = r3 + r18; r2 = r17 + -1; r4 = r4 < r2 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x25cc4; continue; } case 0x25c58: r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r4 = r3 < r4 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x25c70; continue; } writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; case 0x25c70: r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x25cb8; continue; } case 0x25c84: r2 = 7 << 16; r2 = r2 + 30664; r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r17; r18 = r3 + r18; writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r18; case 0x25c9c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x25cb8: writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x25c84; continue; case 0x25cc4: r3 = 1 << 16; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x25d68; continue; } case 0x25cd4: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x25cfc; continue; } case 0x25ce4: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r17 = r18 + r3; r2 = r17 + -1; /* Next insn is delay slot */ pc=0x25c58; continue; case 0x25cfc: r4 = 7 << 16; r4 = r4 + -1960; /* Next insn is delay slot */ r31=0x25d0c; pc=0x1ac00; run_1ac00(); return; case 0x25d0c: r3 = r17 + 1; r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r3; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r17 < r3 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x25d48; continue; } case 0x25d2c: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r17 < r3 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x25d2c; continue; } case 0x25d48: r4 = 7 << 16; r4 = r4 + 16912; if(r2 == r4) { /* Next insn is delay slot */ pc=0x25d98; continue; } r3 = r3 + -1; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x25ce4; continue; case 0x25d68: r4 = 7 << 16; r4 = r4 + -1984; /* Next insn is delay slot */ r31=0x25d78; pc=0x1b200; run_1b200(); return; case 0x25d78: /* Next insn is delay slot */ pc=0x25cd4; continue; case 0x25d80: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x25d8c; pc=0x25a00; run_25a00(); return; case 0x25d8c: r18 = r18 + -1; /* Next insn is delay slot */ pc=0x25c34; continue; case 0x25d98: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r0 | 65535; r17 = r18 + r3; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; r2 = r17 + -1; /* Next insn is delay slot */ pc=0x25c58; continue; case 0x25e00: pc=0x25e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_25e00() throws ExecutionException { /* 0x25e00 - 0x26000 */ int addr, tmp; for(;;) { switch(pc) { case 0x25e00: r2 = r4 + 128; r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x25e20; continue; } r4 = 7 << 16; r4 = r4 + -6936; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x25e20: r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r25; return; case 0x26000: pc=0x26000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_26000() throws ExecutionException { /* 0x26000 - 0x26200 */ int addr, tmp; for(;;) { switch(pc) { case 0x26000: r3 = r0 | 32768; r2 = 1 << 16; r3 = r4 + r3; r2 = r2 | 32768; r29 = r29 + -24; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x26048; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6936; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x26048: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x26058; return; case 0x26058: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r16 >> 8; r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r25; return; 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: r2 = 128 << 16; r2 = r4 + r2; r3 = 384 << 16; r29 = r29 + -24; r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x26244; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -6936; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x1b000; run_1b000(); return; case 0x26244: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x26254; return; case 0x26254: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 >> 8; /* Next insn is delay slot */ pc=r2; r31=0x26264; return; case 0x26264: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r16 >> 16; r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r25; 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 + -24; r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r4 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2641c; return; case 0x2641c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 >> 8; /* Next insn is delay slot */ pc=r2; r31=0x2642c; return; case 0x2642c: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r16 >> 16; /* Next insn is delay slot */ pc=r2; r31=0x2643c; return; case 0x2643c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r16 >> 24; r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r25; 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: r2 = 7 << 16; r29 = r29 + -32; r3 = r2 + 16880; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; r5 = r4 << 24; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r5 = r5 >> 24; if(r16 != r0) { /* Next insn is delay slot */ pc=0x26674; continue; } r4 = readPages[(r2+16880)>>>12][((r2+16880)>>>2)&0x3ff]; r17 = r0 + 1; r6 = 1 << 16; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r17; /* Next insn is delay slot */ r31=0x26644; pc=0x48fec; run_48e00(); return; case 0x26644: r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x26658; continue; } writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r17; case 0x26658: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x26674: r4 = 7 << 16; r4 = r4 + -1912; /* Next insn is delay slot */ r31=0x26684; pc=0x1ac00; run_1ac00(); return; case 0x26684: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = r0 + 1; r2 = r16 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; 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: r4 = readPages[(r28+-30680)>>>12][((r28+-30680)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2685c; continue; } case 0x26814: r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x26824; pc=0x31000; run_31000(); return; case 0x26824: if(r2 == r0) { /* Next insn is delay slot */ pc=0x26848; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff] = r2; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x26848: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2685c: r5 = 7 << 16; r4 = r28 + -30680; r5 = r5 + 8880; /* Next insn is delay slot */ r31=0x26870; pc=0x30e00; run_30e00(); return; case 0x26870: r4 = readPages[(r28+-30680)>>>12][((r28+-30680)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x26814; continue; case 0x26a00: pc=0x26a00; 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: r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x26a24; continue; } r2 = r0 + 2; writePages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff] = r2; r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x26a24: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; 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: r2 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r2 == r0) { /* Next insn is delay slot */ pc=0x26c38; continue; } r4 = 7 << 16; r4 = r4 + -1884; /* Next insn is delay slot */ r31=0x26c24; pc=0x1ac00; run_1ac00(); return; case 0x26c24: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x26c38: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x26c44; pc=0x17a00; run_17a00(); return; case 0x26c44: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; r2 = r0 + r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x26e00: pc=0x26e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_26e00() throws ExecutionException { /* 0x26e00 - 0x27000 */ int addr, tmp; for(;;) { switch(pc) { case 0x26e00: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = 1 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = 7 << 16; /* Next insn is delay slot */ r31=0x26e24; pc=0x1b400; run_1b400(); return; case 0x26e24: r3 = r0 + 256; writePages[(r16+16880)>>>12][((r16+16880)>>>2)&0x3ff] = r2; if(r17 == r3) { /* Next insn is delay slot */ pc=0x26e80; continue; } r5 = r17 << 24; r5 = r5 >> 24; r3 = r0 + 1; case 0x26e40: r16 = r16 + 16880; r4 = r2 + r0; r6 = 1 << 16; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x26e58; pc=0x48fec; run_48e00(); return; case 0x26e58: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = 7 << 16; r2 = r2 + 16912; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r2; writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r2; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x26e80: r5 = r0 + r0; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x26e40; 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: r29 = r29 + -56; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; r19 = 7 << 16; r2 = r19 + 16880; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; r18 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r17 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; r2 = r18 < r17 ? 1 : 0; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; r16 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2711c; continue; } r18 = r18 - r17; r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r18 = r18 + 1; r21 = r17 + r0; r20 = r18 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27138; continue; } case 0x2705c: r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; r3 = r0 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2716c; continue; } case 0x2706c: r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x270e0; continue; } r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x273dc; run_27200(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x270a4: r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x270ac: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x27394; run_27200(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r17 = r17 >> 8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x270d8: r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x270e0: r4 = readPages[(r19+16880)>>>12][((r19+16880)>>>2)&0x3ff]; r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r4 = r4 + r21; r5 = r20 + r0; r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r7 = r16 + r0; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r6 = r0 + 1; r29 = r29 + 56; /* Next insn is delay slot */ pc=0x3dc00; run_3dc00(); return; case 0x2711c: r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r20 = r0 + r0; r21 = r0 + r0; r18 = r0 + r0; r17 = r0 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2705c; continue; } case 0x27138: r2 = r17 + r18; r4 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r4 + -1856; r5 = r18 + r0; r6 = r18 + r0; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2715c; pc=0x3fc00; run_3fc00(); return; case 0x2715c: r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; r3 = r0 + 1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2706c; continue; } case 0x2716c: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x27340; run_27200(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x27198: r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x271a0: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x272ec; run_27200(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r17 = r17 >> 8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x271cc: r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x271d4: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x27298; run_27200(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x27200: pc=0x27200; 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: r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x27208: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x27244; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r18 = r18 >> 8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x270e0; run_27000(); return; case 0x27244: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x274a0; run_27400(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r18 = r18 >> 8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x270d8; run_27000(); return; } case 0x2727c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27290; pc=0x48200; run_48200(); return; case 0x27290: /* Next insn is delay slot */ pc=0x270e0; run_27000(); return; case 0x27298: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2744c; run_27400(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x27200; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x272e4; pc=0x48200; run_48200(); return; case 0x272e4: /* Next insn is delay slot */ pc=0x27208; continue; case 0x272ec: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27430; run_27400(); return; } 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=0x271cc; run_27000(); return; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27338; pc=0x48200; run_48200(); return; case 0x27338: /* Next insn is delay slot */ pc=0x271d4; run_27000(); return; case 0x27340: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27468; run_27400(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x27198; run_27000(); return; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x2738c; pc=0x48200; run_48200(); return; case 0x2738c: /* Next insn is delay slot */ pc=0x271a0; run_27000(); return; case 0x27394: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x274bc; run_27400(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r17 = r17 >> 8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 == r3) { /* Next insn is delay slot */ pc=0x2727c; continue; } r2 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x270e0; run_27000(); return; case 0x273dc: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27484; run_27400(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x27400: pc=0x27400; 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: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x270a4; run_27000(); return; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27428; pc=0x48200; run_48200(); return; case 0x27428: /* Next insn is delay slot */ pc=0x270ac; run_27000(); return; case 0x27430: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 >> 8; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27444; pc=0x48200; run_48200(); return; case 0x27444: /* Next insn is delay slot */ pc=0x271d4; run_27000(); return; case 0x2744c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r18 & 255; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27460; pc=0x48200; run_48200(); return; case 0x27460: /* Next insn is delay slot */ pc=0x27208; run_27200(); return; case 0x27468: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 & 255; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x2747c; pc=0x48200; run_48200(); return; case 0x2747c: /* Next insn is delay slot */ pc=0x271a0; run_27000(); return; case 0x27484: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 & 255; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x27498; pc=0x48200; run_48200(); return; case 0x27498: /* Next insn is delay slot */ pc=0x270ac; run_27000(); return; case 0x274a0: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r18 >> 8; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x274b4; pc=0x48200; run_48200(); return; case 0x274b4: /* Next insn is delay slot */ pc=0x270e0; run_27000(); return; case 0x274bc: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 >> 8; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x274d0; pc=0x48200; run_48200(); return; case 0x274d0: /* Next insn is delay slot */ pc=0x270e0; run_27000(); return; case 0x27600: pc=0x27600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_27600() throws ExecutionException { /* 0x27600 - 0x27800 */ int addr, tmp; for(;;) { switch(pc) { case 0x27600: r4 = 2 << 16; r4 = r4 + 23040; r2 = 7 << 16; r2 = r2 + 16880; r3 = r0 | 65535; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r4; r4 = r0 + -1; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r4; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r0; r2 = 7 << 16; r2 = r2 + 30664; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r0; writePages[(r2+36)>>>12][((r2+36)>>>2)&0x3ff] = r0; writePages[(r2+40)>>>12][((r2+40)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r29 = r29 + -48; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27864; continue; } r17 = 7 << 16; r17 = r17 + 16880; r18 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; r2 = r0 + -1; if(r18 == r2) { /* Next insn is delay slot */ pc=0x27864; continue; } r2 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; r2 = r2 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27864; continue; } r19 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r19 = r19 - r18; if(r19 != r0) { /* Next insn is delay slot */ pc=0x27884; continue; } case 0x27864: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x27884: r4 = r0 + 16; r16 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x27894; pc=0x1b400; run_1b400(); return; case 0x27894: writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r18; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r19; writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r18; r3 = r19 + 1; r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; case 0x278ac: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r4 = r3 < r6 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x278e0; continue; } if(r6 != r3) { /* Next insn is delay slot */ pc=0x278ec; continue; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r3 = r4 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x278ec; continue; } case 0x278e0: r16 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x278ac; continue; case 0x278ec: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27864; continue; } r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r7 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; r4 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r4 + -1800; r5 = r19 + r0; r6 = r19 + r0; /* Next insn is delay slot */ r31=0x27940; pc=0x3fc00; run_3fc00(); return; case 0x27940: /* Next insn is delay slot */ pc=0x27864; continue; case 0x27a00: pc=0x27a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_27a00() throws ExecutionException { /* 0x27a00 - 0x27c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x27a00: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r29 = r29 + -56; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; r19 = r4 + r0; r18 = r5 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27b18; continue; } r17 = 7 << 16; r17 = r17 + 16880; r20 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; r2 = r0 + -1; if(r20 == r2) { /* Next insn is delay slot */ pc=0x27b4c; continue; } r2 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r2 = r2 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27a6c; continue; } r21 = r4 - r20; if(r21 != r0) { /* Next insn is delay slot */ pc=0x27b58; continue; } case 0x27a6c: r4 = r19 + r4; r2 = 2 << 16; r4 = r4 & 65535; writePages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff] = r18; r2 = r2 + 22528; r18 = r18 & 1; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r4; writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r4; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; if(r18 == r0) { /* Next insn is delay slot */ pc=0x27c50; run_27c00(); return; } case 0x27a98: r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; r7 = r4 + 1; r5 = r4 + r0; case 0x27aa4: writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r7; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r5 < r3 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x27ad8; continue; } case 0x27abc: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r5 < r3 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x27abc; continue; } case 0x27ad8: r4 = 7 << 16; r4 = r4 + 16912; if(r2 == r4) { /* Next insn is delay slot */ pc=0x27d00; run_27c00(); return; } r3 = r3 + -1; writePages[(r17+24)>>>12][((r17+24)>>>2)&0x3ff] = r3; case 0x27af0: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x27b18: r2 = 7 << 16; r2 = r2 + 16880; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r5; r19 = r4 + r3; r19 = r19 & 65535; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r19; r2 = 2 << 16; r2 = r2 + 22528; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x27af0; continue; case 0x27b4c: r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x27a6c; continue; case 0x27b58: r4 = r0 + 16; r16 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x27b68; pc=0x1b400; run_1b400(); return; case 0x27b68: writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r20; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r21; writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r20; r3 = r21 + 1; r7 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; case 0x27b80: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r6 = r3 < r7 ? 1 : 0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x27bb4; continue; } if(r3 != r7) { /* Next insn is delay slot */ pc=0x27bc0; continue; } r6 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r3 = r6 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x27bc0; continue; } case 0x27bb4: r16 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x27b80; continue; case 0x27bc0: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27c14; run_27c00(); return; } r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r4 = 7 << 16; r7 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; case 0x27c00: pc=0x27c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_27c00() throws ExecutionException { /* 0x27c00 - 0x27e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x27c00: r4 = r4 + -1800; r5 = r21 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x27c14; pc=0x3fc00; run_3fc00(); return; case 0x27c14: r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r2 = 2 << 16; r4 = r19 + r4; r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r4 = r4 & 65535; r2 = r2 + 22528; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r4; writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r4; writePages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff] = r18; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x27af0; run_27a00(); return; } r18 = r18 & 1; if(r18 != r0) { /* Next insn is delay slot */ pc=0x27a98; run_27a00(); return; } case 0x27c50: r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; r7 = r4 + 1; r3 = r0 + 1; writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r7; writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = r4 < r3 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x27cd0; continue; } r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r3 = r3 + r5; r3 = r4 < r3 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x27cdc; continue; } r3 = r2 + r0; /* Next insn is delay slot */ pc=0x27cb4; continue; case 0x27c9c: r6 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + r6; r5 = r4 < r5 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x27cdc; continue; } case 0x27cb4: r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r6 = r4 < r5 ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x27c9c; continue; } case 0x27cd0: r5 = r4 + r0; /* Next insn is delay slot */ pc=0x27aa4; run_27a00(); return; case 0x27cdc: r4 = 7 << 16; r4 = r4 + -1736; /* Next insn is delay slot */ r31=0x27cec; pc=0x1ac00; run_1ac00(); return; case 0x27cec: r5 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; r7 = r5 + 1; /* Next insn is delay slot */ pc=0x27aa4; run_27a00(); return; case 0x27d00: r2 = r0 | 65535; writePages[(r17+24)>>>12][((r17+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x27af0; run_27a00(); return; case 0x27e00: pc=0x27e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_27e00() throws ExecutionException { /* 0x27e00 - 0x28000 */ int addr, tmp; for(;;) { switch(pc) { case 0x27e00: r2 = 7 << 16; r29 = r29 + -40; r2 = r2 + 30664; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r19 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r16 = 7 << 16; r16 = r16 + 16880; r3 = r3 | 16; r18 = r0 + 1; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; r17 = r5 + r0; r19 = r4 - r19; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x27e54; pc=0x27800; run_27800(); return; case 0x27e54: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r19 = r19 & 65535; r3 = r19 + r2; r2 = 2 << 16; r2 = r2 + 22528; writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r3 = r3 & 65535; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r3; writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r17; if(r2 != r0) { /* Next insn is delay slot */ pc=0x27eec; continue; } r17 = r17 & 1; if(r17 == r0) { /* Next insn is delay slot */ pc=0x27f0c; continue; } r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r7 = r3 + 1; r5 = r3 + r0; case 0x27ea0: writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r7; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r5 < r3 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x27ed4; continue; } case 0x27eb8: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = r5 < r3 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x27eb8; continue; } case 0x27ed4: r4 = 7 << 16; r4 = r4 + 16912; if(r2 == r4) { /* Next insn is delay slot */ pc=0x27fb4; continue; } r3 = r3 + -1; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r3; case 0x27eec: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x27f0c: r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r7 = r3 + 1; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r7; r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; r5 = r3 < r4 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x27f84; continue; } r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r4 + r5; r4 = r3 < r4 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x27f90; continue; } r4 = r2 + r0; /* Next insn is delay slot */ pc=0x27f68; continue; case 0x27f50: r6 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r5 = r5 + r6; r5 = r3 < r5 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x27f90; continue; } case 0x27f68: r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r6 = r3 < r5 ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x27f50; continue; } case 0x27f84: r5 = r3 + r0; /* Next insn is delay slot */ pc=0x27ea0; continue; case 0x27f90: r4 = 7 << 16; r4 = r4 + -1736; /* Next insn is delay slot */ r31=0x27fa0; pc=0x1ac00; run_1ac00(); return; case 0x27fa0: r5 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r7 = r5 + 1; /* Next insn is delay slot */ pc=0x27ea0; continue; case 0x27fb4: r2 = r0 | 65535; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x27eec; continue; case 0x28000: pc=0x28000; 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: r5 = 7 << 16; r29 = r29 + -24; r5 = r5 + 30672; r6 = r0 + 24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2801c; pc=0x48fdc; run_48e00(); return; case 0x2801c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; 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: r2 = 7 << 16; r2 = readPages[(r2+30696)>>>12][((r2+30696)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x28400: pc=0x28400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_28400() throws ExecutionException { /* 0x28400 - 0x28600 */ int addr, tmp; for(;;) { switch(pc) { case 0x28400: r2 = 7 << 16; r2 = r2 + 30664; r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r0; r3 = r4 + r3; r3 = r3 & 65535; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=r31; 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 = 7 << 16; r29 = r29 + -24; r4 = r4 + -1668; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x28618; pc=0x3e000; run_3e000(); return; case 0x28618: if(r2 == r0) { /* Next insn is delay slot */ pc=0x28664; continue; } r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r2 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x28634; pc=0x17e00; run_17e00(); return; case 0x28634: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + 47; /* Next insn is delay slot */ r31=0x28644; pc=0x17c00; run_17c00(); return; case 0x28644: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x28654; pc=0x17c00; run_17c00(); return; case 0x28654: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x28660; pc=0x17a00; run_17a00(); return; case 0x28660: writePages[(r28+-30676)>>>12][((r28+-30676)>>>2)&0x3ff] = r2; case 0x28664: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x28800: pc=0x28800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_28800() throws ExecutionException { /* 0x28800 - 0x28a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x28800: r4 = 7 << 16; r29 = r29 + -24; r4 = r4 + -732; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x28818; pc=0x1b000; run_1b000(); return; case 0x28818: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x28a00: pc=0x28a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_28a00() throws ExecutionException { /* 0x28a00 - 0x28c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x28a00: r4 = 7 << 16; r29 = r29 + -24; r4 = r4 + -1660; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x28a18; pc=0x1b000; run_1b000(); return; case 0x28a18: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x28c00: pc=0x28c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_28c00() throws ExecutionException { /* 0x28c00 - 0x28e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x28c00: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x28c10; pc=0x1ce00; run_1ce00(); return; case 0x28c10: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r0 + 8; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; r2 = r0 + 3; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x28e00: pc=0x28e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_28e00() throws ExecutionException { /* 0x28e00 - 0x29000 */ int addr, tmp; for(;;) { switch(pc) { case 0x28e00: r3 = r4 + r0; r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r29 = r29 + -112; writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r21; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r20; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r19; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r18; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r31; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; r21 = r5 + r0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; r5 = r3 + r0; r20 = 7 << 16; r19 = 7 << 16; r17 = 7 << 16; /* Next insn is delay slot */ r31=0x28e48; pc=0x17e00; run_17e00(); return; case 0x28e48: r20 = r20 + -1576; r19 = r19 + -1588; r18 = 7 << 16; r17 = r17 + -1616; /* Next insn is delay slot */ pc=0x28ea0; continue; case 0x28e60: if(r2 == r0) { /* Next insn is delay slot */ pc=0x29048; run_29000(); return; } r7 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r6 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r4 = r29 + 16; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x28e80; pc=0x42000; run_42000(); return; case 0x28e80: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x28e90; pc=0x17e00; run_17e00(); return; case 0x28e90: /* Next insn is delay slot */ r31=0x28e98; pc=0x20000; run_20000(); return; case 0x28e98: if(r2 == r0) { /* Next insn is delay slot */ pc=0x28f14; continue; } case 0x28ea0: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r16 = tmp; r2 = r0 + 34; if(r16 == r2) { /* Next insn is delay slot */ pc=0x28f44; continue; } r4 = r29 + 56; /* Next insn is delay slot */ r31=0x28ebc; pc=0x16400; run_16400(); return; case 0x28ebc: r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r2 & 256; r2 = r2 & 16; if(r3 != r0) { /* Next insn is delay slot */ pc=0x28e60; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x29030; run_29000(); return; } r6 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r4 = r29 + 16; r5 = r19 + r0; r7 = r6 + r0; /* Next insn is delay slot */ r31=0x28ef4; pc=0x42000; run_42000(); return; case 0x28ef4: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x28f04; pc=0x17e00; run_17e00(); return; case 0x28f04: /* Next insn is delay slot */ r31=0x28f0c; pc=0x20000; run_20000(); return; case 0x28f0c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x28ea0; continue; } case 0x28f14: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x28f24; pc=0x17c00; run_17c00(); return; case 0x28f24: r2 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r21; r31=0x28f38; return; case 0x28f38: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x29008; run_29000(); return; case 0x28f44: /* Next insn is delay slot */ r31=0x28f4c; pc=0x1c600; run_1c600(); return; case 0x28f4c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x29004; run_29000(); return; } if(r3 == r16) { /* Next insn is delay slot */ pc=0x29060; run_29000(); return; } r16 = r0 + 34; /* Next insn is delay slot */ pc=0x28fa8; continue; case 0x28f70: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r2 + 1; r2 = r5 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x28f8c; pc=0x1c600; run_1c600(); return; case 0x28f8c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x29004; run_29000(); return; } case 0x28f9c: if(r2 == r16) { /* Next insn is delay slot */ pc=0x29060; run_29000(); return; } r3 = r2 + r0; case 0x28fa8: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r2 != r5) { /* Next insn is delay slot */ pc=0x28f70; continue; } /* Next insn is delay slot */ r31=0x28fcc; pc=0x17800; run_17800(); return; case 0x28fcc: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r2 + 1; r2 = r5 + r2; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x28ff4; pc=0x1c600; run_1c600(); return; case 0x28ff4: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x28f9c; continue; } 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: case 0x29004: r2 = r0 + 3; case 0x29008: r31 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; r21 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r29 = r29 + 112; /* Next insn is delay slot */ pc=r31; return; case 0x29030: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r5 = r20 + r0; /* Next insn is delay slot */ r31=0x29040; pc=0x17e00; run_17e00(); return; case 0x29040: /* Next insn is delay slot */ pc=0x28e90; run_28e00(); return; case 0x29048: r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; r5 = r18 + -1608; /* Next insn is delay slot */ r31=0x29058; pc=0x17e00; run_17e00(); return; case 0x29058: /* Next insn is delay slot */ pc=0x28e90; run_28e00(); return; case 0x29060: /* Next insn is delay slot */ r31=0x29068; pc=0x1c000; run_1c000(); return; case 0x29068: /* Next insn is delay slot */ pc=0x28e90; run_28e00(); return; case 0x29200: pc=0x29200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_29200() throws ExecutionException { /* 0x29200 - 0x29400 */ int addr, tmp; for(;;) { switch(pc) { case 0x29200: r4 = 7 << 16; r5 = 2 << 16; r4 = r4 + -1560; r5 = r5 + -19968; /* Next insn is delay slot */ pc=0x28e00; run_28e00(); return; case 0x29400: pc=0x29400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_29400() throws ExecutionException { /* 0x29400 - 0x29600 */ int addr, tmp; for(;;) { switch(pc) { case 0x29400: r4 = 7 << 16; r5 = 2 << 16; r4 = r4 + -1548; r5 = r5 + -20480; /* Next insn is delay slot */ pc=0x28e00; run_28e00(); return; case 0x29600: pc=0x29600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_29600() throws ExecutionException { /* 0x29600 - 0x29800 */ int addr, tmp; for(;;) { switch(pc) { case 0x29600: r4 = 7 << 16; r5 = 2 << 16; r4 = r4 + -1536; r5 = r5 + -21504; /* Next insn is delay slot */ pc=0x28e00; run_28e00(); return; case 0x29800: pc=0x29800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_29800() throws ExecutionException { /* 0x29800 - 0x29a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x29800: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x29870; continue; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; r16 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x29844; continue; } case 0x2982c: /* Next insn is delay slot */ r31=0x29834; pc=0x1c000; run_1c000(); return; case 0x29834: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2982c; continue; } case 0x29844: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x29850; pc=0x1d400; run_1d400(); return; case 0x29850: /* Next insn is delay slot */ r31=0x29858; pc=0x1c000; run_1c000(); return; case 0x29858: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x29870: /* Next insn is delay slot */ r31=0x29878; pc=0x20600; run_20600(); return; case 0x29878: /* Next insn is delay slot */ r31=0x29880; pc=0x1c000; run_1c000(); return; case 0x29880: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; 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: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r29 = r29 + -56; r2 = r0 + 32; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; if(r3 == r2) { /* Next insn is delay slot */ pc=0x29ae0; continue; } case 0x29a18: r4 = r29 + 16; r5 = r0 + 123; /* Next insn is delay slot */ r31=0x29a28; pc=0x19600; run_19600(); return; case 0x29a28: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x29a48; continue; } r4 = 7 << 16; r4 = r4 + -6860; /* Next insn is delay slot */ r31=0x29a48; pc=0x1b200; run_1b200(); return; case 0x29a48: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29a64; pc=0x1d400; run_1d400(); return; case 0x29a64: writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29a70; pc=0x1c000; run_1c000(); return; case 0x29a70: r3 = r0 + 32; if(r2 == r3) { /* Next insn is delay slot */ pc=0x29ad0; continue; } case 0x29a7c: r5 = r0 + r0; r4 = r29 + 36; /* Next insn is delay slot */ r31=0x29a8c; pc=0x19600; run_19600(); return; case 0x29a8c: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x29a98; pc=0x19800; run_19800(); return; case 0x29a98: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x29aa4; pc=0x3ea00; run_3ea00(); return; case 0x29aa4: r4 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x29ab0; pc=0x3ea00; run_3ea00(); return; case 0x29ab0: r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x29abc; pc=0x3ea00; run_3ea00(); return; case 0x29abc: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x29ad0: /* Next insn is delay slot */ r31=0x29ad8; pc=0x1c000; run_1c000(); return; case 0x29ad8: /* Next insn is delay slot */ pc=0x29a7c; continue; case 0x29ae0: /* Next insn is delay slot */ r31=0x29ae8; pc=0x1c000; run_1c000(); return; case 0x29ae8: /* Next insn is delay slot */ pc=0x29a18; continue; case 0x29c00: pc=0x29c00; 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: r29 = r29 + -88; r4 = r29 + 72; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x29c14; pc=0x1e400; run_1e400(); return; case 0x29c14: if(r2 != r0) { /* Next insn is delay slot */ pc=0x29c30; continue; } r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x29c30: /* Next insn is delay slot */ r31=0x29c38; pc=0x20200; run_20200(); return; case 0x29c38: r4 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r5 = r2 + r0; /* Next insn is delay slot */ r31=0x29c48; pc=0x2f400; run_2f400(); return; case 0x29c48: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29c54; pc=0x20000; run_20000(); return; case 0x29c54: if(r2 == r0) { /* Next insn is delay slot */ pc=0x29db0; continue; } r4 = r29 + 48; /* Next insn is delay slot */ r31=0x29c68; pc=0x16000; run_16000(); return; case 0x29c68: r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29c7c; pc=0x20000; run_20000(); return; case 0x29c7c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x29d04; continue; } r2 = readPages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x29df8; continue; } case 0x29c94: r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r4 = r29 + 48; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29ca8; pc=0x16000; run_16000(); return; case 0x29ca8: r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x29ce4; continue; } r3 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; if(r4 == r3) { /* Next insn is delay slot */ pc=0x29ce4; continue; } r4 = 7 << 16; r4 = r4 + -1500; /* Next insn is delay slot */ r31=0x29ce0; pc=0x1ae00; run_1ae00(); return; case 0x29ce0: r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; case 0x29ce4: r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x29d34; continue; } r2 = r0 + -1; /* Next insn is delay slot */ pc=0x29d38; continue; case 0x29d04: r2 = r0 + 1; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x29e10; run_29e00(); return; } case 0x29d1c: r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x29dd4; continue; } writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; case 0x29d34: r2 = r0 + 1; case 0x29d38: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x29d5c; continue; } r4 = 7 << 16; r4 = r4 + -6860; /* Next insn is delay slot */ r31=0x29d5c; pc=0x1b200; run_1b200(); return; case 0x29d5c: r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; r4 = r0 + 1; r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29d78; pc=0x1d400; run_1d400(); return; case 0x29d78: r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x29d88; pc=0x19400; run_19400(); return; case 0x29d88: r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x29d94; pc=0x3ea00; run_3ea00(); return; case 0x29d94: /* Next insn is delay slot */ r31=0x29d9c; pc=0x1c000; run_1c000(); return; case 0x29d9c: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x29db0: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x29dc0; pc=0x1b000; run_1b000(); return; case 0x29dc0: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x29dd4: r4 = 7 << 16; r4 = r4 + -1404; /* Next insn is delay slot */ r31=0x29de4; pc=0x1b200; run_1b200(); return; case 0x29de4: r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x29d34; continue; case 0x29df8: r4 = 7 << 16; r4 = r4 + -1528; 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: /* Next insn is delay slot */ r31=0x29e08; pc=0x1ae00; run_1ae00(); return; case 0x29e08: /* Next insn is delay slot */ pc=0x29c94; run_29c00(); return; case 0x29e10: r4 = 7 << 16; r4 = r4 + -1432; /* Next insn is delay slot */ r31=0x29e20; pc=0x1ae00; run_1ae00(); return; case 0x29e20: /* Next insn is delay slot */ pc=0x29d1c; run_29c00(); return; case 0x2a000: pc=0x2a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2a000() throws ExecutionException { /* 0x2a000 - 0x2a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x2a000: r29 = r29 + -32; r4 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2a018; pc=0x1e400; run_1e400(); return; case 0x2a018: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2a038; continue; } r2 = r0 + r0; case 0x2a024: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2a038: r5 = 7 << 16; r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = r29 + 20; r5 = r5 + 16944; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x2a054; pc=0x31200; run_31200(); return; case 0x2a054: r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2a0d4; continue; } r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2a0bc; continue; } case 0x2a074: r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r16 = r16 >>> 4; r16 = r16 & 1; r16 = r16 ^ 1; case 0x2a088: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2a0f8; continue; } case 0x2a098: r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2a0e0; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 << 1; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2a0bc: r3 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x2a074; continue; case 0x2a0d4: r16 = r0 + 1; /* Next insn is delay slot */ pc=0x2a088; continue; case 0x2a0e0: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2a0ec; pc=0x19a00; run_19a00(); return; case 0x2a0ec: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2a024; continue; case 0x2a0f8: /* Next insn is delay slot */ r31=0x2a100; pc=0x1c000; run_1c000(); return; case 0x2a100: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; /* Next insn is delay slot */ pc=0x2a098; continue; case 0x2a200: pc=0x2a200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2a200() throws ExecutionException { /* 0x2a200 - 0x2a400 */ int addr, tmp; for(;;) { switch(pc) { case 0x2a200: r29 = r29 + -48; r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2a214; pc=0x16000; run_16000(); return; case 0x2a214: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2a234; continue; } r4 = 7 << 16; r4 = r4 + -6860; /* Next insn is delay slot */ r31=0x2a234; pc=0x1b200; run_1b200(); return; case 0x2a234: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = ((r0 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; /* Next insn is delay slot */ r31=0x2a248; pc=0x19a00; run_19a00(); return; case 0x2a248: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; 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: r29 = r29 + -64; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; r16 = 7 << 16; r16 = r16 + 30664; r4 = r29 + 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; r18 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2a430; pc=0x16000; run_16000(); return; case 0x2a430: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r2 | 16; r19 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r17; /* Next insn is delay slot */ r31=0x2a450; pc=0x1b600; run_1b600(); return; case 0x2a450: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2a494; continue; } r17 = r17 - r19; r19 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r17 = r19 - r17; r17 = r17 & 65535; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r17; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2a494: r4 = 7 << 16; r4 = r4 + -732; /* Next insn is delay slot */ r31=0x2a4a4; pc=0x1b000; run_1b000(); return; case 0x2a4a4: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; 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: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r4 = r29 + 16; r5 = r16 + r0; r6 = r0 + 16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2a624; pc=0x48fdc; run_48e00(); return; case 0x2a624: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = 7 << 16; r2 = r2 + -7236; r2 = r3 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 64; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2a6e4; continue; } r6 = 7 << 16; r4 = r16 + r0; r7 = r0 + r0; r6 = r6 + 6068; case 0x2a658: r5 = 7 << 16; r5 = r5 + -1380; /* Next insn is delay slot */ r31=0x2a668; pc=0x2e400; run_2e400(); return; case 0x2a668: /* Next insn is delay slot */ r31=0x2a670; pc=0x1b600; run_1b600(); return; case 0x2a670: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2a6ac; continue; } r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2a684; pc=0x2e600; run_2e600(); return; case 0x2a684: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = 7 << 16; r3 = r3 + 12764; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2a6ac: r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2a6b8; pc=0x2e600; run_2e600(); return; case 0x2a6b8: r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = r29 + 16; r6 = r0 + 16; /* Next insn is delay slot */ r31=0x2a6cc; pc=0x48fdc; run_48e00(); return; case 0x2a6cc: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2a6e4: /* Next insn is delay slot */ r31=0x2a6ec; pc=0x1ec00; run_1ec00(); return; case 0x2a6ec: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2a6f8; pc=0x17a00; run_17a00(); return; case 0x2a6f8: r6 = r2 + r0; r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r7 = r0 + 1; /* Next insn is delay slot */ pc=0x2a658; continue; 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 + -64; r4 = r29 + 40; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2a81c; pc=0x1e400; run_1e400(); return; case 0x2a81c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2a840; continue; } r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2a840: /* Next insn is delay slot */ r31=0x2a848; pc=0x20200; run_20200(); return; case 0x2a848: r4 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r5 = r2 + r0; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2a85c; pc=0x2f400; run_2f400(); return; case 0x2a85c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r17 = r2 + r0; r2 = r0 + 61; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2a89c; continue; } r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x2a880; pc=0x1b000; run_1b000(); return; case 0x2a880: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2a89c: /* Next insn is delay slot */ r31=0x2a8a4; pc=0x1c000; run_1c000(); return; case 0x2a8a4: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2a8b0; pc=0x16400; run_16400(); return; case 0x2a8b0: r3 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r2 = r0 + -16; r3 = r3 & r2; if(r16 != r0) { /* Next insn is delay slot */ pc=0x2a8f8; continue; } writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; case 0x2a8c8: r4 = r17 + r0; r5 = r29 + 16; r6 = r0 + 1; /* Next insn is delay slot */ r31=0x2a8dc; pc=0x2f600; run_2f600(); return; case 0x2a8dc: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2a8f8: r3 = r16 | r3; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r3 & r2; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x2a8c8; continue; case 0x2aa00: pc=0x2aa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2aa00() throws ExecutionException { /* 0x2aa00 - 0x2ac00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2aa00: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -24; r3 = r0 + 32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2aa60; continue; } case 0x2aa18: r3 = r0 + 123; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2aa44; continue; } r4 = r0 + 1; /* Next insn is delay slot */ r31=0x2aa30; pc=0x31e00; run_31e00(); return; case 0x2aa30: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 2; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2aa44: /* Next insn is delay slot */ r31=0x2aa4c; pc=0x31c00; run_31c00(); return; case 0x2aa4c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2aa60: /* Next insn is delay slot */ r31=0x2aa68; pc=0x1c000; run_1c000(); return; case 0x2aa68: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; /* Next insn is delay slot */ pc=0x2aa18; continue; case 0x2ac00: pc=0x2ac00; 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: r2 = 7 << 16; r29 = r29 + -32; r4 = r2 + 30704; r5 = r0 + 1; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r2+30704)>>>12][((r2+30704)>>>2)&0x3ff]; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2ac2c; pc=0x17200; run_17200(); return; case 0x2ac2c: /* Next insn is delay slot */ r31=0x2ac34; pc=0x1b600; run_1b600(); return; case 0x2ac34: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ac4c; continue; } r4 = r16 + 30704; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x2ac4c; pc=0x17200; run_17200(); return; case 0x2ac4c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; 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+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r17 = readPages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2ae20; pc=0x1f400; run_1f400(); return; case 0x2ae20: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2ae58; continue; } case 0x2ae28: /* Next insn is delay slot */ r31=0x2ae30; pc=0x1b600; run_1b600(); return; case 0x2ae30: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ae3c; continue; } writePages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff] = r17; case 0x2ae3c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2ae58: /* Next insn is delay slot */ r31=0x2ae60; pc=0x17000; run_17000(); return; case 0x2ae60: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ae74; continue; } writePages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x2ae28; continue; case 0x2ae74: r4 = 7 << 16; r4 = r4 + -1372; /* Next insn is delay slot */ r31=0x2ae84; pc=0x1b000; run_1b000(); return; case 0x2ae84: /* Next insn is delay slot */ pc=0x2ae28; continue; case 0x2b000: pc=0x2b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2b000() throws ExecutionException { /* 0x2b000 - 0x2b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x2b000: r29 = r29 + -48; r4 = r29 + 16; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2b018; pc=0x16000; run_16000(); return; case 0x2b018: /* Next insn is delay slot */ r31=0x2b020; pc=0x20000; run_20000(); return; case 0x2b020: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b080; continue; } r16 = r0 + r0; case 0x2b02c: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r3 = r2 + -1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b068; continue; } case 0x2b044: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2b050; pc=0x25e00; run_25e00(); return; case 0x2b050: r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = r3 + -1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r5; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2b044; continue; } case 0x2b068: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2b080: /* Next insn is delay slot */ r31=0x2b088; pc=0x15e00; run_15e00(); return; case 0x2b088: r16 = r2 + r0; /* Next insn is delay slot */ pc=0x2b02c; continue; case 0x2b200: pc=0x2b200; 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: r29 = r29 + -48; r2 = r0 + -1; r4 = r0 + 1; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x2b228; pc=0x1fc00; run_1fc00(); return; case 0x2b228: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b24c; continue; } r2 = r0 + r0; case 0x2b234: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2b24c: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r5 + 12832; /* Next insn is delay slot */ r31=0x2b264; pc=0x3b800; run_3b800(); return; case 0x2b264: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b498; run_2b400(); return; } /* Next insn is delay slot */ r31=0x2b278; pc=0x20000; run_20000(); return; case 0x2b278: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b438; run_2b400(); return; } case 0x2b280: r4 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; if(r4 < 0) { /* Next insn is delay slot */ pc=0x2b2b0; continue; } r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b3a0; continue; } r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b3a0; continue; } case 0x2b2b0: r5 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r16 + r0; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x2b2c4; pc=0x3d400; run_3d400(); return; case 0x2b2c4: r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b3a8; continue; } r17 = r0 + -1; /* Next insn is delay slot */ pc=0x2b31c; continue; case 0x2b2e0: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; case 0x2b2f4: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; r31=0x2b304; return; case 0x2b304: r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b3a8; continue; } case 0x2b31c: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x2b2e0; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x2b344; pc=0x41600; run_41600(); return; case 0x2b344: r4 = r2 + r0; if(r2 != r17) { /* Next insn is delay slot */ pc=0x2b2f4; continue; } r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x2b3a8; continue; } r4 = 7 << 16; r4 = r4 + -1328; /* Next insn is delay slot */ r31=0x2b370; pc=0x1ac00; run_1ac00(); return; case 0x2b370: r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; r4 = r0 + r0; /* Next insn is delay slot */ pc=r2; r31=0x2b380; return; case 0x2b380: r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b370; continue; } /* Next insn is delay slot */ pc=0x2b3a8; continue; case 0x2b3a0: /* Next insn is delay slot */ r31=0x2b3a8; pc=0x25c00; run_25c00(); return; case 0x2b3a8: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2b3b4; pc=0x39200; run_39200(); return; case 0x2b3b4: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b41c; run_2b400(); return; } r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b41c; run_2b400(); return; } /* Next insn is delay slot */ r31=0x2b3e0; pc=0x28200; run_28200(); return; case 0x2b3e0: r7 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r4 = r4 + -1304; r5 = r2 + r0; r6 = r2 + r0; /* Next insn is delay slot */ r31=0x2b400; pc=0x3fc00; run_3fc00(); 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: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2b41c: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2b438: r4 = r29 + 28; /* Next insn is delay slot */ r31=0x2b444; pc=0x15a00; run_15a00(); return; case 0x2b444: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b45c; continue; } r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x2b480; continue; } case 0x2b45c: /* Next insn is delay slot */ r31=0x2b464; pc=0x20000; run_20000(); return; case 0x2b464: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b280; run_2b200(); return; } r4 = r29 + 24; /* Next insn is delay slot */ r31=0x2b478; pc=0x15a00; run_15a00(); return; case 0x2b478: /* Next insn is delay slot */ pc=0x2b280; run_2b200(); return; case 0x2b480: r4 = 7 << 16; r4 = r4 + -1352; /* Next insn is delay slot */ r31=0x2b490; pc=0x1b200; run_1b200(); return; case 0x2b490: /* Next insn is delay slot */ pc=0x2b45c; continue; case 0x2b498: r4 = 7 << 16; r4 = r4 + -6824; /* Next insn is delay slot */ r31=0x2b4a8; pc=0x1b000; run_1b000(); return; case 0x2b4a8: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x2b234; run_2b200(); return; case 0x2b600: pc=0x2b600; 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: r2 = 7 << 16; r29 = r29 + -32; r2 = r2 + 12720; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; r16 = r0 + 34; /* Next insn is delay slot */ pc=0x2b650; continue; case 0x2b62c: /* Next insn is delay slot */ r31=0x2b634; pc=0x15e00; run_15e00(); return; case 0x2b634: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2b640; pc=0x25e00; run_25e00(); return; case 0x2b640: /* Next insn is delay slot */ r31=0x2b648; pc=0x20000; run_20000(); return; case 0x2b648: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b6e0; continue; } case 0x2b650: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2b62c; continue; } /* Next insn is delay slot */ r31=0x2b668; pc=0x1c600; run_1c600(); return; case 0x2b668: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2b6ac; continue; } case 0x2b678: if(r4 == r16) { /* Next insn is delay slot */ pc=0x2b6c8; continue; } /* Next insn is delay slot */ r31=0x2b688; pc=0x18c00; run_18c00(); return; case 0x2b688: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2b694; pc=0x25e00; run_25e00(); return; case 0x2b694: /* Next insn is delay slot */ r31=0x2b69c; pc=0x1c600; run_1c600(); return; case 0x2b69c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x2b678; continue; } case 0x2b6ac: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2b6c8: /* Next insn is delay slot */ r31=0x2b6d0; pc=0x1c000; run_1c000(); return; case 0x2b6d0: /* Next insn is delay slot */ r31=0x2b6d8; pc=0x20000; run_20000(); return; case 0x2b6d8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2b650; continue; } case 0x2b6e0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; r2 = r0 + 1; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2b800: pc=0x2b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2b800() throws ExecutionException { /* 0x2b800 - 0x2ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2b800: r2 = readPages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff]; r29 = r29 + -64; r2 = r2 + -1; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r19; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; r30 = r29 + r0; writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x2b934; continue; } case 0x2b834: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x2b840; pc=0x1fc00; run_1fc00(); return; case 0x2b840: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b874; 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]; r2 = r0 + r0; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2b874: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r5 + 12832; /* Next insn is delay slot */ r31=0x2b88c; pc=0x3b800; run_3b800(); return; case 0x2b88c: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2b94c; continue; } r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r17 = r29 + r0; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = r3 + 7; r3 = r3 >>> 3; r3 = r3 << 3; r29 = r29 - r3; r3 = r29 + 16; r4 = r3 + r0; /* Next insn is delay slot */ r31=0x2b8c8; pc=0x42e00; run_42e00(); return; case 0x2b8c8: r3 = r2 + r0; r19 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r2 = r30 + 16; r4 = r16 + r0; r5 = r3 + r0; writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x2b8ec; pc=0x19c00; run_19c00(); return; case 0x2b8ec: writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r29 = r17 + r0; case 0x2b8f8: r2 = readPages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; r29 = r30 + r0; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2b934: r4 = 7 << 16; r4 = r4 + -1244; /* Next insn is delay slot */ r31=0x2b944; pc=0x1b200; run_1b200(); return; case 0x2b944: /* Next insn is delay slot */ pc=0x2b834; continue; case 0x2b94c: r4 = 7 << 16; r4 = r4 + -6824; /* Next insn is delay slot */ r31=0x2b95c; pc=0x1b000; run_1b000(); return; case 0x2b95c: /* Next insn is delay slot */ pc=0x2b8f8; continue; case 0x2ba00: pc=0x2ba00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2ba00() throws ExecutionException { /* 0x2ba00 - 0x2bc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2ba00: r29 = r29 + -24; r4 = r0 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2ba14; pc=0x1fc00; run_1fc00(); return; case 0x2ba14: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2ba60; continue; } r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2ba60; continue; } r2 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ba74; continue; } r4 = 7 << 16; r4 = r4 + -1204; /* Next insn is delay slot */ r31=0x2ba4c; pc=0x1ac00; run_1ac00(); return; case 0x2ba4c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2ba60: r2 = r0 + r0; case 0x2ba64: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2ba74: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2ba80; pc=0x17a00; run_17a00(); return; case 0x2ba80: writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2ba64; continue; case 0x2bc00: pc=0x2bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2bc00() throws ExecutionException { /* 0x2bc00 - 0x2be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2bc00: r29 = r29 + -80; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; r17 = 7 << 16; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; r16 = r17 + 30664; r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; r2 = r2 & 16; r18 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2bce4; continue; } r4 = r29 + 40; /* Next insn is delay slot */ r31=0x2bc3c; pc=0x16000; run_16000(); return; case 0x2bc3c: /* Next insn is delay slot */ r31=0x2bc44; pc=0x20000; run_20000(); return; case 0x2bc44: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2bd34; continue; } r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2bc58; pc=0x16000; run_16000(); return; case 0x2bc58: /* Next insn is delay slot */ r31=0x2bc60; pc=0x20000; run_20000(); return; case 0x2bc60: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2bd20; continue; } case 0x2bc68: r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; addr=r2+8; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r17 = tmp; case 0x2bc74: r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = r18 + 1; r18 = r18 & r2; r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; if(r18 != r2) { /* Next insn is delay slot */ pc=0x2bc9c; continue; } /* Next insn is delay slot */ pc=0x2bcc4; continue; case 0x2bc98: r16 = r5 + r0; case 0x2bc9c: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x2bca8; pc=0x25e00; run_25e00(); return; case 0x2bca8: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r5 = r16 + 1; r16 = r16 & r3; r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; if(r16 != r3) { /* Next insn is delay slot */ pc=0x2bc98; continue; } case 0x2bcc4: r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x2bce4: r4 = 7 << 16; r4 = r4 + -6964; /* Next insn is delay slot */ r31=0x2bcf4; pc=0x1b000; run_1b000(); return; case 0x2bcf4: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r2 = r2 | 16; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x2bd20: /* Next insn is delay slot */ r31=0x2bd28; pc=0x15e00; run_15e00(); return; case 0x2bd28: r17 = r2 + r0; /* Next insn is delay slot */ pc=0x2bc74; continue; case 0x2bd34: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x2bd44; pc=0x1b000; run_1b000(); return; case 0x2bd44: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2bd50; pc=0x16000; run_16000(); return; case 0x2bd50: /* Next insn is delay slot */ r31=0x2bd58; pc=0x20000; run_20000(); return; case 0x2bd58: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2bc68; continue; } /* Next insn is delay slot */ pc=0x2bd20; 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: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -288; r3 = r0 + 60; writePages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff] = r31; writePages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff] = r18; writePages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff] = r17; writePages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff] = r16; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2be88; continue; } r3 = r0 + 34; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2be88; continue; } r16 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2be40; pc=0x1f400; run_1f400(); return; case 0x2be40: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2bf34; continue; } case 0x2be48: r2 = r29 + 16; writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x2be58; pc=0x1b600; run_1b600(); return; case 0x2be58: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2be64; continue; } writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; case 0x2be64: r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r16; r2 = r0 + 1; r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; r29 = r29 + 288; /* Next insn is delay slot */ pc=r31; return; case 0x2be88: r4 = r0 + 1; /* Next insn is delay slot */ r31=0x2be94; pc=0x1fc00; run_1fc00(); return; case 0x2be94: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2bebc; continue; } r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 288; /* Next insn is delay slot */ pc=r31; return; case 0x2bebc: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r16 = r29 + 16; r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; r17 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; r18 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2bedc; pc=0x19000; run_19000(); return; case 0x2bedc: r2 = 7 << 16; r2 = r2 + 12712; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2bef4; pc=0x1b600; run_1b600(); return; case 0x2bef4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2bf50; continue; } r4 = r17 + r0; r5 = r16 + r0; r6 = r0 + 256; /* Next insn is delay slot */ r31=0x2bf10; pc=0x48fdc; run_48e00(); return; case 0x2bf10: writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r17; r2 = r0 + 1; case 0x2bf18: r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; r29 = r29 + 288; /* Next insn is delay slot */ pc=r31; return; case 0x2bf34: /* Next insn is delay slot */ r31=0x2bf3c; pc=0x19200; run_19200(); return; case 0x2bf3c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2be48; continue; } writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x2be48; continue; case 0x2bf50: writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r18; writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r17; r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2bf18; continue; case 0x2c000: pc=0x2c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2c000() throws ExecutionException { /* 0x2c000 - 0x2c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x2c000: r29 = r29 + -24; r4 = r0 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2c014; pc=0x1fc00; run_1fc00(); return; case 0x2c014: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c02c; continue; } r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c040; continue; } case 0x2c02c: r2 = r0 + r0; case 0x2c030: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2c040: /* Next insn is delay slot */ r31=0x2c048; pc=0x26c00; run_26c00(); return; case 0x2c048: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c02c; continue; } /* Next insn is delay slot */ r31=0x2c058; pc=0x20000; run_20000(); return; case 0x2c058: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c08c; continue; } /* Next insn is delay slot */ r31=0x2c068; pc=0x1f400; run_1f400(); return; case 0x2c068: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c02c; continue; } /* Next insn is delay slot */ r31=0x2c078; pc=0x26800; run_26800(); return; case 0x2c078: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c0b8; continue; } case 0x2c080: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2c030; continue; case 0x2c08c: /* Next insn is delay slot */ r31=0x2c094; pc=0x26a00; run_26a00(); return; case 0x2c094: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c080; continue; } r4 = 7 << 16; r4 = r4 + -1164; /* Next insn is delay slot */ r31=0x2c0ac; pc=0x1ac00; run_1ac00(); return; case 0x2c0ac: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2c030; continue; case 0x2c0b8: r4 = 7 << 16; r4 = r4 + -1100; /* Next insn is delay slot */ r31=0x2c0c8; pc=0x1b000; run_1b000(); return; case 0x2c0c8: /* Next insn is delay slot */ pc=0x2c02c; continue; case 0x2c200: pc=0x2c200; 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: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r29 = r29 + -48; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c228; continue; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2c228: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2c234; pc=0x16000; run_16000(); return; case 0x2c234: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r4 + 128; r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2c270; continue; } case 0x2c24c: r4 = r4 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x2c25c; pc=0x26600; run_26600(); return; case 0x2c25c: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x2c270: r4 = 7 << 16; r4 = r4 + -6936; /* Next insn is delay slot */ r31=0x2c280; pc=0x1b000; run_1b000(); return; case 0x2c280: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2c24c; continue; case 0x2c400: pc=0x2c400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2c400() throws ExecutionException { /* 0x2c400 - 0x2c600 */ int addr, tmp; for(;;) { switch(pc) { case 0x2c400: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; case 0x2c408: /* Next insn is delay slot */ r31=0x2c410; pc=0x15e00; run_15e00(); return; case 0x2c410: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2c41c; pc=0x25e00; run_25e00(); return; case 0x2c41c: /* Next insn is delay slot */ r31=0x2c424; pc=0x20000; run_20000(); return; case 0x2c424: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c408; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2c600: pc=0x2c600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2c600() throws ExecutionException { /* 0x2c600 - 0x2c800 */ int addr, tmp; for(;;) { switch(pc) { case 0x2c600: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; case 0x2c608: /* Next insn is delay slot */ r31=0x2c610; pc=0x15e00; run_15e00(); return; case 0x2c610: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2c61c; pc=0x26000; run_26000(); return; case 0x2c61c: /* Next insn is delay slot */ r31=0x2c624; pc=0x20000; run_20000(); return; case 0x2c624: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c608; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2c800: pc=0x2c800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2c800() throws ExecutionException { /* 0x2c800 - 0x2ca00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2c800: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; case 0x2c808: /* Next insn is delay slot */ r31=0x2c810; pc=0x15e00; run_15e00(); return; case 0x2c810: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2c81c; pc=0x26200; run_26200(); return; case 0x2c81c: /* Next insn is delay slot */ r31=0x2c824; pc=0x20000; run_20000(); return; case 0x2c824: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2c808; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2ca00: pc=0x2ca00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2ca00() throws ExecutionException { /* 0x2ca00 - 0x2cc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2ca00: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; case 0x2ca08: /* Next insn is delay slot */ r31=0x2ca10; pc=0x15e00; run_15e00(); return; case 0x2ca10: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2ca1c; pc=0x26400; run_26400(); return; case 0x2ca1c: /* Next insn is delay slot */ r31=0x2ca24; pc=0x20000; run_20000(); return; case 0x2ca24: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2ca08; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x2cc00: pc=0x2cc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2cc00() throws ExecutionException { /* 0x2cc00 - 0x2ce00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2cc00: r2 = 7 << 16; r29 = r29 + -32; r4 = r2 + 30700; r5 = r0 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r2+30700)>>>12][((r2+30700)>>>2)&0x3ff]; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2cc2c; pc=0x17200; run_17200(); return; case 0x2cc2c: /* Next insn is delay slot */ r31=0x2cc34; pc=0x1b600; run_1b600(); return; case 0x2cc34: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2cc4c; continue; } r4 = r16 + 30700; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x2cc4c; pc=0x17200; run_17200(); return; case 0x2cc4c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2ce00: pc=0x2ce00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2ce00() throws ExecutionException { /* 0x2ce00 - 0x2d000 */ int addr, tmp; for(;;) { switch(pc) { case 0x2ce00: r2 = 7 << 16; r29 = r29 + -32; r4 = r2 + 30700; r5 = r0 + 1; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r2+30700)>>>12][((r2+30700)>>>2)&0x3ff]; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2ce2c; pc=0x17200; run_17200(); return; case 0x2ce2c: /* Next insn is delay slot */ r31=0x2ce34; pc=0x1b600; run_1b600(); return; case 0x2ce34: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ce4c; continue; } r4 = r16 + 30700; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x2ce4c; pc=0x17200; run_17200(); return; case 0x2ce4c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d000: pc=0x2d000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2d000() throws ExecutionException { /* 0x2d000 - 0x2d200 */ int addr, tmp; for(;;) { switch(pc) { case 0x2d000: r2 = 7 << 16; r29 = r29 + -32; r4 = r2 + 30704; r5 = r0 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r2+30704)>>>12][((r2+30704)>>>2)&0x3ff]; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x2d02c; pc=0x17200; run_17200(); return; case 0x2d02c: /* Next insn is delay slot */ r31=0x2d034; pc=0x1b600; run_1b600(); return; case 0x2d034: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2d04c; continue; } r4 = r16 + 30704; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x2d04c; pc=0x17200; run_17200(); return; case 0x2d04c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d200: pc=0x2d200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2d200() throws ExecutionException { /* 0x2d200 - 0x2d400 */ int addr, tmp; for(;;) { switch(pc) { case 0x2d200: r29 = r29 + -32; r4 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2d218; pc=0x1e400; run_1e400(); return; case 0x2d218: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2d238; continue; } r2 = r0 + r0; case 0x2d224: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d238: r5 = 7 << 16; r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = r29 + 20; r5 = r5 + 16944; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x2d254; pc=0x31200; run_31200(); return; case 0x2d254: r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2d2d0; continue; } r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2d2b8; continue; } case 0x2d274: r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r16 = r16 >>> 4; r16 = r16 & 1; case 0x2d284: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2d2f4; continue; } case 0x2d294: r2 = r0 + 123; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2d2dc; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 << 1; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d2b8: r3 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x2d274; continue; case 0x2d2d0: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x2d284; continue; case 0x2d2dc: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2d2e8; pc=0x19a00; run_19a00(); return; case 0x2d2e8: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x2d224; continue; case 0x2d2f4: /* Next insn is delay slot */ r31=0x2d2fc; pc=0x1c000; run_1c000(); return; case 0x2d2fc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; /* Next insn is delay slot */ pc=0x2d294; continue; case 0x2d400: pc=0x2d400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2d400() throws ExecutionException { /* 0x2d400 - 0x2d600 */ int addr, tmp; for(;;) { switch(pc) { case 0x2d400: r4 = 7 << 16; r29 = r29 + -40; r4 = r4 + -1076; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2d41c; pc=0x1b000; run_1b000(); return; case 0x2d41c: r16 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r4 = r29 + 16; r5 = r16 + r0; r6 = r0 + 16; /* Next insn is delay slot */ r31=0x2d434; pc=0x48fdc; run_48e00(); return; case 0x2d434: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = 7 << 16; r2 = r2 + -7236; r2 = r3 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 64; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2d4f4; continue; } r6 = 7 << 16; r4 = r16 + r0; r7 = r0 + r0; r6 = r6 + 6068; case 0x2d468: r5 = 7 << 16; r5 = r5 + -1380; /* Next insn is delay slot */ r31=0x2d478; pc=0x2e400; run_2e400(); return; case 0x2d478: /* Next insn is delay slot */ r31=0x2d480; pc=0x1b600; run_1b600(); return; case 0x2d480: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2d4bc; continue; } r4 = r29 + 16; /* Next insn is delay slot */ r31=0x2d494; pc=0x2e600; run_2e600(); return; case 0x2d494: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = 7 << 16; r3 = r3 + 12764; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2d4bc: r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2d4c8; pc=0x2e600; run_2e600(); return; case 0x2d4c8: r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = r29 + 16; r6 = r0 + 16; /* Next insn is delay slot */ r31=0x2d4dc; pc=0x48fdc; run_48e00(); return; case 0x2d4dc: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2d4f4: /* Next insn is delay slot */ r31=0x2d4fc; pc=0x1ec00; run_1ec00(); return; case 0x2d4fc: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x2d508; pc=0x17a00; run_17a00(); return; case 0x2d508: r6 = r2 + r0; r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r7 = r0 + 1; /* Next insn is delay slot */ pc=0x2d468; continue; case 0x2d600: pc=0x2d600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2d600() throws ExecutionException { /* 0x2d600 - 0x2d800 */ int addr, tmp; for(;;) { switch(pc) { case 0x2d600: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2d61c; pc=0x15e00; run_15e00(); return; case 0x2d61c: r17 = r2 + r0; /* Next insn is delay slot */ r31=0x2d628; pc=0x20000; run_20000(); return; case 0x2d628: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2d738; continue; } r2 = 7 << 16; r17 = r17 << 24; r2 = r2 + 12716; r18 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; r17 = r17 >> 24; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; r16 = r0 + 34; /* Next insn is delay slot */ pc=0x2d678; continue; case 0x2d654: /* Next insn is delay slot */ r31=0x2d65c; pc=0x15e00; run_15e00(); return; case 0x2d65c: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2d668; pc=0x25e00; run_25e00(); return; case 0x2d668: /* Next insn is delay slot */ r31=0x2d670; pc=0x20000; run_20000(); return; case 0x2d670: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2d714; continue; } case 0x2d678: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2d654; continue; } /* Next insn is delay slot */ r31=0x2d690; pc=0x1c600; run_1c600(); return; case 0x2d690: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2d6dc; continue; } case 0x2d6a0: if(r4 == r16) { /* Next insn is delay slot */ pc=0x2d6fc; continue; } /* Next insn is delay slot */ r31=0x2d6b0; pc=0x18c00; run_18c00(); return; case 0x2d6b0: r4 = r2 ^ r17; r4 = r4 << 24; r4 = r4 >> 24; /* Next insn is delay slot */ r31=0x2d6c4; pc=0x25e00; run_25e00(); return; case 0x2d6c4: /* Next insn is delay slot */ r31=0x2d6cc; pc=0x1c600; run_1c600(); return; case 0x2d6cc: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x2d6a0; continue; } case 0x2d6dc: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d6fc: /* Next insn is delay slot */ r31=0x2d704; pc=0x1c000; run_1c000(); return; case 0x2d704: /* Next insn is delay slot */ r31=0x2d70c; pc=0x20000; run_20000(); return; case 0x2d70c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2d678; continue; } case 0x2d714: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r18; r2 = r0 + 1; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d738: r4 = 7 << 16; r4 = r4 + -6980; /* Next insn is delay slot */ r31=0x2d748; pc=0x1b000; run_1b000(); return; case 0x2d748: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; 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 = 7 << 16; r29 = r29 + -32; r2 = r2 + 12724; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; r16 = r0 + 34; /* Next insn is delay slot */ pc=0x2d850; continue; case 0x2d82c: /* Next insn is delay slot */ r31=0x2d834; pc=0x15e00; run_15e00(); return; case 0x2d834: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2d840; pc=0x25e00; run_25e00(); return; case 0x2d840: /* Next insn is delay slot */ r31=0x2d848; pc=0x20000; run_20000(); return; case 0x2d848: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2d8e0; continue; } case 0x2d850: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2d82c; continue; } /* Next insn is delay slot */ r31=0x2d868; pc=0x1c600; run_1c600(); return; case 0x2d868: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2d8ac; continue; } case 0x2d878: if(r4 == r16) { /* Next insn is delay slot */ pc=0x2d8c8; continue; } /* Next insn is delay slot */ r31=0x2d888; pc=0x18c00; run_18c00(); return; case 0x2d888: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2d894; pc=0x25e00; run_25e00(); return; case 0x2d894: /* Next insn is delay slot */ r31=0x2d89c; pc=0x1c600; run_1c600(); return; case 0x2d89c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x2d878; continue; } case 0x2d8ac: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2d8c8: /* Next insn is delay slot */ r31=0x2d8d0; pc=0x1c000; run_1c000(); return; case 0x2d8d0: /* Next insn is delay slot */ r31=0x2d8d8; pc=0x20000; run_20000(); return; case 0x2d8d8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2d850; continue; } case 0x2d8e0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; r2 = r0 + 1; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2da00: pc=0x2da00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2da00() throws ExecutionException { /* 0x2da00 - 0x2dc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2da00: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; r16 = r0 + 34; /* Next insn is delay slot */ pc=0x2da44; continue; case 0x2da20: /* Next insn is delay slot */ r31=0x2da28; pc=0x15e00; run_15e00(); return; case 0x2da28: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2da34; pc=0x25e00; run_25e00(); return; case 0x2da34: /* Next insn is delay slot */ r31=0x2da3c; pc=0x20000; run_20000(); return; case 0x2da3c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2dad4; continue; } case 0x2da44: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2da20; continue; } /* Next insn is delay slot */ r31=0x2da5c; pc=0x1c600; run_1c600(); return; case 0x2da5c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2daa0; continue; } case 0x2da6c: if(r4 == r16) { /* Next insn is delay slot */ pc=0x2dabc; continue; } /* Next insn is delay slot */ r31=0x2da7c; pc=0x18c00; run_18c00(); return; case 0x2da7c: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2da88; pc=0x25e00; run_25e00(); return; case 0x2da88: /* Next insn is delay slot */ r31=0x2da90; pc=0x1c600; run_1c600(); return; case 0x2da90: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x2da6c; continue; } case 0x2daa0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2dabc: /* Next insn is delay slot */ r31=0x2dac4; pc=0x1c000; run_1c000(); return; case 0x2dac4: /* Next insn is delay slot */ r31=0x2dacc; pc=0x20000; run_20000(); return; case 0x2dacc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2da44; continue; } case 0x2dad4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; r2 = r0 + 1; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2dc00: pc=0x2dc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2dc00() throws ExecutionException { /* 0x2dc00 - 0x2de00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2dc00: r2 = 7 << 16; r29 = r29 + -32; r2 = r2 + 12716; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; r16 = r0 + 34; /* Next insn is delay slot */ pc=0x2dc50; continue; case 0x2dc2c: /* Next insn is delay slot */ r31=0x2dc34; pc=0x15e00; run_15e00(); return; case 0x2dc34: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2dc40; pc=0x25e00; run_25e00(); return; case 0x2dc40: /* Next insn is delay slot */ r31=0x2dc48; pc=0x20000; run_20000(); return; case 0x2dc48: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2dce0; continue; } case 0x2dc50: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r16) { /* Next insn is delay slot */ pc=0x2dc2c; continue; } /* Next insn is delay slot */ r31=0x2dc68; pc=0x1c600; run_1c600(); return; case 0x2dc68: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x2dcac; continue; } case 0x2dc78: if(r4 == r16) { /* Next insn is delay slot */ pc=0x2dcc8; continue; } /* Next insn is delay slot */ r31=0x2dc88; pc=0x18c00; run_18c00(); return; case 0x2dc88: r4 = r2 + r0; /* Next insn is delay slot */ r31=0x2dc94; pc=0x25e00; run_25e00(); return; case 0x2dc94: /* Next insn is delay slot */ r31=0x2dc9c; pc=0x1c600; run_1c600(); return; case 0x2dc9c: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x2dc78; continue; } case 0x2dcac: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2dcc8: /* Next insn is delay slot */ r31=0x2dcd0; pc=0x1c000; run_1c000(); return; case 0x2dcd0: /* Next insn is delay slot */ r31=0x2dcd8; pc=0x20000; run_20000(); return; case 0x2dcd8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2dc50; continue; } case 0x2dce0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; r2 = r0 + 1; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2de00: pc=0x2de00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2de00() throws ExecutionException { /* 0x2de00 - 0x2e000 */ int addr, tmp; for(;;) { switch(pc) { case 0x2de00: r29 = r29 + -64; r4 = r29 + 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; r19 = 7 << 16; r18 = 7 << 16; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; r17 = r0 + r0; /* Next insn is delay slot */ r31=0x2de30; pc=0x16000; run_16000(); return; case 0x2de30: r18 = r18 + -1024; r19 = r19 + -1016; case 0x2de38: /* Next insn is delay slot */ r31=0x2de40; pc=0x20000; run_20000(); return; case 0x2de40: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2de90; continue; } case 0x2de48: /* Next insn is delay slot */ r31=0x2de50; pc=0x1f400; run_1f400(); return; case 0x2de50: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2dea0; continue; } r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r18 + r0; r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ r31=0x2de74; pc=0x42c00; run_42c00(); return; case 0x2de74: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2dec0; continue; } r17 = r17 | 1; /* Next insn is delay slot */ r31=0x2de88; pc=0x20000; run_20000(); return; case 0x2de88: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2de48; continue; } case 0x2de90: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x2dea0; pc=0x27e00; run_27e00(); return; case 0x2dea0: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x2dec0: r4 = r16 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x2ded0; pc=0x42c00; run_42c00(); return; case 0x2ded0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2dee4; continue; } r17 = r17 | 2; /* Next insn is delay slot */ pc=0x2de38; continue; case 0x2dee4: r4 = 7 << 16; r4 = r4 + -1004; /* Next insn is delay slot */ r31=0x2def4; pc=0x1b000; run_1b000(); return; case 0x2def4: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; 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: r29 = r29 + -24; r4 = r0 + 80; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2e014; pc=0x17600; run_17600(); return; case 0x2e014: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = 7 << 16; r4 = r28 + -30668; r5 = r5 + 8940; r29 = r29 + 24; writePages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x30e00; run_30e00(); return; case 0x2e200: pc=0x2e200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2e200() throws ExecutionException { /* 0x2e200 - 0x2e400 */ int addr, tmp; for(;;) { switch(pc) { case 0x2e200: r29 = r29 + -32; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2e214; pc=0x1c000; run_1c000(); return; case 0x2e214: /* Next insn is delay slot */ r31=0x2e21c; pc=0x1f400; run_1f400(); return; case 0x2e21c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2e240; continue; } case 0x2e224: /* Next insn is delay slot */ r31=0x2e22c; pc=0x1c800; run_1c800(); return; case 0x2e22c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2e240: r4 = readPages[(r28+-30668)>>>12][((r28+-30668)>>>2)&0x3ff]; r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x2e254; pc=0x31000; run_31000(); return; case 0x2e254: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2e2b4; continue; } r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x2e2b4; continue; } addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2e2cc; continue; } case 0x2e27c: /* Next insn is delay slot */ pc=r16; r31=0x2e284; return; case 0x2e284: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2e224; continue; } r3 = r0 + 1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x2e22c; continue; } /* Next insn is delay slot */ r31=0x2e2a0; pc=0x1ce00; run_1ce00(); return; case 0x2e2a0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x2e2b4: r4 = 7 << 16; r4 = r4 + -972; /* Next insn is delay slot */ r31=0x2e2c4; pc=0x1b000; run_1b000(); return; case 0x2e2c4: /* Next insn is delay slot */ pc=0x2e224; continue; case 0x2e2cc: /* Next insn is delay slot */ r31=0x2e2d4; pc=0x1c000; run_1c000(); return; case 0x2e2d4: /* Next insn is delay slot */ pc=0x2e27c; continue; case 0x2e400: pc=0x2e400; 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: r2 = readPages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff]; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; r2 = r2 + 1; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; writePages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff] = r2; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r6; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r7; writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=r31; return; case 0x2e600: pc=0x2e600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2e600() throws ExecutionException { /* 0x2e600 - 0x2e800 */ int addr, tmp; for(;;) { switch(pc) { case 0x2e600: r2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2e618; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x2e618: r4 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3ea00; run_3ea00(); return; case 0x2e800: pc=0x2e800; 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: r3 = r0 + 1; r2 = 7 << 16; writePages[(r2+16928)>>>12][((r2+16928)>>>2)&0x3ff] = r3; writePages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff] = r3; r3 = 7 << 16; r2 = r2 + 16928; r3 = r3 + 12764; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + 6068; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r6 = r0 + 16; r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = r4 + r0; r7 = r7 & 272; if(r7 == r6) { /* Next insn is delay slot */ pc=0x2ea24; continue; } case 0x2ea1c: /* Next insn is delay slot */ pc=r31; return; case 0x2ea24: r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r0 + 1; if(r6 != r4) { /* Next insn is delay slot */ pc=0x2ea1c; continue; } r4 = r5 + r0; r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + -652; /* Next insn is delay slot */ pc=0x3bc00; run_3bc00(); return; case 0x2ec00: pc=0x2ec00; 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: r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r3 = r4 + r0; r6 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x2ec2c; continue; } r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = r0 + 16; r7 = r7 & 272; if(r7 == r6) { /* Next insn is delay slot */ pc=0x2ec34; continue; } case 0x2ec2c: /* Next insn is delay slot */ pc=r31; return; case 0x2ec34: r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r0 + 1; if(r6 == r4) { /* Next insn is delay slot */ pc=0x2ec2c; continue; } r4 = r5 + r0; r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + -652; /* Next insn is delay slot */ pc=0x3bc00; run_3bc00(); return; case 0x2ee00: pc=0x2ee00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2ee00() throws ExecutionException { /* 0x2ee00 - 0x2f000 */ int addr, tmp; for(;;) { switch(pc) { case 0x2ee00: r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r3 = r4 + r0; r6 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; if(r6 != r0) { /* Next insn is delay slot */ pc=0x2ee2c; continue; } r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = r0 + 16; r7 = r7 & 272; if(r7 == r6) { /* Next insn is delay slot */ pc=0x2ee34; continue; } case 0x2ee2c: /* Next insn is delay slot */ pc=r31; return; case 0x2ee34: r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r4 = r0 + 1; if(r6 == r4) { /* Next insn is delay slot */ pc=0x2ee2c; continue; } r4 = r5 + r0; r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = 7 << 16; r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r5 = r5 + -652; /* Next insn is delay slot */ pc=0x3bc00; run_3bc00(); return; case 0x2f000: pc=0x2f000; 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: r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r18 = r4 + r0; r17 = r5 + r0; r16 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2f03c; continue; } r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r2 = r0 + 1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2f200; run_2f200(); return; } case 0x2f03c: r5 = 7 << 16; r6 = readPages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff]; r4 = r17 + r0; r5 = r5 + -628; /* Next insn is delay slot */ r31=0x2f054; pc=0x3bc00; run_3bc00(); return; case 0x2f054: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 4; r2 = r2 & 7; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2f1dc; continue; } r3 = r0 + 6; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2f1dc; continue; } r3 = r0 + 2; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2f13c; continue; } r4 = 7 << 16; r4 = r4 + -608; r5 = r0 + 1; r6 = r0 + 3; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f09c; pc=0x3dc00; run_3dc00(); return; case 0x2f09c: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2f16c; continue; } case 0x2f0b0: r2 = r2 & 256; r4 = r17 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2f1c0; continue; } r5 = 7 << 16; r7 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r5 = r5 + -604; /* Next insn is delay slot */ r31=0x2f0d8; pc=0x3bc00; run_3bc00(); return; case 0x2f0d8: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 32; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2f19c; continue; } case 0x2f0ec: r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2f118; continue; } r4 = 7 << 16; r4 = r4 + -580; r5 = r0 + 1; r6 = r0 + 9; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f118; pc=0x3dc00; run_3dc00(); return; case 0x2f118: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r5 = r17 + r0; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r0 + 10; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3c000; run_3c000(); return; case 0x2f13c: r4 = 7 << 16; r4 = r4 + -624; r5 = r0 + 1; r6 = r0 + 5; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f158; pc=0x3dc00; run_3dc00(); return; case 0x2f158: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 & 16; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2f0b0; continue; } case 0x2f16c: r4 = 7 << 16; r4 = r4 + -592; r5 = r0 + 1; r6 = r0 + 2; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f188; pc=0x3dc00; run_3dc00(); return; case 0x2f188: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 32; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2f0ec; continue; } case 0x2f19c: r4 = 7 << 16; r4 = r4 + -588; r5 = r0 + 1; r6 = r0 + 4; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f1b8; pc=0x3dc00; run_3dc00(); return; case 0x2f1b8: /* Next insn is delay slot */ pc=0x2f0ec; continue; case 0x2f1c0: r5 = 7 << 16; r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r5 = r5 + -596; /* Next insn is delay slot */ r31=0x2f1d4; pc=0x3bc00; run_3bc00(); return; case 0x2f1d4: /* Next insn is delay slot */ pc=0x2f0d8; continue; case 0x2f1dc: r4 = 7 << 16; r4 = r4 + -616; r5 = r0 + 1; r6 = r0 + 5; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f1f8; pc=0x3dc00; run_3dc00(); return; case 0x2f1f8: /* Next insn is delay slot */ pc=0x2f09c; continue; case 0x2f200: pc=0x2f200; 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: r4 = 7 << 16; r4 = r4 + -636; r5 = r0 + 1; r6 = r0 + 5; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x2f21c; pc=0x3dc00; run_3dc00(); return; case 0x2f21c: /* Next insn is delay slot */ pc=0x2f03c; run_2f000(); return; case 0x2f400: pc=0x2f400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2f400() throws ExecutionException { /* 0x2f400 - 0x2f600 */ int addr, tmp; for(;;) { switch(pc) { case 0x2f400: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = 7 << 16; r6 = r4 + r0; r5 = r5 + 16944; r4 = r29 + 16; r7 = r0 + 1; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2f42c; pc=0x31200; run_31200(); return; case 0x2f42c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2f488; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r16 = r16 & 7; r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x2f474; continue; } r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = r3 & 7; if(r3 == r16) { /* Next insn is delay slot */ pc=0x2f474; continue; } r4 = 7 << 16; r4 = r4 + -568; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x2f470; pc=0x1b000; run_1b000(); return; case 0x2f470: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; case 0x2f474: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2f488: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x2f494; pc=0x1b400; run_1b400(); return; case 0x2f494: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; r16 = r16 & 256; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x2f4d4; continue; } writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; case 0x2f4ac: r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r3; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2f4d4: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x2f4ac; continue; case 0x2f600: pc=0x2f600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2f600() throws ExecutionException { /* 0x2f600 - 0x2f800 */ int addr, tmp; for(;;) { switch(pc) { case 0x2f600: r29 = r29 + -40; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r2 = r16 & 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r17 = r4 + r0; r18 = r5 + r0; r19 = r6 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2f63c; continue; } if(r6 == r0) { /* Next insn is delay slot */ pc=0x2f6e8; continue; } case 0x2f63c: r4 = r17 + r0; r5 = r18 + r0; r6 = r0 + 24; /* Next insn is delay slot */ r31=0x2f650; pc=0x48fdc; run_48e00(); return; case 0x2f650: r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; case 0x2f654: r4 = r16 & 40; r3 = r0 + 32; if(r4 == r3) { /* Next insn is delay slot */ pc=0x2f6a8; continue; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x2f6bc; continue; } case 0x2f66c: r3 = r16 & 55; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2f74c; continue; } case 0x2f678: r3 = r0 + -8; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r2 & r3; r2 = r2 | r16; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2f6a8: r3 = r0 + -9; r2 = r2 & r3; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; if(r19 == r0) { /* Next insn is delay slot */ pc=0x2f66c; continue; } case 0x2f6bc: r16 = r16 & 32; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r2 | r16; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x2f6e8: r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r3 = r2 ^ r16; r3 = r3 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2f730; continue; } r3 = r16 & 256; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2f75c; continue; } f2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; f0 = readPages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff]; f3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; f1 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x2f654; continue; } case 0x2f730: r4 = 7 << 16; r4 = r4 + -544; /* Next insn is delay slot */ r31=0x2f740; pc=0x1b000; run_1b000(); return; case 0x2f740: r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2f654; continue; case 0x2f74c: r3 = r2 & 7; r16 = r3 | r16; /* Next insn is delay slot */ pc=0x2f678; continue; case 0x2f75c: r4 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; if(r4 != r3) { /* Next insn is delay slot */ pc=0x2f730; continue; } /* Next insn is delay slot */ pc=0x2f654; continue; case 0x2f800: pc=0x2f800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2f800() throws ExecutionException { /* 0x2f800 - 0x2fa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2f800: r29 = r29 + -88; r2 = r4 + r0; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; r18 = r5 + r0; r5 = 7 << 16; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; r19 = r7 + r0; r17 = r6 + r0; r4 = r29 + 16; r5 = r5 + 16944; r6 = r2 + r0; r7 = r0 + 1; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x2f844; pc=0x31200; run_31200(); return; case 0x2f844: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2f9cc; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r17 = r17 & 7; r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r17 == r0) { /* Next insn is delay slot */ pc=0x2f884; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 7; if(r2 == r17) { /* Next insn is delay slot */ pc=0x2f884; continue; } r4 = 7 << 16; r4 = r4 + -568; /* Next insn is delay slot */ r31=0x2f884; pc=0x1b000; run_1b000(); return; case 0x2f884: r18 = r18 & 1; if(r18 == r0) { /* Next insn is delay slot */ pc=0x2f8a0; continue; } r2 = readPages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2f9b4; continue; } case 0x2f8a0: r4 = r29 + 40; /* Next insn is delay slot */ r31=0x2f8ac; pc=0x28000; run_28000(); return; case 0x2f8ac: r17 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r17 & 16; r18 = r18 & 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2f938; continue; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x2f988; continue; } r3 = r17 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2fa34; run_2fa00(); return; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x2fa24; run_2fa00(); return; } f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x2fa34; run_2fa00(); return; } case 0x2f910: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r18 = r18 | r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x2f938: writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; r5 = r29 + 16; r4 = r16 + r0; r6 = r0 + 24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x2f954; pc=0x48fdc; run_48e00(); return; case 0x2f954: if(r19 == r0) { /* Next insn is delay slot */ pc=0x2f910; continue; } r17 = r17 & 32; r18 = r18 | r17; case 0x2f964: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x2f988: writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; r5 = r29 + 16; r4 = r16 + r0; r6 = r0 + 24; r17 = r17 & 32; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x2f9a8; pc=0x48fdc; run_48e00(); return; case 0x2f9a8: r18 = r18 | r17; /* Next insn is delay slot */ pc=0x2f964; continue; case 0x2f9b4: r4 = 7 << 16; r4 = r4 + -520; /* Next insn is delay slot */ r31=0x2f9c4; pc=0x1ae00; run_1ae00(); return; case 0x2f9c4: /* Next insn is delay slot */ pc=0x2f8a0; continue; case 0x2f9cc: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x2f9d8; pc=0x1b400; run_1b400(); return; case 0x2f9d8: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r17; r17 = r17 & 256; r16 = r2 + r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; if(r17 != r0) { /* Next insn is delay slot */ pc=0x2fa14; run_2fa00(); return; } writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; case 0x2f9f4: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; case 0x2fa00: pc=0x2fa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2fa00() throws ExecutionException { /* 0x2fa00 - 0x2fc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2fa00: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x2f884; run_2f800(); return; case 0x2fa14: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x2f9f4; run_2f800(); return; case 0x2fa24: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2f910; run_2f800(); return; } case 0x2fa34: r4 = 7 << 16; r4 = r4 + -544; /* Next insn is delay slot */ r31=0x2fa44; pc=0x1b000; run_1b000(); return; case 0x2fa44: /* Next insn is delay slot */ pc=0x2f910; run_2f800(); return; case 0x2fc00: pc=0x2fc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2fc00() throws ExecutionException { /* 0x2fc00 - 0x2fe00 */ int addr, tmp; for(;;) { switch(pc) { case 0x2fc00: r29 = r29 + -88; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; r19 = r5 + r0; r16 = r4 + r0; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x2fc28; pc=0x20200; run_20200(); return; case 0x2fc28: addr=r28+-30588; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r18 = r2 + r0; r17 = r29 + 16; r5 = 7 << 16; r2 = r0 + 61; r4 = r17 + r0; r5 = r5 + 16944; r6 = r16 + r0; r7 = r0 + 1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x2fd6c; continue; } /* Next insn is delay slot */ r31=0x2fc5c; pc=0x31200; run_31200(); return; case 0x2fc5c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2fe80; run_2fe00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r18 = r18 & 7; r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r18 == r0) { /* Next insn is delay slot */ pc=0x2fc9c; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 7; if(r2 == r18) { /* Next insn is delay slot */ pc=0x2fc9c; continue; } r4 = 7 << 16; r4 = r4 + -568; /* Next insn is delay slot */ r31=0x2fc9c; pc=0x1b000; run_1b000(); return; case 0x2fc9c: r19 = r19 & 1; if(r19 == r0) { /* Next insn is delay slot */ pc=0x2fcb8; continue; } case 0x2fca8: r2 = readPages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x2fed0; run_2fe00(); return; } case 0x2fcb8: r4 = r29 + 40; /* Next insn is delay slot */ r31=0x2fcc4; pc=0x28000; run_28000(); return; case 0x2fcc4: r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r18 & 16; r19 = r19 & 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2fd48; continue; } case 0x2fce8: r3 = r18 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2fe68; run_2fe00(); return; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x2fe58; run_2fe00(); return; } f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x2fe68; run_2fe00(); return; } case 0x2fd20: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r18 = r19 | r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x2fd48: writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ r31=0x2fd64; pc=0x48fdc; run_48e00(); return; case 0x2fd64: /* Next insn is delay slot */ pc=0x2fd20; continue; case 0x2fd6c: /* Next insn is delay slot */ r31=0x2fd74; pc=0x31200; run_31200(); return; case 0x2fd74: if(r2 != r0) { /* Next insn is delay slot */ pc=0x2ff28; run_2fe00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r18 = r18 & 7; r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; if(r18 == r0) { /* Next insn is delay slot */ pc=0x2fdb4; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 & 7; if(r2 == r18) { /* Next insn is delay slot */ pc=0x2fdb4; continue; } r4 = 7 << 16; r4 = r4 + -568; /* Next insn is delay slot */ r31=0x2fdb4; pc=0x1b000; run_1b000(); return; case 0x2fdb4: /* Next insn is delay slot */ r31=0x2fdbc; pc=0x1c000; run_1c000(); return; case 0x2fdbc: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x2fdc8; pc=0x16400; run_16400(); return; case 0x2fdc8: /* Next insn is delay slot */ r31=0x2fdd0; pc=0x31a00; run_31a00(); return; case 0x2fdd0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x2fde0; continue; } r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; case 0x2fde0: r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r18 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x2ff70; run_2fe00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r2 ^ r18; case 0x2fe00: pc=0x2fe00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_2fe00() throws ExecutionException { /* 0x2fe00 - 0x30000 */ int addr, tmp; for(;;) { switch(pc) { case 0x2fe00: r3 = r3 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2fe3c; continue; } r3 = r18 & 256; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2fff8; continue; } f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x2ff88; continue; } case 0x2fe3c: r4 = 7 << 16; r4 = r4 + -544; /* Next insn is delay slot */ r31=0x2fe4c; pc=0x1b000; run_1b000(); return; case 0x2fe4c: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x2ff88; continue; case 0x2fe58: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x2fd20; run_2fc00(); return; } case 0x2fe68: r4 = 7 << 16; r4 = r4 + -544; /* Next insn is delay slot */ r31=0x2fe78; pc=0x1b000; run_1b000(); return; case 0x2fe78: /* Next insn is delay slot */ pc=0x2fd20; run_2fc00(); return; case 0x2fe80: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x2fe8c; pc=0x1b400; run_1b400(); return; case 0x2fe8c: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; r18 = r18 & 256; r16 = r2 + r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; if(r18 != r0) { /* Next insn is delay slot */ pc=0x2ff18; continue; } writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; case 0x2fea8: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r19 = r19 & 1; writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; if(r19 != r0) { /* Next insn is delay slot */ pc=0x2fca8; run_2fc00(); return; } /* Next insn is delay slot */ pc=0x2fcb8; run_2fc00(); return; case 0x2fed0: r4 = 7 << 16; r4 = r4 + -520; /* Next insn is delay slot */ r31=0x2fee0; pc=0x1ae00; run_1ae00(); return; case 0x2fee0: r4 = r29 + 40; /* Next insn is delay slot */ r31=0x2feec; pc=0x28000; run_28000(); return; case 0x2feec: r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r18 & 16; r19 = r19 & 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x2fd48; run_2fc00(); return; } /* Next insn is delay slot */ pc=0x2fce8; run_2fc00(); return; case 0x2ff18: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x2fea8; continue; case 0x2ff28: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x2ff34; pc=0x1b400; run_1b400(); return; case 0x2ff34: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; r18 = r18 & 256; r16 = r2 + r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; if(r18 != r0) { /* Next insn is delay slot */ pc=0x30014; run_30000(); return; } writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; case 0x2ff50: r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x2fdb4; run_2fc00(); return; case 0x2ff70: r4 = r16 + r0; r5 = r17 + r0; r6 = r0 + 24; /* Next insn is delay slot */ r31=0x2ff84; pc=0x48fdc; run_48e00(); return; case 0x2ff84: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x2ff88: r4 = r18 & 40; r3 = r0 + 32; if(r4 == r3) { /* Next insn is delay slot */ pc=0x2ffe4; continue; } case 0x2ff98: r3 = r18 & 55; if(r3 != r0) { /* Next insn is delay slot */ pc=0x2ffac; continue; } r3 = r2 & 7; r18 = r3 | r18; case 0x2ffac: r3 = r0 + -8; r2 = r2 & r3; r18 = r2 | r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x2ffc4; pc=0x1ce00; run_1ce00(); return; case 0x2ffc4: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x2ffe4: r3 = r0 + -9; r2 = r2 & r3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x2ff98; continue; case 0x2fff8: r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; case 0x30000: pc=0x30000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30000() throws ExecutionException { /* 0x30000 - 0x30200 */ int addr, tmp; for(;;) { switch(pc) { case 0x30000: if(r4 != r3) { /* Next insn is delay slot */ pc=0x2fe3c; run_2fe00(); return; } /* Next insn is delay slot */ pc=0x2ff88; run_2fe00(); return; case 0x30014: writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x2ff50; run_2fe00(); return; case 0x30200: pc=0x30200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30200() throws ExecutionException { /* 0x30200 - 0x30400 */ int addr, tmp; for(;;) { switch(pc) { case 0x30200: r29 = r29 + -32; r5 = 7 << 16; r5 = r5 + 16944; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r6 = r0 + r0; r16 = r4 + r0; r7 = r0 + 1; r4 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3022c; pc=0x31200; run_31200(); return; case 0x3022c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x30268; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; r3 = r3 & 32; r3 = r3 | 80; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x30268: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x30274; pc=0x1b400; run_1b400(); return; case 0x30274: r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r3; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; r3 = r0 + 80; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; 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: r7 = r4 + r0; r6 = 3 << 16; r4 = 7 << 16; r4 = r4 + 16944; r5 = r0 + r0; r6 = r6 + -4096; /* Next insn is delay slot */ pc=0x31800; run_31800(); return; case 0x30600: pc=0x30600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30600() throws ExecutionException { /* 0x30600 - 0x30800 */ int addr, tmp; for(;;) { switch(pc) { case 0x30600: r29 = r29 + -32; r6 = 3 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = 7 << 16; r16 = r4 + r0; r7 = r16 + r0; r4 = r17 + 16944; r6 = r6 + -4608; r5 = r0 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x30634; pc=0x31800; run_31800(); return; case 0x30634: r5 = r16 + r0; r4 = r0 + 10; /* Next insn is delay slot */ r31=0x30644; pc=0x3c000; run_3c000(); return; case 0x30644: r6 = 3 << 16; r7 = r16 + r0; r4 = r17 + 16944; r6 = r6 + -5120; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x30660; pc=0x31800; run_31800(); return; case 0x30660: r5 = r16 + r0; r4 = r0 + 10; /* Next insn is delay slot */ r31=0x30670; pc=0x3c000; run_3c000(); return; case 0x30670: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = r17 + 16944; r6 = 3 << 16; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r7 = r16 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = r0 + r0; r6 = r6 + -5632; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x31800; run_31800(); 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: r29 = r29 + -40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r5 = r0 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x30828; pc=0x17c00; run_17c00(); return; case 0x30828: r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r29 + 16; r5 = r5 + 16944; r7 = r0 + 1; /* Next insn is delay slot */ r31=0x30848; pc=0x31200; run_31200(); return; case 0x30848: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3095c; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r18 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; r3 = readPages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff]; if(r3 == r2) { /* Next insn is delay slot */ pc=0x30994; continue; } writePages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff] = r2; writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r0; r16 = r0 + r0; case 0x3087c: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x308cc; continue; case 0x3089c: r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; r5 = r16 & 15; r5 = r5 + 97; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; r16 = r16 >>> 4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x3091c; continue; } case 0x308c8: r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; case 0x308cc: r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; if(r5 != r3) { /* Next insn is delay slot */ pc=0x3089c; continue; } /* Next insn is delay slot */ r31=0x308e4; pc=0x17800; run_17800(); return; case 0x308e4: r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = r3 + 1; r3 = r5 + r3; r5 = r16 & 15; r5 = r5 + 97; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; r16 = r16 >>> 4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; if(r16 != r0) { /* Next insn is delay slot */ pc=0x308c8; continue; } case 0x3091c: r5 = r0 + r0; /* Next insn is delay slot */ r31=0x30928; pc=0x17c00; run_17c00(); return; case 0x30928: if(r17 == r0) { /* Next insn is delay slot */ pc=0x30940; continue; } r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r2; case 0x30940: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x3095c: r4 = r0 + 32; /* Next insn is delay slot */ r31=0x30968; pc=0x1b400; run_1b400(); return; case 0x30968: r18 = r2 + r0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; writePages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff] = r2; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r18; case 0x30994: r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3087c; continue; case 0x30a00: pc=0x30a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30a00() throws ExecutionException { /* 0x30a00 - 0x30c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x30a00: r2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r5 = r2 + 1; r2 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x30a40; continue; } case 0x30a1c: r6 = r2 >>> 25; r2 = r2 << 7; r2 = r2 | r6; r5 = r5 + 1; r2 = r3 ^ r2; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x30a1c; continue; } case 0x30a40: writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=r31; return; case 0x30c00: pc=0x30c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30c00() throws ExecutionException { /* 0x30c00 - 0x30e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x30c00: r2 = readPages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff]; r3 = r0 + r0; r6 = r2 + 1; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30c40; continue; } case 0x30c1c: r7 = r3 >>> 25; r3 = r3 << 7; r3 = r3 | r7; r6 = r6 + 1; r3 = r2 ^ r3; addr=r6+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x30c1c; continue; } case 0x30c40: writePages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff] = r3; case 0x30c44: r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30c7c; continue; } case 0x30c54: r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r4 = ((r4 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x30c88; continue; } r4 = r2 + r0; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x30c54; continue; } case 0x30c7c: writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=r31; return; case 0x30c88: r4 = r2 + 4; /* Next insn is delay slot */ pc=0x30c44; continue; case 0x30e00: pc=0x30e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_30e00() throws ExecutionException { /* 0x30e00 - 0x31000 */ int addr, tmp; for(;;) { switch(pc) { case 0x30e00: r2 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30ec0; continue; } case 0x30e10: r8 = r5 + 20; r2 = readPages[(r8+-8)>>>12][((r8+-8)>>>2)&0x3ff]; r3 = r0 + r0; r6 = r2 + 1; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30e54; continue; } case 0x30e30: r7 = r3 >>> 25; r3 = r3 << 7; r3 = r3 | r7; r6 = r6 + 1; r3 = r2 ^ r3; addr=r6+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x30e30; continue; } case 0x30e54: writePages[(r8+-12)>>>12][((r8+-12)>>>2)&0x3ff] = r3; r6 = r4 + r0; case 0x30e5c: r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30e94; continue; } case 0x30e6c: r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r6 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x30eb4; continue; } r6 = r2 + r0; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x30e6c; continue; } case 0x30e94: writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; r2 = readPages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x30ec4; continue; } r5 = r8 + r0; /* Next insn is delay slot */ pc=0x30e10; continue; case 0x30eb4: r6 = r2 + 4; /* Next insn is delay slot */ pc=0x30e5c; continue; case 0x30ec0: r8 = r5 + r0; case 0x30ec4: r2 = readPages[(r8+12)>>>12][((r8+12)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r5 = r2 + 1; r2 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x30f04; continue; } case 0x30ee0: r6 = r2 >>> 25; r2 = r2 << 7; r2 = r2 | r6; r5 = r5 + 1; r2 = r3 ^ r2; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x30ee0; continue; } case 0x30f04: writePages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff] = r2; case 0x30f08: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x30f40; continue; } case 0x30f18: r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r4 = ((r4 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x30f4c; continue; } r4 = r3 + r0; r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x30f18; continue; } case 0x30f40: writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ pc=r31; return; case 0x30f4c: r4 = r3 + 4; /* Next insn is delay slot */ pc=0x30f08; continue; case 0x31000: pc=0x31000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_31000() throws ExecutionException { /* 0x31000 - 0x31200 */ int addr, tmp; for(;;) { switch(pc) { case 0x31000: r9 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r8 = r0 + r0; addr=r9+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r9 + 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3103c; continue; } case 0x31018: r6 = r8 >>> 25; r8 = r8 << 7; r8 = r8 | r6; r3 = r3 + 1; r8 = r2 ^ r8; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x31018; continue; } case 0x3103c: if(r4 == r0) { /* Next insn is delay slot */ pc=0x31068; continue; } case 0x31044: r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r3 = ((r2 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x31074; continue; } r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x31044; continue; } case 0x31068: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x31074: if(r2 == r8) { /* Next insn is delay slot */ pc=0x31088; continue; } case 0x3107c: r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3103c; continue; case 0x31088: r3 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r2 = r9 + r0; /* Next insn is delay slot */ pc=0x310a0; continue; case 0x31098: if(r6 == r0) { /* Next insn is delay slot */ pc=0x310c4; continue; } case 0x310a0: r2 = r2 + 1; r3 = r3 + 1; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r7 = tmp; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r6 = tmp; if(r6 == r7) { /* Next insn is delay slot */ pc=0x31098; continue; } /* Next insn is delay slot */ pc=0x3107c; continue; case 0x310c4: r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r2; r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x31200: pc=0x31200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_31200() throws ExecutionException { /* 0x31200 - 0x31400 */ int addr, tmp; for(;;) { switch(pc) { case 0x31200: r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; r29 = r29 + -48; r10 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; addr=r10+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r19 = r4 + r0; r8 = r10 + 1; r2 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3125c; continue; } case 0x31238: r9 = r2 >>> 25; r2 = r2 << 7; r2 = r2 | r9; r8 = r8 + 1; r2 = r3 ^ r2; addr=r8+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x31238; continue; } case 0x3125c: r17 = r2 ^ r6; r2 = r17 >>> 16; r2 = r2 ^ r17; r16 = r2 >>> 8; r16 = r16 ^ r2; r16 = r16 & 255; r16 = r16 << 2; r16 = r5 + r16; case 0x3127c: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x312b4; continue; } case 0x3128c: r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r5 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x312e0; continue; } r16 = r2 + r0; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3128c; continue; } case 0x312b4: if(r7 != r0) { /* Next insn is delay slot */ pc=0x31368; continue; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x312e0: if(r17 == r3) { /* Next insn is delay slot */ pc=0x312f4; continue; } case 0x312e8: r16 = r2 + 4; /* Next insn is delay slot */ pc=0x3127c; continue; case 0x312f4: r3 = readPages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff]; if(r6 != r3) { /* Next insn is delay slot */ pc=0x312e8; continue; } r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r3 = r10 + r0; /* Next insn is delay slot */ pc=0x3131c; continue; case 0x31314: if(r8 == r0) { /* Next insn is delay slot */ pc=0x31340; continue; } case 0x3131c: r3 = r3 + 1; r5 = r5 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r9 = tmp; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r8 = tmp; if(r8 == r9) { /* Next insn is delay slot */ pc=0x31314; continue; } /* Next insn is delay slot */ pc=0x312e8; continue; case 0x31340: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x31368: r4 = r0 + 24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x31378; pc=0x1b400; run_1b400(); return; case 0x31378: r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r17; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r6; r18 = r2 + r0; /* Next insn is delay slot */ r31=0x3139c; pc=0x17a00; run_17a00(); return; case 0x3139c: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff] = r2; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r2 = r0 + 1; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r18; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x31400: pc=0x31400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_31400() throws ExecutionException { /* 0x31400 - 0x31600 */ int addr, tmp; for(;;) { switch(pc) { case 0x31400: r29 = r29 + -64; r3 = r4 + r0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; r30 = r5 + r0; r17 = r6 + r0; r16 = r7 + r0; case 0x31440: r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; if(r2 != r30) { /* Next insn is delay slot */ pc=0x31460; continue; } r4 = r3 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x31460; return; case 0x31460: r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3169c; run_31600(); return; } case 0x3147c: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; if(r2 != r30) { /* Next insn is delay slot */ pc=0x314a4; continue; } r4 = r3 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x314a4; return; case 0x314a4: r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x31680; run_31600(); return; } case 0x314c0: r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; if(r2 != r30) { /* Next insn is delay slot */ pc=0x314e8; continue; } r4 = r3 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x314e8; return; case 0x314e8: r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r22 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r22 == r0) { /* Next insn is delay slot */ pc=0x31664; run_31600(); return; } case 0x31500: r2 = readPages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff]; if(r2 != r30) { /* Next insn is delay slot */ pc=0x31520; continue; } r4 = r22 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x31520; return; case 0x31520: r23 = readPages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff]; if(r23 == r0) { /* Next insn is delay slot */ pc=0x31654; run_31600(); return; } case 0x31530: r2 = readPages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff]; if(r2 == r30) { /* Next insn is delay slot */ pc=0x31734; run_31600(); return; } case 0x31540: r20 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; if(r20 == r0) { /* Next insn is delay slot */ pc=0x31644; run_31600(); return; } case 0x31550: r2 = readPages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff]; if(r30 == r2) { /* Next insn is delay slot */ pc=0x3171c; run_31600(); return; } case 0x31560: r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; if(r19 == r0) { /* Next insn is delay slot */ pc=0x31634; run_31600(); return; } case 0x31570: r2 = readPages[(r19+20)>>>12][((r19+20)>>>2)&0x3ff]; if(r30 == r2) { /* Next insn is delay slot */ pc=0x31704; run_31600(); return; } case 0x31580: r18 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r18 == r0) { /* Next insn is delay slot */ pc=0x31624; run_31600(); return; } case 0x31590: r2 = readPages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff]; if(r30 == r2) { /* Next insn is delay slot */ pc=0x316ec; run_31600(); return; } case 0x315a0: r21 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; if(r21 != r0) { /* Next insn is delay slot */ pc=0x315ec; continue; } /* Next insn is delay slot */ pc=0x31614; run_31600(); return; case 0x315b8: r4 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x315dc; continue; } r5 = r30 + r0; r6 = r17 + r0; r7 = r16 + r0; /* Next insn is delay slot */ r31=0x315dc; pc=0x31400; continue; case 0x315dc: r21 = readPages[(r21+4)>>>12][((r21+4)>>>2)&0x3ff]; if(r21 == r0) { /* Next insn is delay slot */ pc=0x31614; run_31600(); return; } case 0x315ec: r3 = readPages[(r21+20)>>>12][((r21+20)>>>2)&0x3ff]; if(r30 != r3) { /* Next insn is delay slot */ pc=0x315b8; continue; } r4 = r21 + r0; case 0x31600: pc=0x31600; 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: r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x3160c; return; case 0x3160c: /* Next insn is delay slot */ pc=0x315b8; run_31400(); return; case 0x31614: r18 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; if(r18 != r0) { /* Next insn is delay slot */ pc=0x31590; run_31400(); return; } case 0x31624: r19 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; if(r19 != r0) { /* Next insn is delay slot */ pc=0x31570; run_31400(); return; } case 0x31634: r20 = readPages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff]; if(r20 != r0) { /* Next insn is delay slot */ pc=0x31550; run_31400(); return; } case 0x31644: r23 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; if(r23 != r0) { /* Next insn is delay slot */ pc=0x31530; run_31400(); return; } case 0x31654: r22 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; if(r22 != r0) { /* Next insn is delay slot */ pc=0x31500; run_31400(); return; } case 0x31664: r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x314c0; run_31400(); return; } case 0x31680: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3147c; run_31400(); return; } case 0x3169c: r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x31440; run_31400(); return; } r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x316ec: r4 = r18 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x316fc; return; case 0x316fc: /* Next insn is delay slot */ pc=0x315a0; run_31400(); return; case 0x31704: r4 = r19 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x31714; return; case 0x31714: /* Next insn is delay slot */ pc=0x31580; run_31400(); return; case 0x3171c: r4 = r20 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x3172c; return; case 0x3172c: /* Next insn is delay slot */ pc=0x31560; run_31400(); return; case 0x31734: r4 = r23 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r17; r31=0x31744; return; case 0x31744: /* Next insn is delay slot */ pc=0x31540; run_31400(); return; case 0x31800: pc=0x31800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_31800() throws ExecutionException { /* 0x31800 - 0x31a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x31800: r29 = r29 + -48; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r20 = r4 + r0; r17 = r5 + r0; r19 = r6 + r0; r18 = r7 + r0; r21 = r4 + 1024; case 0x31834: r16 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; if(r16 != r0) { /* Next insn is delay slot */ pc=0x31880; continue; } /* Next insn is delay slot */ pc=0x318a8; continue; case 0x3184c: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x31870; continue; } r5 = r17 + r0; r6 = r19 + r0; r7 = r18 + r0; /* Next insn is delay slot */ r31=0x31870; pc=0x31400; run_31400(); return; case 0x31870: r16 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x318a8; continue; } case 0x31880: r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; if(r2 != r17) { /* Next insn is delay slot */ pc=0x3184c; continue; } r4 = r16 + r0; r5 = r18 + r0; /* Next insn is delay slot */ pc=r19; r31=0x318a0; return; case 0x318a0: /* Next insn is delay slot */ pc=0x3184c; continue; case 0x318a8: r20 = r20 + 4; if(r20 != r21) { /* Next insn is delay slot */ pc=0x31834; continue; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; 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: r2 = readPages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff]; r3 = readPages[(r28+-30660)>>>12][((r28+-30660)>>>2)&0x3ff]; r2 = r3 | r2; /* Next insn is delay slot */ pc=r31; return; case 0x31c00: pc=0x31c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_31c00() throws ExecutionException { /* 0x31c00 - 0x31e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x31c00: r29 = r29 + -24; r2 = r0 + 1; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff]; writePages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x31c20; pc=0x1b600; run_1b600(); return; case 0x31c20: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff] = r16; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; 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: writePages[(r28+-30660)>>>12][((r28+-30660)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=r31; return; case 0x32000: pc=0x32000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_32000() throws ExecutionException { /* 0x32000 - 0x32200 */ int addr, tmp; for(;;) { switch(pc) { case 0x32000: r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x32034; continue; } r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x32034; continue; } r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3203c; continue; } case 0x32034: /* Next insn is delay slot */ pc=r31; return; case 0x3203c: r4 = 7 << 16; r4 = r4 + -484; /* Next insn is delay slot */ pc=0x1ac00; run_1ac00(); return; case 0x32200: pc=0x32200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_32200() throws ExecutionException { /* 0x32200 - 0x32400 */ int addr, tmp; for(;;) { switch(pc) { case 0x32200: r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x32244; continue; } r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r2 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x32244; continue; } r3 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r0 + 1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x32244; continue; } r4 = 7 << 16; r4 = r4 + -452; /* Next insn is delay slot */ pc=0x1ac00; run_1ac00(); return; case 0x32244: /* Next insn is delay slot */ pc=r31; return; case 0x32400: pc=0x32400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_32400() throws ExecutionException { /* 0x32400 - 0x32600 */ int addr, tmp; for(;;) { switch(pc) { case 0x32400: r29 = r29 + -32; r2 = f13; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r2 + r0; r2 = 17424 << 16; r2 = r16 < r2 ? 1 : 0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; f0 = f12; f1 = f13; if(r2 != r0) { /* Next insn is delay slot */ pc=0x32480; continue; } r2 = 32752 << 16; r3 = r2 + 1; r3 = r16 < r3 ? 1 : 0; r5 = f12; if(r3 == r0) { /* Next insn is delay slot */ pc=0x32608; run_32600(); return; } if(r16 == r2) { /* Next insn is delay slot */ pc=0x32600; run_32600(); return; } case 0x32458: if(r17 <= 0) { /* Next insn is delay slot */ pc=0x326bc; run_32600(); return; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f0 = readPages[(r28+-32220)>>>12][((r28+-32220)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = readPages[(r28+-32224)>>>12][((r28+-32224)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x32480: r2 = 16348 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x32660; run_32600(); return; } r2 = 15904 << 16; r16 = r16 < r2 ? 1 : 0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x32624; run_32600(); return; } case 0x324a0: r2 = r0 + -1; case 0x324a4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-32164)>>>12][((r28+-32164)>>>2)&0x3ff]; f8 = readPages[(r28+-32156)>>>12][((r28+-32156)>>>2)&0x3ff]; f7 = readPages[(r28+-32168)>>>12][((r28+-32168)>>>2)&0x3ff]; f9 = readPages[(r28+-32160)>>>12][((r28+-32160)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = r0 + -1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32148)>>>12][((r28+-32148)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32152)>>>12][((r28+-32152)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32140)>>>12][((r28+-32140)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32144)>>>12][((r28+-32144)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32132)>>>12][((r28+-32132)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32136)>>>12][((r28+-32136)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32124)>>>12][((r28+-32124)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32128)>>>12][((r28+-32128)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32108)>>>12][((r28+-32108)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-32116)>>>12][((r28+-32116)>>>2)&0x3ff]; f9 = readPages[(r28+-32112)>>>12][((r28+-32112)>>>2)&0x3ff]; f7 = readPages[(r28+-32120)>>>12][((r28+-32120)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32100)>>>12][((r28+-32100)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32104)>>>12][((r28+-32104)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32092)>>>12][((r28+-32092)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32096)>>>12][((r28+-32096)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-32084)>>>12][((r28+-32084)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-32088)>>>12][((r28+-32088)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } if(r2 == r3) { /* Next insn is delay slot */ pc=0x326e8; run_32600(); return; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r5 = 7 << 16; r6 = 7 << 16; r4 = r2 << 3; r5 = r5 + -384; r6 = r6 + -416; r5 = r4 + r5; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } 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; } r3 = f4; r2 = f5; if(r17 < 0) { /* Next insn is delay slot */ pc=0x326d0; run_32600(); return; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f0 = r3; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = r2; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; 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: if(r5 == r0) { /* Next insn is delay slot */ pc=0x32458; run_32400(); return; } case 0x32608: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x3260c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x32624: f4 = readPages[(r28+-32204)>>>12][((r28+-32204)>>>2)&0x3ff]; f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; f5 = readPages[(r28+-32208)>>>12][((r28+-32208)>>>2)&0x3ff]; f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x324a0; run_32400(); return; } 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 0x32660: /* Next insn is delay slot */ r31=0x32668; pc=0x32a00; run_32a00(); return; case 0x32668: r2 = 16371 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x326fc; continue; } r2 = 16358 << 16; r16 = r16 < r2 ? 1 : 0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x32758; continue; } f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; r2 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-32188)>>>12][((r28+-32188)>>>2)&0x3ff]; f5 = readPages[(r28+-32192)>>>12][((r28+-32192)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x324a4; run_32400(); return; case 0x326bc: f0 = readPages[(r28+-32212)>>>12][((r28+-32212)>>>2)&0x3ff]; f1 = readPages[(r28+-32216)>>>12][((r28+-32216)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3260c; continue; case 0x326d0: r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; /* Next insn is delay slot */ pc=0x3260c; continue; case 0x326e8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x3260c; continue; case 0x326fc: r2 = 16387 << 16; r2 = r2 | 32768; r16 = r16 < r2 ? 1 : 0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x3273c; continue; } f2 = readPages[(r28+-32180)>>>12][((r28+-32180)>>>2)&0x3ff]; f6 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; f3 = readPages[(r28+-32184)>>>12][((r28+-32184)>>>2)&0x3ff]; f7 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = r0 + 2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x324a4; run_32400(); return; case 0x3273c: f2 = readPages[(r28+-32172)>>>12][((r28+-32172)>>>2)&0x3ff]; r2 = r0 + 3; f3 = readPages[(r28+-32176)>>>12][((r28+-32176)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x324a4; run_32400(); return; case 0x32758: f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; r2 = r0 + 1; f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x324a4; run_32400(); return; case 0x32800: pc=0x32800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_32800() throws ExecutionException { /* 0x32800 - 0x32a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x32800: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 16361 << 16; r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; if(r3 != r0) { /* Next insn is delay slot */ pc=0x328bc; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x32860; 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; } r3 = f2; r2 = f3; case 0x32848: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x32860: r6 = r29 + 24; /* Next insn is delay slot */ r31=0x3286c; pc=0x35200; run_35200(); return; case 0x3286c: r2 = r2 & 3; r3 = r0 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x32934; continue; } r4 = r0 + 2; if(r2 == r4) { /* Next insn is delay slot */ pc=0x328f0; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x32958; continue; } f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x328ac; pc=0x36e00; run_36e00(); return; case 0x328ac: r3 = f0; r2 = f1; /* Next insn is delay slot */ pc=0x32848; continue; case 0x328bc: f14 = r0; f15 = r0; /* Next insn is delay slot */ r31=0x328d0; pc=0x35c00; run_35c00(); return; case 0x328d0: r3 = f0; r2 = f1; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x328f0: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x32908; pc=0x35c00; run_35c00(); return; case 0x32908: r5 = f0; r4 = f1; r3 = r5 + r0; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x32934: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x32950; pc=0x36e00; run_36e00(); return; case 0x32950: /* Next insn is delay slot */ pc=0x32908; continue; case 0x32958: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x32970; pc=0x35c00; run_35c00(); return; case 0x32970: r3 = f0; r2 = f1; /* Next insn is delay slot */ pc=0x32848; continue; 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: r3 = f12; r4 = f13; r5 = 32767 << 16; r5 = r5 | 65535; f0 = r3; r2 = r5 & r4; f1 = r2; /* Next insn is delay slot */ pc=r31; 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: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 16361 << 16; r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; if(r3 != r0) { /* Next insn is delay slot */ pc=0x32cd4; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x32c60; 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; } r3 = f2; r2 = f3; case 0x32c48: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x32c60: r6 = r29 + 24; /* Next insn is delay slot */ r31=0x32c6c; pc=0x35200; run_35200(); return; case 0x32c6c: r2 = r2 & 3; r3 = r0 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x32d2c; continue; } r4 = r0 + 2; if(r2 == r4) { /* Next insn is delay slot */ pc=0x32d08; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x32d54; continue; } f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x32ca8; pc=0x35c00; run_35c00(); return; case 0x32ca8: r5 = f0; r4 = f1; r3 = r5 + r0; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x32cd4: f14 = r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r0; f15 = r0; /* Next insn is delay slot */ r31=0x32ce8; pc=0x36e00; run_36e00(); return; case 0x32ce8: r3 = f0; r2 = f1; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x32d08: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x32d24; pc=0x36e00; run_36e00(); return; case 0x32d24: /* Next insn is delay slot */ pc=0x32ca8; continue; case 0x32d2c: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x32d44; pc=0x35c00; run_35c00(); return; case 0x32d44: r3 = f0; r2 = f1; /* Next insn is delay slot */ pc=0x32c48; continue; case 0x32d54: f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x32d70; pc=0x36e00; run_36e00(); return; case 0x32d70: r3 = f0; r2 = f1; /* Next insn is delay slot */ pc=0x32c48; continue; 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: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 16361 << 16; r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; if(r3 != r0) { /* Next insn is delay slot */ pc=0x32e98; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x32e50; 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; } r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x32e50: r6 = r29 + 24; /* Next insn is delay slot */ r31=0x32e5c; pc=0x35200; run_35200(); return; case 0x32e5c: r2 = r2 & 1; f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = r0 + 1; r2 = r2 << 1; r2 = r3 - r2; f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x32e88; pc=0x37000; run_37000(); return; case 0x32e88: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x32e98: f14 = r0; r2 = r0 + 1; f15 = r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x32eb0; pc=0x37000; run_37000(); return; case 0x32eb0: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; 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: 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; f20 = f12; f21 = f13; /* Next insn is delay slot */ r31=0x33024; pc=0x33a00; run_33a00(); return; case 0x33024: r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; r2 = r0 + -1; f22 = f0; f23 = f1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3304c; continue; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x33044; pc=0x37a00; run_37a00(); return; case 0x33044: if(r2 != r0) { /* Next insn is delay slot */ pc=0x33070; continue; } case 0x3304c: f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f0 = f22; f1 = f23; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x33070: f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x3307c; pc=0x32a00; run_32a00(); return; case 0x3307c: f2 = readPages[(r28+-32076)>>>12][((r28+-32076)>>>2)&0x3ff]; f3 = readPages[(r28+-32080)>>>12][((r28+-32080)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x3304c; continue; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = 7 << 16; r2 = 7 << 16; r2 = r2 + -352; r4 = r4 + -12264; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; /* Next insn is delay slot */ r31=0x330d4; pc=0x37e00; run_37e00(); return; case 0x330d4: r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; r2 = r0 + 2; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x33138; continue; } r4 = r29 + 16; /* Next insn is delay slot */ r31=0x330f8; pc=0x37c00; run_37c00(); return; case 0x330f8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33138; continue; } case 0x33100: r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x33150; continue; } case 0x33110: f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x33138: /* Next insn is delay slot */ r31=0x33140; pc=0x38c00; run_38c00(); return; case 0x33140: r3 = r0 + 33; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x33100; continue; case 0x33150: /* Next insn is delay slot */ r31=0x33158; pc=0x38c00; run_38c00(); return; case 0x33158: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x33110; continue; case 0x33200: pc=0x33200; 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: 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; f20 = f12; f21 = f13; /* Next insn is delay slot */ r31=0x33224; pc=0x34000; run_34000(); return; case 0x33224: r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; r2 = r0 + -1; f22 = f0; f23 = f1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3324c; continue; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x33244; pc=0x37a00; run_37a00(); return; case 0x33244: if(r2 != r0) { /* Next insn is delay slot */ pc=0x33270; continue; } case 0x3324c: f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f0 = f22; f1 = f23; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x33270: f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x3327c; pc=0x32a00; run_32a00(); return; case 0x3327c: f2 = readPages[(r28+-32068)>>>12][((r28+-32068)>>>2)&0x3ff]; f3 = readPages[(r28+-32072)>>>12][((r28+-32072)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x3324c; continue; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = 7 << 16; r2 = 7 << 16; r2 = r2 + -344; r4 = r4 + -12264; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; /* Next insn is delay slot */ r31=0x332d4; pc=0x37e00; run_37e00(); return; case 0x332d4: r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; r2 = r0 + 2; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(r3 == r2) { /* Next insn is delay slot */ pc=0x33338; continue; } r4 = r29 + 16; /* Next insn is delay slot */ r31=0x332f8; pc=0x37c00; run_37c00(); return; case 0x332f8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33338; continue; } case 0x33300: r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x33350; continue; } case 0x33310: f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x33338: /* Next insn is delay slot */ r31=0x33340; pc=0x38c00; run_38c00(); return; case 0x33340: r3 = r0 + 33; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x33300; continue; case 0x33350: /* Next insn is delay slot */ r31=0x33358; pc=0x38c00; run_38c00(); return; case 0x33358: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x33310; continue; case 0x33400: pc=0x33400; 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: 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; f24 = f12; f25 = f13; f20 = f14; f21 = f15; /* Next insn is delay slot */ r31=0x3343c; pc=0x34600; run_34600(); return; case 0x3343c: r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; r16 = r0 + -1; f22 = f0; f23 = f1; if(r2 == r16) { /* Next insn is delay slot */ pc=0x33464; continue; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x3345c; pc=0x37a00; run_37a00(); return; case 0x3345c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3349c; continue; } case 0x33464: f0 = f22; f1 = f23; case 0x33468: f26 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; f24 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f27 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; f25 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r29 = r29 + 96; /* Next insn is delay slot */ pc=r31; return; case 0x3349c: f12 = f24; f13 = f25; /* Next insn is delay slot */ r31=0x334a8; pc=0x37a00; run_37a00(); return; case 0x334a8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3356c; continue; } f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x33464; continue; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; f0 = readPages[(r28+-32060)>>>12][((r28+-32060)>>>2)&0x3ff]; r2 = 7 << 16; r2 = r2 + -336; f1 = readPages[(r28+-32064)>>>12][((r28+-32064)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(r2 == r16) { /* Next insn is delay slot */ pc=0x33558; continue; } r3 = r0 + 2; if(r2 == r3) { /* Next insn is delay slot */ pc=0x33558; continue; } case 0x33520: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x3352c; pc=0x37c00; run_37c00(); return; case 0x3352c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33750; run_33600(); return; } case 0x33534: r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x33558; continue; } case 0x33544: /* Next insn is delay slot */ r31=0x3354c; pc=0x38c00; run_38c00(); return; case 0x3354c: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; case 0x33558: f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x33468; continue; case 0x3356c: f26 = r0; f27 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x335f8; continue; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x336c0; run_33600(); return; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -336; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; if(r2 == r0) { /* Next insn is delay slot */ pc=0x33520; continue; } f0 = readPages[(r28+-32060)>>>12][((r28+-32060)>>>2)&0x3ff]; f1 = readPages[(r28+-32064)>>>12][((r28+-32064)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x33558; continue; case 0x335f8: f12 = f22; f13 = f23; /* Next insn is delay slot */ r31=0x33604; pc=0x37400; run_37400(); 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: case 0x33604: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33768; continue; } case 0x3360c: f26 = r0; f27 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x33464; run_33400(); return; } f12 = f24; f13 = f25; /* Next insn is delay slot */ r31=0x33638; pc=0x37400; run_37400(); return; case 0x33638: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33464; run_33400(); return; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x3364c; pc=0x37400; run_37400(); return; case 0x3364c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33464; run_33400(); return; } r2 = r0 + 4; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -336; r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = r0 + 2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3387c; run_33800(); return; } case 0x33694: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x336a0; pc=0x37c00; run_37c00(); return; case 0x336a0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3387c; run_33800(); return; } case 0x336a8: r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x33558; run_33400(); return; } /* Next insn is delay slot */ pc=0x33544; run_33400(); return; case 0x336c0: f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x336cc; pc=0x37400; run_37400(); return; case 0x336cc: if(r2 == r0) { /* Next insn is delay slot */ pc=0x33464; run_33400(); return; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x33464; run_33400(); return; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -336; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3380c; run_33800(); return; } f0 = readPages[(r28+-32052)>>>12][((r28+-32052)>>>2)&0x3ff]; r3 = r0 + 2; f1 = readPages[(r28+-32056)>>>12][((r28+-32056)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x337f0; continue; } case 0x33738: /* Next insn is delay slot */ r31=0x33740; pc=0x38c00; run_38c00(); return; case 0x33740: r3 = r0 + 33; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x336a8; continue; case 0x33750: /* Next insn is delay slot */ r31=0x33758; pc=0x38c00; run_38c00(); return; case 0x33758: r3 = r0 + 33; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x33534; run_33400(); return; case 0x33768: f12 = f24; f13 = f25; /* Next insn is delay slot */ r31=0x33774; pc=0x37400; run_37400(); return; case 0x33774: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3360c; continue; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x33788; pc=0x37400; run_37400(); return; case 0x33788: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3360c; continue; } f12 = f22; f13 = f23; /* Next insn is delay slot */ r31=0x3379c; pc=0x37a00; run_37a00(); return; case 0x3379c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3381c; run_33800(); return; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -336; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3380c; run_33800(); return; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))/(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } r3 = r0 + 2; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; if(r2 == r3) { /* Next insn is delay slot */ pc=0x33738; continue; } case 0x337f0: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x337fc; pc=0x37c00; run_37c00(); return; case 0x337fc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x336a8; continue; } 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: /* Next insn is delay slot */ pc=0x33738; run_33600(); return; case 0x3380c: writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; /* Next insn is delay slot */ pc=0x337f0; run_33600(); return; case 0x3381c: r2 = r0 + 3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -336; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; if(r2 != r0) { /* Next insn is delay slot */ pc=0x33894; continue; } f0 = readPages[(r28+-32044)>>>12][((r28+-32044)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); f1 = readPages[(r28+-32048)>>>12][((r28+-32048)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x33908; continue; } case 0x33870: r3 = r0 + 2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x33694; run_33600(); return; } case 0x3387c: /* Next insn is delay slot */ r31=0x33884; pc=0x38c00; run_38c00(); return; case 0x33884: r3 = r0 + 34; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x336a8; run_33600(); return; case 0x33894: f0 = readPages[(r28+-32020)>>>12][((r28+-32020)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); f1 = readPages[(r28+-32024)>>>12][((r28+-32024)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x33870; continue; } f0 = readPages[(r28+-32036)>>>12][((r28+-32036)>>>2)&0x3ff]; f1 = readPages[(r28+-32040)>>>12][((r28+-32040)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x338d4; pc=0x38000; run_38000(); return; case 0x338d4: fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x338fc; continue; } f0 = readPages[(r28+-32052)>>>12][((r28+-32052)>>>2)&0x3ff]; f1 = readPages[(r28+-32056)>>>12][((r28+-32056)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; case 0x338fc: r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x33870; continue; case 0x33908: f0 = readPages[(r28+-32036)>>>12][((r28+-32036)>>>2)&0x3ff]; f1 = readPages[(r28+-32040)>>>12][((r28+-32040)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x33928; pc=0x38000; run_38000(); return; case 0x33928: fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x338fc; continue; } f0 = readPages[(r28+-32028)>>>12][((r28+-32028)>>>2)&0x3ff]; r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; f1 = readPages[(r28+-32032)>>>12][((r28+-32032)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x33870; continue; case 0x33a00: pc=0x33a00; 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: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r6 = r2 + r0; r2 = r3 & r2; r3 = 16368 << 16; r29 = r29 + -48; r4 = r2 < r3 ? 1 : 0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f24; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f25; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f22; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f23; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; if(r4 != r0) { /* Next insn is delay slot */ pc=0x33a94; continue; } r5 = f12; r2 = r2 - r3; r2 = r2 | r5; if(r2 != r0) { /* Next insn is delay slot */ pc=0x33c24; run_33c00(); return; } if(r6 <= 0) { /* Next insn is delay slot */ pc=0x33d6c; run_33c00(); return; } f0 = r0; f1 = r0; case 0x33a6c: f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x33a94: r3 = 16352 << 16; r3 = r2 < r3 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x33be0; continue; } if(r6 < 0) { /* Next insn is delay slot */ pc=0x33d80; run_33c00(); return; } f22 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; f0 = readPages[(r28+-31900)>>>12][((r28+-31900)>>>2)&0x3ff]; f23 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; f1 = readPages[(r28+-31904)>>>12][((r28+-31904)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x33ad0; pc=0x35800; run_35800(); return; case 0x33ad0: f12 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; f4 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; f13 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; f5 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f6 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; r3 = r0 + r0; f7 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; r2 = f1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f4 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; f2 = r3; f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f3 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f4 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f4 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f4 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f4 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x33be0: r3 = 15456 << 16; r3 = r3 + 1; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x33c54; run_33c00(); return; } f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; case 0x33c00: pc=0x33c00; 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: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f0 = readPages[(r28+-32004)>>>12][((r28+-32004)>>>2)&0x3ff]; f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f1 = readPages[(r28+-32008)>>>12][((r28+-32008)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x33c24: f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x33c54: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; f4 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; f1 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; f5 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f6 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f7 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; f5 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31908)>>>12][((r28+-31908)>>>2)&0x3ff]; f3 = readPages[(r28+-31912)>>>12][((r28+-31912)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f0 = readPages[(r28+-32004)>>>12][((r28+-32004)>>>2)&0x3ff]; f1 = readPages[(r28+-32008)>>>12][((r28+-32008)>>>2)&0x3ff]; r29 = r29 + 48; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x33d6c: f0 = readPages[(r28+-32012)>>>12][((r28+-32012)>>>2)&0x3ff]; f1 = readPages[(r28+-32016)>>>12][((r28+-32016)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x33a6c; run_33a00(); return; case 0x33d80: f24 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; f0 = readPages[(r28+-31900)>>>12][((r28+-31900)>>>2)&0x3ff]; f25 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; f1 = readPages[(r28+-31904)>>>12][((r28+-31904)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f20 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } f21 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; f0 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; f2 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; f1 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f3 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; f12 = f22; f13 = f23; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f0 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f1 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f0 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f1 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f2 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f3 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } case 0x33e00: pc=0x33e00; 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: /* Next insn is delay slot */ r31=0x33e08; pc=0x35800; run_35800(); return; case 0x33e08: f12 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; f2 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; f13 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; f3 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f2 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f3 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f2 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f3 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f2 = readPages[(r28+-31908)>>>12][((r28+-31908)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } f3 = readPages[(r28+-31912)>>>12][((r28+-31912)>>>2)&0x3ff]; f12 = readPages[(r28+-32012)>>>12][((r28+-32012)>>>2)&0x3ff]; f13 = readPages[(r28+-32016)>>>12][((r28+-32016)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x33a6c; run_33a00(); return; case 0x34000: pc=0x34000; 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: r29 = r29 + -56; r2 = f13; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r2 + r0; r2 = 16368 << 16; r3 = r16 < r2 ? 1 : 0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f24; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f25; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f22; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f23; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; if(r3 != r0) { /* Next insn is delay slot */ pc=0x340a8; continue; } r5 = f12; r2 = r16 - r2; r2 = r2 | r5; if(r2 == r0) { /* Next insn is delay slot */ pc=0x340fc; 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; } r3 = f2; r2 = f3; case 0x34070: f24 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; 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]; f1 = r2; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x340a8: r2 = 16352 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x34138; continue; } r2 = 15936 << 16; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x342e8; run_34200(); return; } f0 = readPages[(r28+-31876)>>>12][((r28+-31876)>>>2)&0x3ff]; f22 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; f1 = readPages[(r28+-31880)>>>12][((r28+-31880)>>>2)&0x3ff]; f23 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x34144; continue; } r3 = f12; r2 = f13; /* Next insn is delay slot */ pc=0x34070; continue; case 0x340fc: f0 = readPages[(r28+-31892)>>>12][((r28+-31892)>>>2)&0x3ff]; f1 = readPages[(r28+-31896)>>>12][((r28+-31896)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; f1 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r3 = f0; r2 = f1; /* Next insn is delay slot */ pc=0x34070; continue; case 0x34138: f22 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; f23 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; case 0x34144: /* Next insn is delay slot */ r31=0x3414c; pc=0x32a00; run_32a00(); return; case 0x3414c: f2 = readPages[(r28+-31780)>>>12][((r28+-31780)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f3 = readPages[(r28+-31784)>>>12][((r28+-31784)>>>2)&0x3ff]; f24 = readPages[(r28+-31860)>>>12][((r28+-31860)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f25 = readPages[(r28+-31864)>>>12][((r28+-31864)>>>2)&0x3ff]; f0 = readPages[(r28+-31852)>>>12][((r28+-31852)>>>2)&0x3ff]; f2 = readPages[(r28+-31828)>>>12][((r28+-31828)>>>2)&0x3ff]; f1 = readPages[(r28+-31856)>>>12][((r28+-31856)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f3 = readPages[(r28+-31832)>>>12][((r28+-31832)>>>2)&0x3ff]; f4 = readPages[(r28+-31820)>>>12][((r28+-31820)>>>2)&0x3ff]; f12 = f20; f13 = f21; f5 = readPages[(r28+-31824)>>>12][((r28+-31824)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f0 = readPages[(r28+-31844)>>>12][((r28+-31844)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f1 = readPages[(r28+-31848)>>>12][((r28+-31848)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f0 = readPages[(r28+-31836)>>>12][((r28+-31836)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f1 = readPages[(r28+-31840)>>>12][((r28+-31840)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f0 = readPages[(r28+-31812)>>>12][((r28+-31812)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f1 = readPages[(r28+-31816)>>>12][((r28+-31816)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f2 = readPages[(r28+-31804)>>>12][((r28+-31804)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } f3 = readPages[(r28+-31808)>>>12][((r28+-31808)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31796)>>>12][((r28+-31796)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f3 = readPages[(r28+-31800)>>>12][((r28+-31800)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31788)>>>12][((r28+-31788)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f3 = readPages[(r28+-31792)>>>12][((r28+-31792)>>>2)&0x3ff]; case 0x34200: pc=0x34200; 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: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } /* Next insn is delay slot */ r31=0x34218; pc=0x35800; run_35800(); return; case 0x34218: r2 = 16367 << 16; r2 = r2 + 13107; r16 = r16 < r2 ? 1 : 0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x34274; continue; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } f4 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; f2 = readPages[(r28+-31892)>>>12][((r28+-31892)>>>2)&0x3ff]; f5 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; f3 = readPages[(r28+-31896)>>>12][((r28+-31896)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r5 = f4; r4 = f5; case 0x3425c: if(r17 <= 0) { /* Next insn is delay slot */ pc=0x343f0; continue; } r3 = r5 + r0; r2 = r4 + r0; /* Next insn is delay slot */ pc=0x34070; run_34000(); return; case 0x34274: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } r3 = r0 + r0; r2 = f1; f2 = r3; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f3 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f22 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } f23 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31772)>>>12][((r28+-31772)>>>2)&0x3ff]; f5 = readPages[(r28+-31776)>>>12][((r28+-31776)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r5 = f2; r4 = f3; /* Next insn is delay slot */ pc=0x3425c; continue; case 0x342e8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31860)>>>12][((r28+-31860)>>>2)&0x3ff]; f3 = readPages[(r28+-31864)>>>12][((r28+-31864)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-31852)>>>12][((r28+-31852)>>>2)&0x3ff]; f3 = readPages[(r28+-31856)>>>12][((r28+-31856)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-31844)>>>12][((r28+-31844)>>>2)&0x3ff]; f3 = readPages[(r28+-31848)>>>12][((r28+-31848)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-31836)>>>12][((r28+-31836)>>>2)&0x3ff]; f3 = readPages[(r28+-31840)>>>12][((r28+-31840)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-31828)>>>12][((r28+-31828)>>>2)&0x3ff]; f3 = readPages[(r28+-31832)>>>12][((r28+-31832)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-31820)>>>12][((r28+-31820)>>>2)&0x3ff]; f3 = readPages[(r28+-31824)>>>12][((r28+-31824)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31804)>>>12][((r28+-31804)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f2 = readPages[(r28+-31812)>>>12][((r28+-31812)>>>2)&0x3ff]; f5 = readPages[(r28+-31808)>>>12][((r28+-31808)>>>2)&0x3ff]; f3 = readPages[(r28+-31816)>>>12][((r28+-31816)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31796)>>>12][((r28+-31796)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31800)>>>12][((r28+-31800)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31788)>>>12][((r28+-31788)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31792)>>>12][((r28+-31792)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; f3 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r3 = f4; r2 = f5; /* Next insn is delay slot */ pc=0x34070; run_34000(); return; case 0x343f0: r6 = 32768 << 16; r2 = r4 ^ r6; r3 = r5 + r0; /* Next insn is delay slot */ pc=0x34070; run_34000(); return; case 0x34400: pc=0x34400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_34400() throws ExecutionException { /* 0x34400 - 0x34600 */ int addr, tmp; for(;;) { switch(pc) { case 0x34400: 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 = f15; r4 = 32767 << 16; r29 = r29 + -72; r3 = f14; r4 = r4 | 65535; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; r21 = r4 & r2; r5 = r21 | r3; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f20; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f21; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; f20 = f12; f21 = f13; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = f14; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = f15; r19 = f12; r18 = f13; if(r5 == r0) { /* Next insn is delay slot */ pc=0x346c0; continue; } r22 = r4 & r18; r4 = 32752 << 16; r5 = r4 + 1; r5 = r22 < r5 ? 1 : 0; r16 = r18 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x346ac; continue; } r23 = r19 + r0; r30 = r2 + r0; r6 = r3 + r0; if(r22 == r4) { /* Next insn is delay slot */ pc=0x347e0; continue; } case 0x34698: r4 = 32752 << 16; r5 = r4 + 1; r5 = r21 < r5 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3474c; continue; } case 0x346ac: r4 = 49168 << 16; r22 = r22 + r4; r22 = r22 | r19; if(r22 != r0) { /* Next insn is delay slot */ pc=0x34708; continue; } case 0x346c0: f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; case 0x346cc: f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r29 = r29 + 72; /* Next insn is delay slot */ pc=r31; return; case 0x34708: f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r4 = 7 << 16; r4 = r4 + -12264; r29 = r29 + 72; /* Next insn is delay slot */ pc=0x37e00; run_37e00(); return; case 0x3474c: if(r21 == r4) { /* Next insn is delay slot */ pc=0x34878; run_34800(); return; } case 0x34754: if(r16 < 0) { /* Next insn is delay slot */ pc=0x348cc; run_34800(); return; } case 0x3475c: r20 = r0 + r0; case 0x34760: if(r6 != r0) { /* Next insn is delay slot */ pc=0x347f4; continue; } r2 = 32752 << 16; if(r21 == r2) { /* Next insn is delay slot */ pc=0x34988; run_34800(); return; } case 0x34774: r2 = 16368 << 16; if(r21 == r2) { /* Next insn is delay slot */ pc=0x34928; run_34800(); return; } r2 = 16384 << 16; if(r30 == r2) { /* Next insn is delay slot */ pc=0x34ed8; run_34e00(); return; } r2 = 16352 << 16; if(r30 != r2) { /* Next insn is delay slot */ pc=0x347f4; continue; } if(r16 < 0) { /* Next insn is delay slot */ pc=0x347f4; 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]; r29 = r29 + 72; /* Next insn is delay slot */ pc=0x35800; run_35800(); return; case 0x347e0: if(r19 != r0) { /* Next insn is delay slot */ pc=0x346ac; continue; } /* Next insn is delay slot */ pc=0x34698; continue; case 0x347f0: r20 = r0 + r0; case 0x347f4: f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x34800; pc=0x32a00; run_32a00(); 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: r3 = f0; r2 = f1; if(r23 == r0) { /* Next insn is delay slot */ pc=0x34888; continue; } case 0x34810: r18 = r18 >>> 31; r18 = r18 + -1; r4 = r20 | r18; if(r4 == r0) { /* Next insn is delay slot */ pc=0x349d4; continue; } r4 = 16864 << 16; r4 = r4 + 1; r4 = r21 < r4 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x349e4; continue; } r4 = 17392 << 16; r4 = r4 + 1; r21 = r21 < r4 ? 1 : 0; if(r21 != r0) { /* Next insn is delay slot */ pc=0x34f80; run_34e00(); return; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; if(r22 == r0) { /* Next insn is delay slot */ pc=0x34964; continue; } case 0x3485c: if(r30 < 0) { /* Next insn is delay slot */ pc=0x3496c; continue; } case 0x34864: f0 = r0; f1 = r0; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34878: if(r6 == r0) { /* Next insn is delay slot */ pc=0x34754; run_34600(); return; } /* Next insn is delay slot */ pc=0x346ac; run_34600(); return; case 0x34888: if(r22 == r0) { /* Next insn is delay slot */ pc=0x348a8; continue; } r5 = 16383 << 16; r5 = r5 | 65535; r5 = r5 & r18; r4 = 16368 << 16; if(r5 != r4) { /* Next insn is delay slot */ pc=0x34810; continue; } case 0x348a8: if(r30 < 0) { /* Next insn is delay slot */ pc=0x3493c; continue; } case 0x348b0: if(r16 < 0) { /* Next insn is delay slot */ pc=0x34ea0; run_34e00(); return; } case 0x348b8: f0 = r3; f1 = r2; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x348cc: r4 = 17216 << 16; r4 = r21 < r4 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x349c8; continue; } r4 = 16368 << 16; r4 = r21 < r4 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3475c; run_34600(); return; } r4 = r21 >> 20; r5 = r4 < 1044 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x350bc; run_35000(); return; } r2 = r0 + 1075; r4 = r2 - r4; r2 = r3 >>> (r4&0x1f); r4 = r2 << (r4&0x1f); if(r4 != r6) { /* Next insn is delay slot */ pc=0x3475c; run_34600(); return; } r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; /* Next insn is delay slot */ pc=0x34760; run_34600(); return; case 0x34928: if(r30 < 0) { /* Next insn is delay slot */ pc=0x3505c; run_35000(); return; } f0 = f20; f1 = f21; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x3493c: f2 = r3; f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; f3 = r2; f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = f2; r2 = f3; /* Next insn is delay slot */ pc=0x348b0; continue; case 0x34964: if(r30 <= 0) { /* Next insn is delay slot */ pc=0x34864; continue; } case 0x3496c: f0 = readPages[(r28+-31748)>>>12][((r28+-31748)>>>2)&0x3ff]; f1 = readPages[(r28+-31752)>>>12][((r28+-31752)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34988: r2 = 49168 << 16; r2 = r22 + r2; r2 = r2 | r19; if(r2 == r0) { /* Next insn is delay slot */ pc=0x346c0; run_34600(); return; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; if(r22 != r0) { /* Next insn is delay slot */ pc=0x34f58; run_34e00(); return; } if(r30 < 0) { /* Next insn is delay slot */ pc=0x34864; continue; } f0 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x349c8: r20 = r0 + 2; /* Next insn is delay slot */ pc=0x34760; run_34600(); return; case 0x349d4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x349e4: r4 = 16 << 16; r4 = r22 < r4 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x35050; run_35000(); return; } f4 = r3; f0 = readPages[(r28+-31692)>>>12][((r28+-31692)>>>2)&0x3ff]; f5 = r2; 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: f1 = readPages[(r28+-31696)>>>12][((r28+-31696)>>>2)&0x3ff]; r4 = r0 + -53; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r2 = f5; r3 = f4; r22 = r2 + r0; case 0x34a18: r8 = r22 >> 20; r8 = r8 + -1023; r8 = r8 + r4; r4 = 15 << 16; r4 = r4 | 65535; r22 = r22 & r4; r4 = 3 << 16; r4 = r4 | 39055; r10 = 16368 << 16; r4 = r22 < r4 ? 1 : 0; r10 = r22 | r10; if(r4 != r0) { /* Next insn is delay slot */ pc=0x35040; run_35000(); return; } r4 = 11 << 16; r4 = r4 | 46714; r22 = r22 < r4 ? 1 : 0; if(r22 != r0) { /* Next insn is delay slot */ pc=0x3510c; run_35000(); return; } r4 = 65520 << 16; r8 = r8 + 1; r10 = r10 + r4; r11 = r0 + r0; r9 = r0 + r0; case 0x34a74: r4 = 7 << 16; r9 = r9 << 3; r4 = r4 + -296; r4 = r9 + r4; f14 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; f16 = r3; f15 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; f17 = r10; f12 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))+(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f13 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r7 = r0 + r0; f4 = r7; r7 = r10 >> 1; r5 = r0 + r0; f8 = r5; r5 = r0 + r0; f18 = readPages[(r28+-31612)>>>12][((r28+-31612)>>>2)&0x3ff]; r2 = 7 << 16; f19 = readPages[(r28+-31616)>>>12][((r28+-31616)>>>2)&0x3ff]; r2 = r2 + -328; r2 = r9 + r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } r6 = f7; f5 = r6; r6 = 8192 << 16; r7 = r7 | r6; r6 = 8 << 16; r6 = r7 + r6; r4 = r6 + r11; f9 = r4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f16 = readPages[(r28+-31636)>>>12][((r28+-31636)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f10 = readPages[(r28+-31676)>>>12][((r28+-31676)>>>2)&0x3ff]; f17 = readPages[(r28+-31640)>>>12][((r28+-31640)>>>2)&0x3ff]; f11 = readPages[(r28+-31680)>>>12][((r28+-31680)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f8 = readPages[(r28+-31684)>>>12][((r28+-31684)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f9 = readPages[(r28+-31688)>>>12][((r28+-31688)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31668)>>>12][((r28+-31668)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31672)>>>12][((r28+-31672)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31660)>>>12][((r28+-31660)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31664)>>>12][((r28+-31664)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31652)>>>12][((r28+-31652)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31656)>>>12][((r28+-31656)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f8 = readPages[(r28+-31644)>>>12][((r28+-31644)>>>2)&0x3ff]; f9 = readPages[(r28+-31648)>>>12][((r28+-31648)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } f8 = r5; r4 = f11; r5 = r0 + r0; f9 = r4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f16 = readPages[(r28+-31620)>>>12][((r28+-31620)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f17 = readPages[(r28+-31624)>>>12][((r28+-31624)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = 7 << 16; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } case 0x34c00: pc=0x34c00; 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: f10 = r5; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = r2 + -312; r4 = f1; f0 = readPages[(r28+-31628)>>>12][((r28+-31628)>>>2)&0x3ff]; f11 = r4; f1 = readPages[(r28+-31632)>>>12][((r28+-31632)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f17 = (int)(l >>> 32); f16 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f19&0xffffffffL) << 32) | (f18&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } 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; } r4 = f9; f8 = r5; f9 = r4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } case 0x34c88: r20 = r20 + -1; r18 = r20 | r18; if(r18 != r0) { /* Next insn is delay slot */ pc=0x34f4c; run_34e00(); return; } f20 = readPages[(r28+-31756)>>>12][((r28+-31756)>>>2)&0x3ff]; f21 = readPages[(r28+-31760)>>>12][((r28+-31760)>>>2)&0x3ff]; case 0x34ca4: r5 = r0 + r0; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; f0 = r5; f2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = r4; f3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 16528 << 16; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = f1; r3 = f0; r5 = r2 < r4 ? 1 : 0; r7 = r2 + r0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x34ee4; run_34e00(); return; } r4 = r2 - r4; r4 = r4 | r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x35078; run_35000(); return; } f2 = readPages[(r28+-31604)>>>12][((r28+-31604)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f3 = readPages[(r28+-31608)>>>12][((r28+-31608)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x35078; run_35000(); return; } r5 = r2 + r0; case 0x34d28: r4 = r5 >> 20; r3 = 16 << 16; r4 = r4 + -1022; r4 = r3 >> (r4&0x1f); r2 = r4 + r2; r8 = r2 << 1; r8 = r8 >>> 21; r6 = r3 + -1; r9 = r8 + -1023; r9 = r6 >> (r9&0x1f); r9 = ~(r0 | r9); r4 = r9 & r2; r5 = r0 + r0; r2 = r2 & r6; r3 = r2 | r3; f0 = r5; r2 = r0 + 1043; r8 = r2 - r8; f1 = r4; r6 = r3 >> (r8&0x1f); if(r7 < 0) { /* Next insn is delay slot */ pc=0x35130; run_35000(); return; } case 0x34d80: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } r4 = r6 << 20; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x34d8c: r3 = r0 + r0; r2 = f1; f0 = r3; f4 = readPages[(r28+-31588)>>>12][((r28+-31588)>>>2)&0x3ff]; f1 = r2; f2 = readPages[(r28+-31580)>>>12][((r28+-31580)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f3 = readPages[(r28+-31584)>>>12][((r28+-31584)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } f8 = readPages[(r28+-31572)>>>12][((r28+-31572)>>>2)&0x3ff]; f5 = readPages[(r28+-31592)>>>12][((r28+-31592)>>>2)&0x3ff]; f9 = readPages[(r28+-31576)>>>12][((r28+-31576)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f6 = readPages[(r28+-31556)>>>12][((r28+-31556)>>>2)&0x3ff]; f7 = readPages[(r28+-31560)>>>12][((r28+-31560)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } f4 = readPages[(r28+-31564)>>>12][((r28+-31564)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f5 = readPages[(r28+-31568)>>>12][((r28+-31568)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } case 0x34e00: pc=0x34e00; 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: f6 = readPages[(r28+-31548)>>>12][((r28+-31548)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31552)>>>12][((r28+-31552)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31540)>>>12][((r28+-31540)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31544)>>>12][((r28+-31544)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31532)>>>12][((r28+-31532)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31536)>>>12][((r28+-31536)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31524)>>>12][((r28+-31524)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f7 = readPages[(r28+-31528)>>>12][((r28+-31528)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } r2 = f13; r2 = r4 + r2; r3 = r2 >> 20; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x3511c; run_35000(); return; } r17 = f12; f0 = r17; f1 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34ea0: r4 = 49168 << 16; r4 = r22 + r4; r4 = r20 | r4; if(r4 != r0) { /* Next insn is delay slot */ pc=0x35098; run_35000(); return; } f4 = r3; f6 = r3; f5 = r2; f7 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34ed8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34ee4: r5 = 32767 << 16; r5 = r5 | 65535; r5 = r5 & r2; r4 = r4 | 52224; r4 = r5 < r4 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x350e8; run_35000(); return; } r4 = 16239 << 16; r4 = r4 + 13312; r4 = r4 + r2; r4 = r4 | r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x34f2c; 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=0x34d28; run_34c00(); return; } case 0x34f2c: f2 = readPages[(r28+-31596)>>>12][((r28+-31596)>>>2)&0x3ff]; f3 = readPages[(r28+-31600)>>>12][((r28+-31600)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34f4c: f20 = f12; f21 = f13; /* Next insn is delay slot */ pc=0x34ca4; run_34c00(); return; case 0x34f58: if(r30 >= 0) { /* Next insn is delay slot */ pc=0x34864; run_34800(); return; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = 32768 << 16; f0 = r3; r2 = r5 ^ r4; f1 = r2; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x34f80: r4 = 16367 << 16; r4 = r4 | 65535; r5 = r22 < r4 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3485c; run_34800(); return; } r4 = r4 + 2; r22 = r22 < r4 ? 1 : 0; if(r22 == r0) { /* Next insn is delay slot */ pc=0x34964; run_34800(); return; } f12 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; f10 = r3; f13 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; f11 = r2; f0 = readPages[(r28+-31724)>>>12][((r28+-31724)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f1 = readPages[(r28+-31728)>>>12][((r28+-31728)>>>2)&0x3ff]; f2 = readPages[(r28+-31716)>>>12][((r28+-31716)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f3 = readPages[(r28+-31720)>>>12][((r28+-31720)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } f6 = readPages[(r28+-31740)>>>12][((r28+-31740)>>>2)&0x3ff]; f4 = readPages[(r28+-31732)>>>12][((r28+-31732)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f7 = readPages[(r28+-31744)>>>12][((r28+-31744)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31708)>>>12][((r28+-31708)>>>2)&0x3ff]; f5 = readPages[(r28+-31736)>>>12][((r28+-31736)>>>2)&0x3ff]; f1 = readPages[(r28+-31712)>>>12][((r28+-31712)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x35000: pc=0x35000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_35000() throws ExecutionException { /* 0x35000 - 0x35200 */ int addr, tmp; for(;;) { switch(pc) { case 0x35000: f8 = readPages[(r28+-31700)>>>12][((r28+-31700)>>>2)&0x3ff]; r5 = r0 + r0; f9 = readPages[(r28+-31704)>>>12][((r28+-31704)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f8 = r5; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r4 = f3; f9 = r4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } /* Next insn is delay slot */ pc=0x34c88; run_34c00(); return; case 0x35040: r11 = r0 + r0; r9 = r0 + r0; /* Next insn is delay slot */ pc=0x34a74; run_34a00(); return; case 0x35050: r4 = r0 + r0; /* Next insn is delay slot */ pc=0x34a18; run_34a00(); return; case 0x3505c: f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x35078: f2 = readPages[(r28+-31748)>>>12][((r28+-31748)>>>2)&0x3ff]; f3 = readPages[(r28+-31752)>>>12][((r28+-31752)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x35098: r4 = r0 + 1; if(r20 != r4) { /* Next insn is delay slot */ pc=0x348b8; run_34800(); return; } r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x350bc: if(r6 != r0) { /* Next insn is delay slot */ pc=0x347f0; run_34600(); return; } r2 = r0 + 1043; r4 = r2 - r4; r2 = r21 >> (r4&0x1f); r4 = r2 << (r4&0x1f); if(r4 == r21) { /* Next insn is delay slot */ pc=0x3513c; continue; } r20 = r0 + r0; /* Next insn is delay slot */ pc=0x34774; run_34600(); return; case 0x350e8: r4 = 16352 << 16; r4 = r4 + 1; r4 = r5 < r4 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x34d28; run_34c00(); return; } r4 = r0 + r0; r6 = r0 + r0; /* Next insn is delay slot */ pc=0x34d8c; run_34c00(); return; case 0x3510c: r11 = 4 << 16; r9 = r0 + 1; /* Next insn is delay slot */ pc=0x34a74; run_34a00(); return; case 0x3511c: /* Next insn is delay slot */ r31=0x35124; pc=0x38400; run_38400(); return; case 0x35124: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x346cc; run_34600(); return; case 0x35130: r6 = r0 - r6; /* Next insn is delay slot */ pc=0x34d80; run_34c00(); return; case 0x3513c: r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; /* Next insn is delay slot */ pc=0x34774; run_34600(); return; 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: r29 = r29 + -64; r2 = f13; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; r18 = 32767 << 16; r18 = r18 | 65535; r18 = r18 & r2; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; 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; r16 = r6 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3542c; run_35400(); return; } r2 = 16386 << 16; r2 = r2 | 55676; r2 = r18 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x352c8; continue; } f2 = readPages[(r28+-31516)>>>12][((r28+-31516)>>>2)&0x3ff]; f3 = readPages[(r28+-31520)>>>12][((r28+-31520)>>>2)&0x3ff]; if(r17 <= 0) { /* Next insn is delay slot */ pc=0x35690; run_35600(); return; } r2 = 16377 << 16; r2 = r2 + 8699; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r18 == r2) { /* Next insn is delay slot */ pc=0x35478; run_35400(); return; } f2 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; f3 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; case 0x3528c: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = f4; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f5; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f2; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f3; r2 = r0 + 1; r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x352c8: r2 = 16697 << 16; r2 = r2 + 8700; r2 = r18 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x35494; run_35400(); return; } r2 = 32752 << 16; r2 = r18 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3545c; run_35400(); return; } r9 = f12; r4 = r0 + r0; f0 = r9; r6 = r18 >> 20; f1 = r4; r6 = r6 + -1046; r5 = f0; r2 = r6 << 20; f2 = r5; r4 = r18 - r2; f3 = r4; 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 } fcsr = r2; { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31452)>>>12][((r28+-31452)>>>2)&0x3ff]; f3 = readPages[(r28+-31456)>>>12][((r28+-31456)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } 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 } fcsr = r4; { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = r0; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f1; f3 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f4; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f5; if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x356dc; run_35600(); return; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x356e8; run_35600(); return; } r7 = r0 + 1; case 0x353d8: r2 = r0 + 2; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + -152; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r4 = r29 + 24; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x353fc; pc=0x36000; run_36000(); return; case 0x353fc: if(r17 >= 0) { /* Next insn is delay slot */ pc=0x35440; run_35400(); return; } case 0x35400: pc=0x35400; 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: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = 32768 << 16; r4 = r4 ^ r3; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r0 - r2; r3 = r4 ^ r3; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x35440; continue; case 0x3542c: writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = f12; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = f13; writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r0; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r0; r2 = r0 + r0; case 0x35440: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x3545c: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = f0; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = f1; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = f0; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x35440; continue; case 0x35478: f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; f2 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; f3 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x3528c; run_35200(); return; case 0x35494: /* Next insn is delay slot */ r31=0x3549c; pc=0x32a00; run_32a00(); return; case 0x3549c: f2 = readPages[(r28+-31484)>>>12][((r28+-31484)>>>2)&0x3ff]; f4 = readPages[(r28+-31476)>>>12][((r28+-31476)>>>2)&0x3ff]; f3 = readPages[(r28+-31488)>>>12][((r28+-31488)>>>2)&0x3ff]; f5 = readPages[(r28+-31480)>>>12][((r28+-31480)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } 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 } fcsr = r4; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } r2 = f4; f4 = readPages[(r28+-31516)>>>12][((r28+-31516)>>>2)&0x3ff]; r3 = r2 < 32 ? 1 : 0; f5 = readPages[(r28+-31520)>>>12][((r28+-31520)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f4 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; f5 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x355a8; continue; } r4 = r2 + -1; r3 = 7 << 16; r4 = r4 << 2; r3 = r3 + -280; r3 = r4 + r3; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r3 == r18) { /* Next insn is delay slot */ pc=0x355a8; 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; } r5 = f6; r4 = f7; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; case 0x35550: 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; } r7 = f2; r6 = f3; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r7; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r6; if(r17 >= 0) { /* Next insn is delay slot */ pc=0x35440; 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; r2 = r0 - r2; /* Next insn is delay slot */ pc=0x35440; continue; case 0x355a8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } r18 = r18 >> 20; r4 = f7; r5 = f6; r3 = r4 >>> 20; r3 = r3 & 2047; r3 = r18 - r3; r3 = r3 < 17 ? 1 : 0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; if(r3 != r0) { /* Next insn is delay slot */ pc=0x35550; continue; } f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f0 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; case 0x35600: pc=0x35600; 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: f1 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r4 = f1; r5 = f0; r6 = r4 >>> 20; r6 = r6 & 2047; r18 = r18 - r6; r18 = r18 < 50 ? 1 : 0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; if(r18 != r0) { /* Next insn is delay slot */ pc=0x35710; continue; } f4 = readPages[(r28+-31468)>>>12][((r28+-31468)>>>2)&0x3ff]; f5 = readPages[(r28+-31472)>>>12][((r28+-31472)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f6 = readPages[(r28+-31460)>>>12][((r28+-31460)>>>2)&0x3ff]; f7 = readPages[(r28+-31464)>>>12][((r28+-31464)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r5 = f2; r4 = f3; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x35550; run_35400(); return; case 0x35690: r2 = 16377 << 16; r2 = r2 + 8699; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r18 == r2) { /* Next insn is delay slot */ pc=0x356f4; continue; } f2 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; f3 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; case 0x356b4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r2 = r0 + -1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = f4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f5; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f2; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ pc=0x35440; run_35400(); return; case 0x356dc: r7 = r0 + 3; /* Next insn is delay slot */ pc=0x353d8; run_35200(); return; case 0x356e8: r7 = r0 + 2; /* Next insn is delay slot */ pc=0x353d8; run_35200(); return; case 0x356f4: f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; f2 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; f3 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x356b4; continue; case 0x35710: f0 = f6; f1 = f7; /* Next insn is delay slot */ pc=0x35550; run_35400(); return; case 0x35800: pc=0x35800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_35800() throws ExecutionException { /* 0x35800 - 0x35a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x35800: r2 = f13; r3 = f12; r6 = 32752 << 16; r7 = r6 & r2; r4 = r2 + r0; r5 = r3 + r0; if(r7 == r6) { /* Next insn is delay slot */ pc=0x35a88; run_35a00(); return; } if(r2 <= 0) { /* Next insn is delay slot */ pc=0x359dc; continue; } r2 = r2 >> 20; if(r2 == r0) { /* Next insn is delay slot */ pc=0x35a14; run_35a00(); return; } r3 = 15 << 16; r3 = r3 | 65535; r4 = r4 & r3; r2 = r2 + -1023; r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x359c4; continue; } case 0x35858: r4 = r4 << 1; r14 = r2 >> 1; r2 = r5 >>> 31; r2 = r4 + r2; r3 = r5 << 1; r6 = r0 + 22; r9 = r0 + r0; r5 = r0 + r0; r4 = 32 << 16; case 0x3587c: r7 = r5 + r4; r8 = r2 < r7 ? 1 : 0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x35898; continue; } r5 = r7 + r4; r2 = r2 - r7; r9 = r9 + r4; case 0x35898: r7 = r3 >>> 31; r2 = r2 << 1; r6 = r6 + -1; r2 = r2 + r7; r3 = r3 << 1; r4 = r4 >>> 1; if(r6 != r0) { /* Next insn is delay slot */ pc=0x3587c; continue; } r7 = r0 + 32; r11 = r0 + r0; r10 = r0 + r0; r4 = 32768 << 16; r12 = 32768 << 16; case 0x358cc: r8 = r5 < r2 ? 1 : 0; r6 = r4 + r10; if(r8 == r0) { /* Next insn is delay slot */ pc=0x359a4; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; case 0x358e0: r13 = r6 & r12; r10 = r6 + r4; if(r13 == r12) { /* Next insn is delay slot */ pc=0x3598c; continue; } case 0x358f0: r13 = r5 + r0; case 0x358f4: r2 = r2 - r5; if(r8 == r0) { /* Next insn is delay slot */ pc=0x35904; continue; } r2 = r2 + -1; case 0x35904: r3 = r3 - r6; r11 = r11 + r4; r5 = r13 + r0; case 0x35910: r6 = r3 >>> 31; r2 = r2 << 1; r7 = r7 + -1; r2 = r2 + r6; r3 = r3 << 1; r4 = r4 >>> 1; if(r7 != r0) { /* Next insn is delay slot */ pc=0x358cc; continue; } r2 = r2 | r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x35950; continue; } r2 = r0 + -1; if(r11 == r2) { /* Next insn is delay slot */ pc=0x35aa4; run_35a00(); return; } r2 = r11 & 1; r11 = r2 + r11; case 0x35950: r11 = r11 >>> 1; case 0x35954: r4 = r9 >> 1; r2 = 16352 << 16; r9 = r9 & 1; r4 = r4 + r2; if(r9 == r0) { /* Next insn is delay slot */ pc=0x35974; continue; } r2 = 32768 << 16; r11 = r11 | r2; case 0x35974: r14 = r14 << 20; f0 = r11; r2 = r14 + r4; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x3598c: r13 = r10 & r12; if(r13 != r0) { /* Next insn is delay slot */ pc=0x358f0; continue; } r13 = r5 + 1; /* Next insn is delay slot */ pc=0x358f4; continue; case 0x359a4: if(r2 != r5) { /* Next insn is delay slot */ pc=0x35910; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r8 == r0) { /* Next insn is delay slot */ pc=0x358e0; continue; } r5 = r2 + r0; /* Next insn is delay slot */ pc=0x35910; continue; case 0x359c4: r3 = r5 >>> 31; r4 = r4 << 1; r4 = r4 + r3; r5 = r5 << 1; /* Next insn is delay slot */ pc=0x35858; continue; case 0x359dc: r6 = 32767 << 16; r6 = r6 | 65535; r2 = r6 & r2; r2 = r2 | r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x35a98; run_35a00(); return; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x35ac8; run_35a00(); return; } r2 = r0 + r0; 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: r4 = r5 >>> 11; r2 = r2 + -21; r5 = r5 << 21; if(r4 == r0) { /* Next insn is delay slot */ pc=0x35a00; continue; } case 0x35a14: r3 = 16 << 16; r3 = r4 & r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x35ab4; continue; } r7 = 16 << 16; case 0x35a28: r4 = r4 << 1; r6 = r4 & r7; r3 = r3 + 1; if(r6 == r0) { /* Next insn is delay slot */ pc=0x35a28; continue; } r7 = r0 + 1; r6 = r0 + 32; r7 = r7 - r3; r6 = r6 - r3; case 0x35a4c: r6 = r5 >>> (r6&0x1f); r5 = r5 << (r3&0x1f); r3 = 15 << 16; r3 = r3 | 65535; r2 = r2 + r7; r4 = r4 | r6; r4 = r4 & r3; r2 = r2 + -1023; r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x35858; run_35800(); return; } /* Next insn is delay slot */ pc=0x359c4; run_35800(); return; case 0x35a88: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x35a98: f0 = f12; f1 = f13; /* Next insn is delay slot */ pc=r31; return; case 0x35aa4: r9 = r9 + 1; r11 = r0 + r0; /* Next insn is delay slot */ pc=0x35954; run_35800(); return; case 0x35ab4: r6 = r0 + 32; r7 = r0 + 1; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x35a4c; continue; case 0x35ac8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; 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: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 15936 << 16; r3 = r2 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x35d00; continue; } r4 = fcsr; r4 = fcsr; 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 } fcsr = r4; r2 = f0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x35e20; run_35e00(); return; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31420)>>>12][((r28+-31420)>>>2)&0x3ff]; f4 = readPages[(r28+-31412)>>>12][((r28+-31412)>>>2)&0x3ff]; f3 = readPages[(r28+-31424)>>>12][((r28+-31424)>>>2)&0x3ff]; f5 = readPages[(r28+-31416)>>>12][((r28+-31416)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31404)>>>12][((r28+-31404)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31408)>>>12][((r28+-31408)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31396)>>>12][((r28+-31396)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31400)>>>12][((r28+-31400)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31388)>>>12][((r28+-31388)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31392)>>>12][((r28+-31392)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31380)>>>12][((r28+-31380)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31384)>>>12][((r28+-31384)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } case 0x35cc8: f4 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f5 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f12 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f13 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x35d00: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31420)>>>12][((r28+-31420)>>>2)&0x3ff]; f4 = readPages[(r28+-31412)>>>12][((r28+-31412)>>>2)&0x3ff]; f3 = readPages[(r28+-31424)>>>12][((r28+-31424)>>>2)&0x3ff]; f5 = readPages[(r28+-31416)>>>12][((r28+-31416)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = 16339 << 16; r3 = r3 + 13107; r3 = r2 < r3 ? 1 : 0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31404)>>>12][((r28+-31404)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31408)>>>12][((r28+-31408)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31396)>>>12][((r28+-31396)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31400)>>>12][((r28+-31400)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31388)>>>12][((r28+-31388)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31392)>>>12][((r28+-31392)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f4 = readPages[(r28+-31380)>>>12][((r28+-31380)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f5 = readPages[(r28+-31384)>>>12][((r28+-31384)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } if(r3 != r0) { /* Next insn is delay slot */ pc=0x35cc8; continue; } r3 = 16361 << 16; r3 = r3 + 1; r3 = r2 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x35de4; continue; } f6 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f7 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; r5 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } r3 = 65504 << 16; f4 = r5; f8 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; r4 = r2 + r3; f5 = r4; f9 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x35de4: f6 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f7 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f4 = readPages[(r28+-31436)>>>12][((r28+-31436)>>>2)&0x3ff]; f8 = readPages[(r28+-31444)>>>12][((r28+-31444)>>>2)&0x3ff]; case 0x35e00: pc=0x35e00; 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: f5 = readPages[(r28+-31440)>>>12][((r28+-31440)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f9 = readPages[(r28+-31448)>>>12][((r28+-31448)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x35e20: f0 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; f1 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x36000: pc=0x36000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_36000() throws ExecutionException { /* 0x36000 - 0x36200 */ int addr, tmp; for(;;) { switch(pc) { case 0x36000: r29 = r29 + -688; r2 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; r9 = r6 + -3; r3 = r2 << 2; r2 = 7 << 16; r2 = r2 + 176; r2 = r3 + r2; writePages[(r29+608)>>>12][((r29+608)>>>2)&0x3ff] = r18; r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 24; if(r2 != r0) { /* Next insn is delay slot */ hi = r9%r2; lo = r9/r2; pc=0x36034; continue; } hi = r9%r2; lo = r9/r2; throw new ExecutionException("Break"); case 0x36034: writePages[(r29+628)>>>12][((r29+628)>>>2)&0x3ff] = r23; writePages[(r29+612)>>>12][((r29+612)>>>2)&0x3ff] = r19; writePages[(r29+604)>>>12][((r29+604)>>>2)&0x3ff] = r17; writePages[(r29+636)>>>12][((r29+636)>>>2)&0x3ff] = r31; writePages[(r29+632)>>>12][((r29+632)>>>2)&0x3ff] = r30; writePages[(r29+624)>>>12][((r29+624)>>>2)&0x3ff] = r22; writePages[(r29+620)>>>12][((r29+620)>>>2)&0x3ff] = r21; writePages[(r29+616)>>>12][((r29+616)>>>2)&0x3ff] = r20; writePages[(r29+600)>>>12][((r29+600)>>>2)&0x3ff] = r16; writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = f30; writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = f31; writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = f28; writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = f29; writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = f26; writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = f27; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = f24; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = f25; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = f22; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = f23; writePages[(r29+644)>>>12][((r29+644)>>>2)&0x3ff] = f20; writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = f21; r17 = r4 + r0; r23 = r5 + r0; r19 = r7 + -1; r9 = lo; if(r9 < 0) { /* Next insn is delay slot */ pc=0x36c60; run_36c00(); return; } case 0x360a0: r2 = ~(r0 | r9); r3 = r2 << 3; r2 = r2 << 5; r30 = r2 - r3; r5 = r19 + r18; r30 = r30 + r6; r2 = r9 - r19; if(r5 < 0) { /* Next insn is delay slot */ pc=0x3610c; continue; } r6 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; r4 = r2 << 2; r5 = r2 + r5; r3 = r29 + 336; r4 = r6 + r4; r5 = r5 + 1; case 0x360dc: if(r2 < 0) { /* Next insn is delay slot */ pc=0x368a8; run_36800(); return; } f2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x360f0: r2 = r2 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = f0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = f1; r4 = r4 + 4; r3 = r3 + 8; if(r2 != r5) { /* Next insn is delay slot */ pc=0x360dc; continue; } case 0x3610c: if(r18 < 0) { /* Next insn is delay slot */ pc=0x36d44; run_36c00(); return; } r16 = r7 << 3; r8 = r18 + 1; r6 = r29 + r16; r8 = r8 << 3; r5 = r0 + r0; r21 = r29 + 16; r6 = r6 + 328; case 0x36130: if(r19 < 0) { /* Next insn is delay slot */ pc=0x36938; run_36800(); return; } f0 = r0; r3 = r6 + r5; f1 = r0; r2 = r0 + r0; case 0x36148: r4 = r17 + r2; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; f5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r2 + 8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = r3 + -8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r2 != r16) { /* Next insn is delay slot */ pc=0x36148; continue; } r2 = r21 + r5; r5 = r5 + 8; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f1; if(r5 != r8) { /* Next insn is delay slot */ pc=0x36130; continue; } case 0x3618c: r2 = r29 + 492; r20 = r18 << 2; writePages[(r29+576)>>>12][((r29+576)>>>2)&0x3ff] = r2; r20 = r2 + r20; r2 = r18 + -1; r2 = r2 << 2; r2 = r21 + r2; f28 = readPages[(r28+-31348)>>>12][((r28+-31348)>>>2)&0x3ff]; f30 = readPages[(r28+-31340)>>>12][((r28+-31340)>>>2)&0x3ff]; f20 = readPages[(r28+-31324)>>>12][((r28+-31324)>>>2)&0x3ff]; f24 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; f22 = readPages[(r28+-31356)>>>12][((r28+-31356)>>>2)&0x3ff]; writePages[(r29+584)>>>12][((r29+584)>>>2)&0x3ff] = r2; r2 = r18 + -2; r2 = r2 << 2; f29 = readPages[(r28+-31352)>>>12][((r28+-31352)>>>2)&0x3ff]; f31 = readPages[(r28+-31344)>>>12][((r28+-31344)>>>2)&0x3ff]; f21 = readPages[(r28+-31328)>>>12][((r28+-31328)>>>2)&0x3ff]; f25 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; f23 = readPages[(r28+-31360)>>>12][((r28+-31360)>>>2)&0x3ff]; r22 = r18 + r0; r8 = r18 << 3; writePages[(r29+588)>>>12][((r29+588)>>>2)&0x3ff] = r2; case 0x361e8: r8 = r21 + r8; f12 = readPages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff]; f13 = readPages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff]; if(r22 <= 0) { /* Next insn is delay slot */ pc=0x36298; run_36200(); return; } case 0x36200: pc=0x36200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_36200() throws ExecutionException { /* 0x36200 - 0x36400 */ int addr, tmp; for(;;) { switch(pc) { case 0x36200: r2 = r22 + -1; r2 = r2 << 3; r3 = r29 + 496; r2 = r21 + r2; r4 = r29 + 8; case 0x36214: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = r2 + -8; r3 = r3 + 4; r6 = fcsr; r6 = fcsr; 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 } 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 } fcsr = r6; f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = f2; f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } if(r2 != r4) { /* Next insn is delay slot */ pc=0x36214; continue; } case 0x36298: r6 = r30 + r0; writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x362a8; pc=0x38400; run_38400(); return; case 0x362a8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f26 = f0; f27 = f1; /* Next insn is delay slot */ r31=0x362b8; pc=0x37600; run_37600(); return; case 0x362b8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f31&0xffffffffL) << 32) | (f30&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r9 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } 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 } fcsr = r2; writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = f0; { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } if(r30 <= 0) { /* Next insn is delay slot */ pc=0x368bc; run_36800(); return; } r3 = r22 + -1; r3 = r3 << 2; r3 = r21 + r3; r2 = readPages[(r3+480)>>>12][((r3+480)>>>2)&0x3ff]; r4 = r0 + 24; r4 = r4 - r30; r5 = r2 >> (r4&0x1f); r7 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; r4 = r5 << (r4&0x1f); r2 = r2 - r4; r4 = r0 + 23; r7 = r7 + r5; r4 = r4 - r30; writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r7; writePages[(r3+480)>>>12][((r3+480)>>>2)&0x3ff] = r2; r4 = r2 >> (r4&0x1f); case 0x36340: if(r4 <= 0) { /* Next insn is delay slot */ pc=0x36414; run_36400(); return; } r2 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r2; if(r22 <= 0) { /* Next insn is delay slot */ pc=0x36978; run_36800(); return; } case 0x36360: r2 = r29 + 496; r6 = r22 << 2; r7 = 255 << 16; r6 = r2 + r6; r5 = r0 + r0; r7 = r7 | 65535; r8 = 256 << 16; /* Next insn is delay slot */ pc=0x363a4; continue; case 0x36384: if(r3 == r0) { /* Next insn is delay slot */ pc=0x36398; continue; } r3 = r8 - r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r5 = r0 + 1; case 0x36398: r2 = r2 + 4; if(r2 == r6) { /* Next insn is delay slot */ pc=0x363c8; continue; } case 0x363a4: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x36384; continue; } r3 = r7 - r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r2 + 4; r5 = r0 + 1; if(r2 != r6) { /* Next insn is delay slot */ pc=0x363a4; continue; } case 0x363c8: if(r30 <= 0) { /* Next insn is delay slot */ pc=0x36408; run_36400(); return; } r2 = r0 + 1; if(r30 == r2) { /* Next insn is delay slot */ pc=0x368e4; run_36800(); return; } r2 = r0 + 2; if(r30 != r2) { /* Next insn is delay slot */ pc=0x36408; run_36400(); return; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; r6 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; r3 = 63 << 16; r3 = r3 | 65535; case 0x36400: pc=0x36400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_36400() throws ExecutionException { /* 0x36400 - 0x36600 */ int addr, tmp; for(;;) { switch(pc) { case 0x36400: r3 = r6 & r3; writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = r3; case 0x36408: r2 = r0 + 2; if(r4 == r2) { /* Next insn is delay slot */ pc=0x365b0; continue; } case 0x36414: f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x365f8; continue; } case 0x36434: r5 = r22 + -1; r2 = r5 < r18 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x36470; continue; } r3 = r29 + 496; r7 = r5 << 2; r2 = r3 + r7; r3 = r0 + r0; case 0x36454: r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r2 + -4; r3 = r3 | r6; if(r2 != r20) { /* Next insn is delay slot */ pc=0x36454; continue; } if(r3 != r0) { /* Next insn is delay slot */ pc=0x36c10; run_36c00(); return; } case 0x36470: r4 = readPages[(r29+584)>>>12][((r29+584)>>>2)&0x3ff]; r2 = readPages[(r4+480)>>>12][((r4+480)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x36c04; run_36c00(); return; } r7 = readPages[(r29+588)>>>12][((r29+588)>>>2)&0x3ff]; r5 = r29 + 496; r2 = r5 + r7; r3 = r0 + 1; case 0x36498: r2 = r2 + -4; r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r3 = r3 + 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x36498; continue; } case 0x364ac: r2 = r22 + 1; r22 = r22 + r3; r3 = r22 < r2 ? 1 : 0; r8 = r22 << 3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x361e8; run_36000(); return; } r5 = r2 + r9; r3 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; r5 = r5 << 2; r5 = r3 + r5; r7 = r19 + r2; f2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; 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; } r4 = r21 + r2; r8 = r22 << 3; r2 = r29 + 24; r6 = r2 + r8; writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = f0; writePages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff] = f1; if(r19 < 0) { /* Next insn is delay slot */ pc=0x36584; continue; } case 0x36510: f0 = r0; r3 = r7 + r0; f1 = r0; r2 = r0 + r0; case 0x36520: r10 = r17 + r2; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f4 = readPages[(r10+4)>>>12][((r10+4)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; f5 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; r2 = r2 + 8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = r3 + -8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r2 != r16) { /* Next insn is delay slot */ pc=0x36520; continue; } writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = f0; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = f1; r4 = r4 + 8; r5 = r5 + 4; r7 = r7 + 8; if(r4 == r6) { /* Next insn is delay slot */ pc=0x361e8; run_36000(); return; } case 0x36568: f2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = f0; writePages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff] = f1; if(r19 >= 0) { /* Next insn is delay slot */ pc=0x36510; continue; } case 0x36584: 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; r7 = r7 + 8; if(r4 != r6) { /* Next insn is delay slot */ pc=0x36568; continue; } /* Next insn is delay slot */ pc=0x361e8; run_36000(); return; case 0x365b0: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } if(r5 == r0) { /* Next insn is delay slot */ pc=0x36414; continue; } f12 = f20; f13 = f21; r6 = r30 + r0; writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x365d4; pc=0x38400; run_38400(); return; case 0x365d4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } f0 = r0; r9 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; f1 = r0; r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x36434; continue; } case 0x365f8: f12 = f26; f13 = f27; r6 = r0 - r30; 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: writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x3660c; pc=0x38400; run_38400(); return; case 0x3660c: f2 = readPages[(r28+-31356)>>>12][((r28+-31356)>>>2)&0x3ff]; r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; f3 = readPages[(r28+-31360)>>>12][((r28+-31360)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x36c6c; run_36c00(); return; } f4 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; r5 = r22 + 1; f5 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; r30 = r30 + 24; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } 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 } 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; } r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f2; r2 = r5 << 2; r2 = r21 + r2; writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f4; case 0x366b4: f12 = f20; f13 = f21; r6 = r30 + r0; writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x366cc; pc=0x38400; run_38400(); return; case 0x366cc: r5 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; if(r5 < 0) { /* Next insn is delay slot */ pc=0x367b4; continue; } f4 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; r3 = r29 + 496; r2 = r5 << 2; r9 = r5 << 3; f5 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; r2 = r3 + r2; r3 = r21 + r9; case 0x366f8: f6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r7 = readPages[(r29+576)>>>12][((r29+576)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f6)); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r2 = r2 + -4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r3 = r3 + -8; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f2; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f3; if(r2 != r7) { /* Next insn is delay slot */ pc=0x366f8; continue; } r9 = r21 + r9; r11 = r5 + 1; r8 = r0 + r0; r10 = 7 << 16; case 0x36734: if(r18 < 0) { /* Next insn is delay slot */ pc=0x36984; run_36800(); return; } f0 = r0; r6 = r10 + 112; r3 = r9 + r0; f1 = r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3676c; continue; case 0x36758: r7 = r8 < r2 ? 1 : 0; r6 = r6 + 8; r3 = r3 + 8; if(r7 != r0) { /* Next insn is delay slot */ pc=0x36794; continue; } case 0x3676c: f4 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f5 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r2 + 1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r7 = r18 < r2 ? 1 : 0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r7 == r0) { /* Next insn is delay slot */ pc=0x36758; continue; } case 0x36794: 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; r9 = r9 + -8; if(r8 != r11) { /* Next insn is delay slot */ pc=0x36734; continue; } case 0x367b4: r3 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; r2 = r3 < 3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x36a94; run_36a00(); return; } if(r3 > 0) { /* Next insn is delay slot */ pc=0x369b4; run_36800(); return; } if(r3 != r0) { /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; } if(r5 < 0) { /* Next insn is delay slot */ pc=0x36d34; run_36c00(); return; } r2 = r29 + 176; r5 = r5 << 3; r5 = r2 + r5; r6 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; case 0x367f8: f0 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; f2 = r3; 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: f1 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; f3 = r2; r5 = r5 + -8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = f2; r2 = f3; if(r5 != r6) { /* Next insn is delay slot */ pc=0x367f8; run_36600(); return; } case 0x36820: if(r4 == r0) { /* Next insn is delay slot */ pc=0x36d1c; run_36c00(); return; } r6 = 32768 << 16; r4 = r2 ^ r6; r5 = r3 + r0; writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r4; case 0x3683c: r3 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; f30 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; f28 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; f26 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; f24 = readPages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff]; f22 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; f20 = readPages[(r29+644)>>>12][((r29+644)>>>2)&0x3ff]; r31 = readPages[(r29+636)>>>12][((r29+636)>>>2)&0x3ff]; r30 = readPages[(r29+632)>>>12][((r29+632)>>>2)&0x3ff]; r23 = readPages[(r29+628)>>>12][((r29+628)>>>2)&0x3ff]; r22 = readPages[(r29+624)>>>12][((r29+624)>>>2)&0x3ff]; r21 = readPages[(r29+620)>>>12][((r29+620)>>>2)&0x3ff]; r20 = readPages[(r29+616)>>>12][((r29+616)>>>2)&0x3ff]; r19 = readPages[(r29+612)>>>12][((r29+612)>>>2)&0x3ff]; r18 = readPages[(r29+608)>>>12][((r29+608)>>>2)&0x3ff]; r17 = readPages[(r29+604)>>>12][((r29+604)>>>2)&0x3ff]; r16 = readPages[(r29+600)>>>12][((r29+600)>>>2)&0x3ff]; f31 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; f29 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; f27 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; f25 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; f23 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; f21 = readPages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff]; r2 = r3 & 7; r29 = r29 + 688; /* Next insn is delay slot */ pc=r31; return; case 0x368a8: f0 = r0; f1 = r0; /* Next insn is delay slot */ pc=0x360f0; run_36000(); return; case 0x368bc: if(r30 != r0) { /* Next insn is delay slot */ pc=0x3690c; continue; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; r4 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; r4 = r4 >> 23; /* Next insn is delay slot */ pc=0x36340; run_36200(); return; case 0x368e4: r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; r6 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; r3 = 127 << 16; r3 = r3 | 65535; r3 = r6 & r3; writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x36408; run_36400(); return; case 0x3690c: f2 = readPages[(r28+-31332)>>>12][((r28+-31332)>>>2)&0x3ff]; f3 = readPages[(r28+-31336)>>>12][((r28+-31336)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x36960; continue; } r4 = r0 + r0; /* Next insn is delay slot */ pc=0x36414; run_36400(); return; case 0x36938: f0 = r0; r2 = r21 + r5; f1 = r0; r5 = r5 + 8; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f1; if(r5 != r8) { /* Next insn is delay slot */ pc=0x36130; run_36000(); return; } /* Next insn is delay slot */ pc=0x3618c; run_36000(); return; case 0x36960: r2 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; r4 = r0 + 2; r2 = r2 + 1; writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r2; if(r22 > 0) { /* Next insn is delay slot */ pc=0x36360; run_36200(); return; } case 0x36978: r5 = r0 + r0; /* Next insn is delay slot */ pc=0x363c8; run_36200(); return; case 0x36984: 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; r9 = r9 + -8; if(r8 != r11) { /* Next insn is delay slot */ pc=0x36734; run_36600(); return; } /* Next insn is delay slot */ pc=0x367b4; run_36600(); return; case 0x369b4: if(r5 < 0) { /* Next insn is delay slot */ pc=0x36d0c; run_36c00(); return; } r2 = r29 + 176; r6 = r5 << 3; r6 = r2 + r6; r7 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; case 0x369d4: f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; f2 = r3; f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; f3 = r2; r6 = r6 + -8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = f2; r2 = f3; if(r6 != r7) { /* Next insn is delay slot */ pc=0x369d4; continue; } case 0x369fc: if(r4 == r0) { /* Next insn is delay slot */ pc=0x36bf4; run_36a00(); 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: r8 = 32768 << 16; r6 = r2 ^ r8; r7 = r3 + r0; case 0x36a10: f2 = r3; f0 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; f3 = r2; f1 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r7; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r6; r3 = f2; r2 = f3; if(r5 <= 0) { /* Next insn is delay slot */ pc=0x36a70; continue; } r6 = r29 + 184; r5 = r5 << 3; r5 = r6 + r5; case 0x36a48: f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; f2 = r3; f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; f3 = r2; r6 = r6 + 8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = f2; r2 = f3; if(r6 != r5) { /* Next insn is delay slot */ pc=0x36a48; continue; } case 0x36a70: if(r4 == r0) { /* Next insn is delay slot */ pc=0x36cac; run_36c00(); return; } r6 = 32768 << 16; r4 = r2 ^ r6; r5 = r3 + r0; writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; case 0x36a94: r7 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; r2 = r0 + 3; if(r7 != r2) { /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; } if(r5 <= 0) { /* Next insn is delay slot */ pc=0x36cfc; run_36c00(); return; } r9 = r5 << 3; r2 = r21 + r9; f0 = readPages[(r2+164)>>>12][((r2+164)>>>2)&0x3ff]; r6 = r29 + 176; f1 = readPages[(r2+160)>>>12][((r2+160)>>>2)&0x3ff]; r2 = r5 + -1; r2 = r2 << 3; r2 = r6 + r2; r7 = r29 + 168; r3 = r2 + r0; /* Next insn is delay slot */ pc=0x36ae0; continue; case 0x36adc: f0 = f2; f1 = f3; case 0x36ae0: f4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r3 + -8; f5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f3; writePages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff] = f0; writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = f1; if(r3 != r7) { /* Next insn is delay slot */ pc=0x36adc; continue; } r5 = r5 < 2 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x36cfc; run_36c00(); return; } r21 = r21 + r9; f0 = readPages[(r21+164)>>>12][((r21+164)>>>2)&0x3ff]; f1 = readPages[(r21+160)>>>12][((r21+160)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x36b3c; continue; case 0x36b38: f0 = f2; f1 = f3; case 0x36b3c: f4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 + -8; f5 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f3; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = f0; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = f1; if(r6 != r2) { /* Next insn is delay slot */ pc=0x36b38; continue; } r9 = r6 + r9; r3 = r0 + r0; r6 = r6 + 8; r2 = r0 + r0; case 0x36b80: f0 = readPages[(r9+4)>>>12][((r9+4)>>>2)&0x3ff]; f2 = r3; f1 = readPages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff]; f3 = r2; r9 = r9 + -8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = f2; r2 = f3; if(r9 != r6) { /* Next insn is delay slot */ pc=0x36b80; continue; } case 0x36ba8: if(r4 == r0) { /* Next insn is delay slot */ pc=0x36cc4; run_36c00(); return; } r5 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r4 = 32768 << 16; r5 = r5 ^ r4; writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r5; r5 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; writePages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff] = r3; writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; r5 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r5 = r5 ^ r4; writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r5; r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r4 = r2 ^ r4; writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; writePages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; case 0x36bf4: r7 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x36a10; continue; case 0x36c00: pc=0x36c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_36c00() throws ExecutionException { /* 0x36c00 - 0x36e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x36c00: case 0x36c04: r3 = r0 + 1; /* Next insn is delay slot */ pc=0x364ac; run_36400(); return; case 0x36c10: r7 = r21 + r7; r2 = readPages[(r7+480)>>>12][((r7+480)>>>2)&0x3ff]; r30 = r30 + -24; if(r2 != r0) { /* Next insn is delay slot */ pc=0x366b4; run_36600(); return; } r3 = r5 + -1; r2 = r3 << 2; r5 = r29 + 496; r2 = r5 + r2; /* Next insn is delay slot */ pc=0x36c40; continue; case 0x36c3c: r3 = r3 + -1; case 0x36c40: r2 = r2 + -4; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = r3 + r0; r30 = r30 + -24; if(r6 == r0) { /* Next insn is delay slot */ pc=0x36c3c; continue; } /* Next insn is delay slot */ pc=0x366b4; run_36600(); return; case 0x36c60: r9 = r0 + r0; /* Next insn is delay slot */ pc=0x360a0; run_36000(); return; case 0x36c6c: r2 = r22 << 2; r2 = r21 + r2; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r6; writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f2; r5 = r22 + r0; /* Next insn is delay slot */ pc=0x366b4; run_36600(); return; case 0x36cac: r5 = r3 + r0; r4 = r2 + r0; writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; case 0x36cc4: f0 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; writePages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff] = r3; f1 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; writePages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff] = r2; writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = f0; writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = f1; f0 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; f1 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = f0; writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; case 0x36cfc: r3 = r0 + r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x36ba8; run_36a00(); return; case 0x36d0c: r3 = r0 + r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x369fc; run_36800(); return; case 0x36d1c: r5 = r3 + r0; r4 = r2 + r0; writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3683c; run_36800(); return; case 0x36d34: r3 = r0 + r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x36820; run_36800(); return; case 0x36d44: r16 = r7 << 3; r21 = r29 + 16; /* Next insn is delay slot */ pc=0x3618c; run_36000(); 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 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 15936 << 16; r2 = r2 < r3 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x36e58; continue; } r4 = fcsr; r4 = fcsr; 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 } fcsr = r4; r2 = f0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x36f28; continue; } case 0x36e58: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f6 = readPages[(r28+-31316)>>>12][((r28+-31316)>>>2)&0x3ff]; f8 = readPages[(r28+-31308)>>>12][((r28+-31308)>>>2)&0x3ff]; f7 = readPages[(r28+-31320)>>>12][((r28+-31320)>>>2)&0x3ff]; f9 = readPages[(r28+-31312)>>>12][((r28+-31312)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f4 = readPages[(r28+-31284)>>>12][((r28+-31284)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; f5 = readPages[(r28+-31288)>>>12][((r28+-31288)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-31300)>>>12][((r28+-31300)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-31304)>>>12][((r28+-31304)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f8 = readPages[(r28+-31292)>>>12][((r28+-31292)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f9 = readPages[(r28+-31296)>>>12][((r28+-31296)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x36f00; continue; } f6 = readPages[(r28+-31268)>>>12][((r28+-31268)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f7 = readPages[(r28+-31272)>>>12][((r28+-31272)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } f2 = readPages[(r28+-31276)>>>12][((r28+-31276)>>>2)&0x3ff]; f3 = readPages[(r28+-31280)>>>12][((r28+-31280)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x36f00: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31276)>>>12][((r28+-31276)>>>2)&0x3ff]; f9 = readPages[(r28+-31280)>>>12][((r28+-31280)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x36f28: f0 = f12; f1 = f13; /* Next insn is delay slot */ pc=r31; 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 = f13; r10 = 32767 << 16; r10 = r10 | 65535; r10 = r10 & r2; r8 = 15920 << 16; r29 = r29 + -24; r8 = r10 < r8 ? 1 : 0; r3 = f12; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r5 = f14; r4 = f15; r6 = r2 + r0; if(r8 == r0) { /* Next insn is delay slot */ pc=0x370cc; continue; } f12 = r3; f13 = r2; r12 = fcsr; r12 = fcsr; 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 } fcsr = r12; r8 = f0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x37124; continue; } r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r10 = r10 | r3; r4 = r5 + 1; r10 = r10 | r4; if(r10 == r0) { /* Next insn is delay slot */ pc=0x37368; run_37200(); return; } r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = r0 + 1; if(r6 == r4) { /* Next insn is delay slot */ pc=0x373b4; run_37200(); return; } f0 = readPages[(r28+-31252)>>>12][((r28+-31252)>>>2)&0x3ff]; f2 = r3; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = readPages[(r28+-31256)>>>12][((r28+-31256)>>>2)&0x3ff]; f3 = r2; r29 = r29 + 24; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x370cc: r8 = 16357 << 16; r8 = r8 | 37928; r8 = r10 < r8 ? 1 : 0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x37124; continue; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x3738c; run_37200(); return; } case 0x370e8: f4 = r3; f0 = readPages[(r28+-31244)>>>12][((r28+-31244)>>>2)&0x3ff]; f5 = r2; f1 = readPages[(r28+-31248)>>>12][((r28+-31248)>>>2)&0x3ff]; f10 = r5; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31236)>>>12][((r28+-31236)>>>2)&0x3ff]; f11 = r4; f1 = readPages[(r28+-31240)>>>12][((r28+-31240)>>>2)&0x3ff]; r5 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r4 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r3 = f4; r2 = f5; case 0x37124: 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; } f5 = r2; f8 = readPages[(r28+-31220)>>>12][((r28+-31220)>>>2)&0x3ff]; f10 = readPages[(r28+-31172)>>>12][((r28+-31172)>>>2)&0x3ff]; f9 = readPages[(r28+-31224)>>>12][((r28+-31224)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f4 = readPages[(r28+-31228)>>>12][((r28+-31228)>>>2)&0x3ff]; f11 = readPages[(r28+-31176)>>>12][((r28+-31176)>>>2)&0x3ff]; f5 = readPages[(r28+-31232)>>>12][((r28+-31232)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31212)>>>12][((r28+-31212)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f9 = readPages[(r28+-31216)>>>12][((r28+-31216)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31204)>>>12][((r28+-31204)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f9 = readPages[(r28+-31208)>>>12][((r28+-31208)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31196)>>>12][((r28+-31196)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f9 = readPages[(r28+-31200)>>>12][((r28+-31200)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31188)>>>12][((r28+-31188)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f9 = readPages[(r28+-31192)>>>12][((r28+-31192)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f8 = readPages[(r28+-31180)>>>12][((r28+-31180)>>>2)&0x3ff]; f9 = readPages[(r28+-31184)>>>12][((r28+-31184)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31164)>>>12][((r28+-31164)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31168)>>>12][((r28+-31168)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31156)>>>12][((r28+-31156)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31160)>>>12][((r28+-31160)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31148)>>>12][((r28+-31148)>>>2)&0x3ff]; case 0x37200: pc=0x37200; 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: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31152)>>>12][((r28+-31152)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = readPages[(r28+-31140)>>>12][((r28+-31140)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = readPages[(r28+-31144)>>>12][((r28+-31144)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f10 = r5; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } f11 = r4; r4 = 16357 << 16; r4 = r4 | 37928; r10 = r10 < r4 ? 1 : 0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r28+-31132)>>>12][((r28+-31132)>>>2)&0x3ff]; f3 = readPages[(r28+-31136)>>>12][((r28+-31136)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } f0 = r3; f1 = r2; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } if(r10 == r0) { /* Next insn is delay slot */ pc=0x37308; continue; } r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = r0 + 1; if(r5 == r4) { /* Next insn is delay slot */ pc=0x373a8; continue; } f0 = readPages[(r28+-31252)>>>12][((r28+-31252)>>>2)&0x3ff]; r4 = f5; f1 = readPages[(r28+-31256)>>>12][((r28+-31256)>>>2)&0x3ff]; r5 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = r5; f10 = r3; r9 = r0 + r0; f3 = r4; f11 = r2; f8 = r9; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f10 = readPages[(r28+-31260)>>>12][((r28+-31260)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f11 = readPages[(r28+-31264)>>>12][((r28+-31264)>>>2)&0x3ff]; r8 = f5; f9 = r8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x372f8: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x37308: f2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r6 = r6 >> 30; { long l = Double.doubleToLongBits(((double)f2)); f9 = (int)(l >>> 32); f8 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } 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; } 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; } 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; return; case 0x37368: /* Next insn is delay slot */ r31=0x37370; pc=0x32a00; run_32a00(); return; case 0x37370: f4 = readPages[(r28+-31260)>>>12][((r28+-31260)>>>2)&0x3ff]; f5 = readPages[(r28+-31264)>>>12][((r28+-31264)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x372f8; continue; case 0x3738c: r11 = 32768 << 16; r8 = r2 ^ r11; r2 = r8 + r0; r8 = r4 ^ r11; r4 = r8 + r0; /* Next insn is delay slot */ pc=0x370e8; run_37000(); return; case 0x373a8: f0 = f4; f1 = f5; /* Next insn is delay slot */ pc=0x372f8; continue; case 0x373b4: f0 = r3; f1 = r2; /* Next insn is delay slot */ pc=0x372f8; continue; case 0x37400: pc=0x37400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_37400() throws ExecutionException { /* 0x37400 - 0x37600 */ int addr, tmp; for(;;) { switch(pc) { case 0x37400: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 32784 << 16; r2 = r2 + r3; r2 = r2 >>> 31; /* Next insn is delay slot */ pc=r31; return; 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: r2 = f13; r3 = f12; r5 = r2 >> 20; r5 = r5 & 2047; r4 = r5 + -1023; r7 = r4 < 20 ? 1 : 0; r8 = r2 + r0; r9 = r2 + r0; r6 = r3 + r0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x376ac; continue; } if(r4 < 0) { /* Next insn is delay slot */ pc=0x37740; continue; } r5 = 15 << 16; r5 = r5 | 65535; r5 = r5 >> (r4&0x1f); r7 = r5 & r2; r7 = r7 | r3; if(r7 == r0) { /* Next insn is delay slot */ pc=0x376c4; continue; } f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x37698; continue; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x37798; continue; } case 0x3768c: r8 = ~(r0 | r5); r8 = r9 & r8; r6 = r0 + r0; case 0x37698: f0 = r6; f1 = r8; /* Next insn is delay slot */ pc=r31; return; case 0x376ac: r7 = r4 < 52 ? 1 : 0; if(r7 != r0) { /* Next insn is delay slot */ pc=0x376d0; continue; } r2 = r0 + 1024; if(r4 == r2) { /* Next insn is delay slot */ pc=0x3778c; continue; } case 0x376c4: f0 = f12; f1 = f13; /* Next insn is delay slot */ pc=r31; return; case 0x376d0: r10 = r0 + -1; r7 = r5 + -1043; r7 = r10 >>> (r7&0x1f); r10 = r7 & r3; if(r10 == r0) { /* Next insn is delay slot */ pc=0x376c4; continue; } f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x37698; continue; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x377ac; continue; } case 0x37724: r7 = ~(r0 | r7); r6 = r6 & r7; f0 = r6; r8 = r9 + r0; f1 = r8; /* Next insn is delay slot */ pc=r31; return; case 0x37740: f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x37698; continue; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x377e4; continue; } r6 = r0 + r0; r8 = r0 + r0; /* Next insn is delay slot */ pc=0x37698; continue; case 0x3778c: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x37798: r9 = 16 << 16; r4 = r9 >> (r4&0x1f); r9 = r4 + r2; /* Next insn is delay slot */ pc=0x3768c; continue; case 0x377ac: r8 = r0 + 20; if(r4 == r8) { /* Next insn is delay slot */ pc=0x377d8; continue; } r6 = r0 + 1075; r5 = r6 - r5; r6 = r0 + 1; r6 = r6 << (r5&0x1f); r6 = r6 + r3; r4 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x37724; continue; } case 0x377d8: r9 = r2 + 1; /* Next insn is delay slot */ pc=0x37724; continue; case 0x377e4: r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; r6 = r0 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x37698; continue; } 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: r8 = 49136 << 16; /* Next insn is delay slot */ pc=0x37698; run_37600(); 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: r4 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r3 = r3 & r4; r5 = f12; if(r3 == r0) { /* Next insn is delay slot */ pc=0x37a40; continue; } r2 = 65520 << 16; r2 = r3 + r2; r6 = 32736 << 16; r2 = ((r2 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x37a54; continue; } r2 = r0 + 4; /* Next insn is delay slot */ pc=r31; return; case 0x37a40: r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r3 = r0 + 3; r2 = r3 - r2; /* Next insn is delay slot */ pc=r31; return; case 0x37a54: r2 = 16 << 16; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x37a70; continue; } r2 = r0 + 3; /* Next insn is delay slot */ pc=r31; return; case 0x37a70: r2 = 32752 << 16; if(r3 == r2) { /* Next insn is delay slot */ pc=0x37a88; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x37a88: r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; /* Next insn is delay slot */ pc=r31; return; case 0x37c00: pc=0x37c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_37c00() throws ExecutionException { /* 0x37c00 - 0x37e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x37c00: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; 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: r3 = r0 + r0; f0 = r3; r2 = 32760 << 16; f1 = r2; /* 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: r2 = f13; r29 = r29 + -8; r5 = r2 >> 20; r5 = r5 & 2047; r4 = r5 + -1023; r7 = r4 < 20 ? 1 : 0; r3 = f12; r9 = r2 + r0; r6 = r2 >>> 31; if(r7 == r0) { /* Next insn is delay slot */ pc=0x38090; continue; } if(r4 < 0) { /* Next insn is delay slot */ pc=0x38144; continue; } r5 = 15 << 16; r5 = r5 | 65535; r5 = r5 >> (r4&0x1f); r7 = r5 & r2; r7 = r7 | r3; if(r7 == r0) { /* Next insn is delay slot */ pc=0x380a8; continue; } r5 = r5 >>> 1; r7 = r5 & r2; r7 = r7 | r3; if(r7 == r0) { /* Next insn is delay slot */ pc=0x381f4; continue; } r7 = r0 + 19; if(r4 == r7) { /* Next insn is delay slot */ pc=0x3820c; run_38200(); return; } r8 = r0 + r0; case 0x38074: r9 = 4 << 16; r5 = ~(r0 | r5); r2 = r5 & r2; r4 = r9 >> (r4&0x1f); r9 = r2 | r4; /* Next insn is delay slot */ pc=0x380f8; continue; case 0x38090: r7 = r4 < 52 ? 1 : 0; if(r7 != r0) { /* Next insn is delay slot */ pc=0x380b8; continue; } r2 = r0 + 1024; if(r4 == r2) { /* Next insn is delay slot */ pc=0x38200; run_38200(); return; } case 0x380a8: f0 = f12; f1 = f13; case 0x380ac: r29 = r29 + 8; /* Next insn is delay slot */ pc=r31; return; case 0x380b8: r5 = r5 + -1043; r4 = r0 + -1; r4 = r4 >>> (r5&0x1f); r7 = r4 & r3; if(r7 == r0) { /* Next insn is delay slot */ pc=0x380a8; continue; } r4 = r4 >>> 1; r7 = r4 & r3; r8 = r3 + r0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x380f8; continue; } r4 = ~(r0 | r4); r2 = 16384 << 16; r8 = r4 & r3; r5 = r2 >> (r5&0x1f); r8 = r8 | r5; case 0x380f8: r2 = 7 << 16; r6 = r6 << 3; r2 = r2 + 192; r6 = r6 + r2; f2 = r8; f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; f3 = r9; f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = f2; writePages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff] = f3; f12 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; f13 = readPages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff]; r29 = r29 + 8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=r31; return; case 0x38144: r7 = 32767 << 16; r7 = r7 | 65535; r4 = r7 & r2; r4 = r4 | r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x380a8; continue; } r4 = 15 << 16; r4 = r4 | 65535; r4 = r4 & r2; r3 = r4 | r3; r8 = r0 - r3; r3 = r8 | r3; r3 = r3 >>> 12; r8 = 8 << 16; r3 = r3 & r8; r8 = 65534 << 16; r2 = r8 & r2; r4 = r3 | r2; r2 = 7 << 16; r3 = r6 << 3; r5 = f12; r2 = r2 + 192; r2 = r3 + r2; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f2 = r5; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; f3 = r4; r6 = r6 << 31; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = f2; writePages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff] = f3; f2 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; f3 = readPages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r4 = f1; r3 = f0; r4 = r7 & r4; f0 = r3; r2 = r6 | r4; f1 = r2; /* Next insn is delay slot */ pc=0x380ac; continue; case 0x381f4: r8 = r0 + r0; /* Next insn is delay slot */ pc=0x380f8; continue; 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: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x380ac; run_38000(); return; case 0x3820c: r8 = 32768 << 16; /* Next insn is delay slot */ pc=0x38074; run_38000(); return; case 0x38400: pc=0x38400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_38400() throws ExecutionException { /* 0x38400 - 0x38600 */ int addr, tmp; for(;;) { switch(pc) { case 0x38400: r2 = f13; r5 = 32752 << 16; r4 = r5 & r2; r29 = r29 + -32; 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; r3 = f12; if(r4 != r0) { /* Next insn is delay slot */ pc=0x384c8; continue; } r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x38528; continue; } f0 = readPages[(r28+-31108)>>>12][((r28+-31108)>>>2)&0x3ff]; r4 = 65535 << 16; f1 = readPages[(r28+-31112)>>>12][((r28+-31112)>>>2)&0x3ff]; r4 = r4 + 15536; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } r4 = r6 < r4 ? 1 : 0; r2 = f15; if(r4 != r0) { /* Next insn is delay slot */ pc=0x38544; continue; } r4 = r5 & r2; r4 = r4 >> 20; r4 = r4 + -54; r7 = r4 + r6; r8 = r2 + r0; r2 = r7 < 2047 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x384e8; continue; } case 0x3848c: f20 = readPages[(r28+-31092)>>>12][((r28+-31092)>>>2)&0x3ff]; f21 = readPages[(r28+-31096)>>>12][((r28+-31096)>>>2)&0x3ff]; f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x384a8; pc=0x38800; run_38800(); return; case 0x384a8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x384c8: r8 = r2 + r0; r2 = r0 + 2047; if(r4 == r2) { /* Next insn is delay slot */ pc=0x385ac; continue; } r7 = r4 + r6; r2 = r7 < 2047 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3848c; continue; } case 0x384e8: if(r7 <= 0) { /* Next insn is delay slot */ pc=0x38568; continue; } r3 = f14; r4 = 32783 << 16; r4 = r4 | 65535; r7 = r7 << 20; r8 = r8 & r4; f0 = r3; r2 = r7 | r8; f1 = r2; case 0x38510: f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x38528: f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; f0 = f12; f1 = f13; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x38544: f0 = readPages[(r28+-31100)>>>12][((r28+-31100)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f1 = readPages[(r28+-31104)>>>12][((r28+-31104)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x38568: r2 = r7 < -53 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x385c8; continue; } r2 = r0 | 50001; r6 = r6 < r2 ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x3848c; continue; } f20 = readPages[(r28+-31100)>>>12][((r28+-31100)>>>2)&0x3ff]; f21 = readPages[(r28+-31104)>>>12][((r28+-31104)>>>2)&0x3ff]; f12 = f20; f13 = f21; /* Next insn is delay slot */ r31=0x385a0; pc=0x38800; run_38800(); return; case 0x385a0: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x38510; continue; case 0x385ac: f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x385c8: r5 = f14; r2 = 32783 << 16; r7 = r7 + 54; r2 = r2 | 65535; r7 = r7 << 20; r8 = r8 & r2; f2 = r5; f0 = readPages[(r28+-31084)>>>12][((r28+-31084)>>>2)&0x3ff]; r4 = r7 | r8; f3 = r4; f1 = readPages[(r28+-31088)>>>12][((r28+-31088)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x38510; 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: 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: r6 = f15; r5 = 32768 << 16; r6 = r5 & r6; r4 = f13; r3 = f12; r5 = 32767 << 16; r5 = r5 | 65535; r4 = r5 & r4; f0 = r3; r2 = r6 | r4; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x38a00: pc=0x38a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_38a00() throws ExecutionException { /* 0x38a00 - 0x38c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x38a00: r5 = r4 + r0; r6 = r0 + r0; r4 = r0 + r0; r7 = r0 + r0; /* Next insn is delay slot */ pc=0x56a00; run_56a00(); return; case 0x38c00: pc=0x38c00; 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[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; 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: r29 = r29 + -24; r5 = r0 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; /* Next insn is delay slot */ r31=0x38e1c; pc=0x56c00; run_56c00(); return; case 0x38e1c: r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r2 = readPages[(r4+60)>>>12][((r4+60)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x38e3c; continue; } /* Next insn is delay slot */ pc=r2; r31=0x38e3c; return; case 0x38e3c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x38e48; pc=0x48800; run_48800(); return; case 0x38e48: case 0x39000: pc=0x39000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_39000() throws ExecutionException { /* 0x39000 - 0x39200 */ int addr, tmp; for(;;) { switch(pc) { case 0x39000: r29 = r29 + -32; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r16 = r5 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3904c; continue; } r17 = r4 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3903c; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x39138; continue; } case 0x3903c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3906c; continue; } case 0x3904c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3906c: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3907c; pc=0x39800; run_39800(); return; case 0x3907c: r3 = readPages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff]; r18 = r2 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x390a4; continue; } r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ pc=r3; r31=0x3909c; return; case 0x3909c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x39148; continue; } case 0x390a4: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 128; if(r2 != r0) { /* Next insn is delay slot */ pc=0x39154; continue; } case 0x390b8: r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x390e4; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x390e0; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x390e0; pc=0x3ca00; run_3ca00(); return; case 0x390e0: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x390e4: r5 = readPages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x39104; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x39100; pc=0x3ca00; run_3ca00(); return; case 0x39100: writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; case 0x39104: /* Next insn is delay slot */ r31=0x3910c; pc=0x3aa00; run_3aa00(); return; case 0x3910c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x39118; pc=0x3ac00; run_3ac00(); return; case 0x39118: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r18 + r0; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x39138: /* Next insn is delay slot */ r31=0x39140; pc=0x3a600; run_3a600(); return; case 0x39140: /* Next insn is delay slot */ pc=0x3903c; continue; case 0x39148: r18 = r0 + -1; /* Next insn is delay slot */ pc=0x390a4; continue; case 0x39154: r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x39164; pc=0x3ca00; run_3ca00(); return; case 0x39164: /* Next insn is delay slot */ pc=0x390b8; 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: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x39000; run_39000(); return; case 0x39400: pc=0x39400; 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: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -40; r3 = r2 & 8; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r19 = r4 + r0; r17 = r5 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x39540; continue; } r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r2 = r2 | 2048; addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x395f4; continue; } case 0x39444: r3 = readPages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3951c; continue; } r2 = r2 & 65535; r4 = r2 & 4096; r16 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3960c; run_39600(); return; } r6 = readPages[(r17+80)>>>12][((r17+80)>>>2)&0x3ff]; case 0x39470: r2 = r2 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x394a4; continue; } r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r6 = r6 - r2; r2 = readPages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x394a4; continue; } r2 = readPages[(r17+60)>>>12][((r17+60)>>>2)&0x3ff]; r6 = r6 - r2; case 0x394a4: r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; r4 = r19 + r0; r7 = r0 + r0; /* Next insn is delay slot */ pc=r3; r31=0x394b8; return; case 0x394b8: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x39644; run_39600(); return; } case 0x394c4: addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r4 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; 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; r3 = r3 & 4096; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r0; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; if(r3 != r0) { /* Next insn is delay slot */ pc=0x396c8; run_39600(); return; } case 0x394f0: r5 = readPages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff]; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r16; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3951c; continue; } r2 = r17 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x39518; continue; } r4 = r19 + r0; /* Next insn is delay slot */ r31=0x39518; pc=0x3ca00; run_3ca00(); return; case 0x39518: writePages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff] = r0; case 0x3951c: r2 = r0 + r0; case 0x39520: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x39540: r18 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; if(r18 == r0) { /* Next insn is delay slot */ pc=0x3951c; continue; } r16 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r2 = r2 & 3; r16 = r16 - r18; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r18; if(r2 != r0) { /* Next insn is delay slot */ pc=0x395e8; continue; } r2 = readPages[(r5+20)>>>12][((r5+20)>>>2)&0x3ff]; case 0x39570: writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r2; if(r16 > 0) { /* Next insn is delay slot */ pc=0x39594; continue; } /* Next insn is delay slot */ pc=0x3951c; continue; case 0x39584: r16 = r16 - r2; r18 = r18 + r2; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x3951c; continue; } case 0x39594: r2 = readPages[(r17+36)>>>12][((r17+36)>>>2)&0x3ff]; r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; r4 = r19 + r0; r6 = r18 + r0; r7 = r16 + r0; /* Next insn is delay slot */ pc=r2; r31=0x395b0; return; case 0x395b0: if(r2 > 0) { /* Next insn is delay slot */ pc=0x39584; continue; } case 0x395b8: addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; 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]; r2 = r0 + -1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x395e8: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x39570; continue; case 0x395f4: r3 = readPages[(r5+60)>>>12][((r5+60)>>>2)&0x3ff]; if(r3 > 0) { /* Next insn is delay slot */ pc=0x39444; continue; } 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: /* Next insn is delay slot */ pc=0x3951c; run_39400(); return; case 0x3960c: r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; r6 = r0 + r0; r4 = r19 + r0; r7 = r0 + 1; /* Next insn is delay slot */ pc=r3; r31=0x39624; return; case 0x39624: r6 = r2 + r0; r2 = r0 + -1; if(r6 == r2) { /* Next insn is delay slot */ pc=0x39690; continue; } case 0x39634: addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = readPages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x39470; run_39400(); return; case 0x39644: r3 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x394c4; run_39400(); return; } r2 = r0 + 29; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3966c; continue; } r2 = r0 + 22; if(r3 != r2) { /* Next insn is delay slot */ pc=0x395b8; run_39400(); return; } case 0x3966c: addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r0; r2 = r2 & 63487; addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x394f0; run_39400(); return; case 0x39690: r2 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x39634; continue; } r3 = r0 + 29; if(r2 == r3) { /* Next insn is delay slot */ pc=0x396b8; continue; } r3 = r0 + 22; if(r2 != r3) { /* Next insn is delay slot */ pc=0x395b8; run_39400(); return; } case 0x396b8: writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r16; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x39520; run_39400(); return; case 0x396c8: writePages[(r17+80)>>>12][((r17+80)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x394f0; run_39400(); return; case 0x39800: pc=0x39800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_39800() throws ExecutionException { /* 0x39800 - 0x39a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x39800: 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=0x39828; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x39868; continue; } case 0x39828: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x39850; 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 0x39850: 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=0x39400; run_39400(); return; case 0x39868: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x39874; pc=0x3a600; run_3a600(); return; case 0x39874: r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x39828; continue; case 0x39a00: pc=0x39a00; 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: r5 = r4 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x39a18; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x39800; run_39800(); return; case 0x39a18: r5 = 4 << 16; r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r5 = r5 + -26624; /* Next insn is delay slot */ pc=0x3d800; run_3d800(); return; case 0x39c00: pc=0x39c00; 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: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x39e00: pc=0x39e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_39e00() throws ExecutionException { /* 0x39e00 - 0x3a000 */ int addr, tmp; for(;;) { switch(pc) { case 0x39e00: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x3a000: pc=0x3a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3a000() throws ExecutionException { /* 0x3a000 - 0x3a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3a000: r5 = 4 << 16; r5 = r5 + -28160; /* Next insn is delay slot */ pc=0x3d600; run_3d600(); return; 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: r29 = r29 + -32; r2 = r5 << 2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r18 = r5 << 4; r18 = r18 - r2; r18 = r18 + r5; r18 = r18 << 3; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r17 = r5 + r0; r5 = r18 + 12; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3a238; pc=0x3ec00; run_3ec00(); return; case 0x3a238: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3a264; 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; r5 = r0 + r0; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x3a264; pc=0x48fec; run_48e00(); return; case 0x3a264: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; 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 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: r5 = 4 << 16; r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r5 = r5 + -28160; /* Next insn is delay slot */ pc=0x3d600; run_3d600(); return; case 0x3a600: pc=0x3a600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3a600() throws ExecutionException { /* 0x3a600 - 0x3a800 */ int addr, tmp; for(;;) { switch(pc) { case 0x3a600: r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; 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; r17 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3a77c; continue; } r2 = 4 << 16; r2 = r2 + -24576; writePages[(r4+60)>>>12][((r4+60)>>>2)&0x3ff] = r2; r2 = r0 + 3; r16 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; writePages[(r4+740)>>>12][((r4+740)>>>2)&0x3ff] = r2; r2 = r4 + 748; writePages[(r4+744)>>>12][((r4+744)>>>2)&0x3ff] = r2; r22 = r0 + 1; r2 = r0 + 4; r21 = 4 << 16; r20 = 4 << 16; r19 = 4 << 16; r18 = 4 << 16; writePages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff] = r22; writePages[(r4+736)>>>12][((r4+736)>>>2)&0x3ff] = r0; r21 = r21 + 8704; r4 = r16 + 92; r20 = r20 + 9728; r19 = r19 + 10240; r18 = r18 + 10752; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r0; addr=r16+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3a6bc; pc=0x48fec; run_48e00(); return; case 0x3a6bc: writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; r16 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; 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; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3a710; pc=0x48fec; run_48e00(); return; case 0x3a710: writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; r16 = readPages[(r17+12)>>>12][((r17+12)>>>2)&0x3ff]; 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; 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; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3a768; pc=0x48fec; run_48e00(); return; case 0x3a768: writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; case 0x3a77c: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3a800: pc=0x3a800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3a800() throws ExecutionException { /* 0x3a800 - 0x3aa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3a800: r29 = r29 + -40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; r18 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r2 = readPages[(r18+56)>>>12][((r18+56)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r19 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3a900; continue; } case 0x3a82c: r18 = r18 + 736; r17 = r0 + -1; case 0x3a834: r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r2 = r2 + -1; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x3a860; continue; } /* Next insn is delay slot */ pc=0x3a8e4; continue; case 0x3a850: r2 = r2 + -1; r16 = r16 + 104; if(r2 == r17) { /* Next insn is delay slot */ pc=0x3a8e4; continue; } case 0x3a860: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3a850; 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; 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; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3a8b0; pc=0x48fec; run_48e00(); return; case 0x3a8b0: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r0; writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; writePages[(r16+72)>>>12][((r16+72)>>>2)&0x3ff] = r0; r2 = r16 + r0; case 0x3a8c4: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x3a8e4: r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3a914; continue; } case 0x3a8f4: r18 = r2 + r0; /* Next insn is delay slot */ pc=0x3a834; continue; case 0x3a900: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x3a90c; pc=0x3a600; run_3a600(); return; case 0x3a90c: /* Next insn is delay slot */ pc=0x3a82c; continue; case 0x3a914: r4 = r19 + r0; r5 = r0 + 4; /* Next insn is delay slot */ r31=0x3a924; pc=0x3a200; run_3a200(); return; case 0x3a924: writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3a8f4; continue; } r2 = r0 + 12; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3a8c4; continue; 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: /* Next insn is delay slot */ pc=r31; return; 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=r31; return; 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: /* Next insn is delay slot */ pc=r31; return; case 0x3b000: pc=0x3b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3b000() throws ExecutionException { /* 0x3b000 - 0x3b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3b000: /* Next insn is delay slot */ pc=r31; return; case 0x3b200: pc=0x3b200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3b200() throws ExecutionException { /* 0x3b200 - 0x3b400 */ int addr, tmp; for(;;) { switch(pc) { case 0x3b200: r5 = 4 << 16; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r5 + -25600; /* Next insn is delay slot */ pc=0x3d600; run_3d600(); return; case 0x3b400: pc=0x3b400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3b400() throws ExecutionException { /* 0x3b400 - 0x3b600 */ int addr, tmp; for(;;) { switch(pc) { case 0x3b400: r5 = 4 << 16; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r5 + -25088; /* Next insn is delay slot */ pc=0x3d600; run_3d600(); return; case 0x3b600: pc=0x3b600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3b600() throws ExecutionException { /* 0x3b600 - 0x3b800 */ int addr, tmp; for(;;) { switch(pc) { case 0x3b600: r29 = r29 + -48; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; r19 = r5 + r0; r5 = r6 + r0; r6 = r29 + 16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; r18 = r4 + r0; /* Next insn is delay slot */ r31=0x3b630; pc=0x59600; run_59600(); return; case 0x3b630: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3b6f4; continue; } r4 = r18 + r0; /* Next insn is delay slot */ r31=0x3b648; pc=0x3a800; run_3a800(); return; case 0x3b648: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3b6f4; continue; } r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = r18 + r0; r5 = r19 + r0; r7 = r0 + 438; /* Next insn is delay slot */ r31=0x3b66c; pc=0x48820; run_48800(); return; case 0x3b66c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x3b6e0; continue; } addr=r16+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 4 << 16; r2 = r2 + 8704; writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r2; r2 = 4 << 16; r2 = r2 + 9728; writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r2; r2 = 4 << 16; r2 = r2 + 10240; writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r2; r2 = 4 << 16; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r17&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + 10752; r17 = r17 & 256; writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r2; if(r17 != r0) { /* Next insn is delay slot */ pc=0x3b718; continue; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r16 + r0; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3b6e0: /* Next insn is delay slot */ r31=0x3b6e8; pc=0x3aa00; run_3aa00(); return; case 0x3b6e8: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x3b6f4; pc=0x3ac00; run_3ac00(); return; case 0x3b6f4: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3b718: r4 = r18 + r0; r5 = r16 + r0; r6 = r0 + r0; r7 = r0 + 2; /* Next insn is delay slot */ r31=0x3b730; pc=0x3ce00; run_3ce00(); return; case 0x3b730: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r16 + r0; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3b800: pc=0x3b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3b800() throws ExecutionException { /* 0x3b800 - 0x3ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3b800: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x3b600; run_3b600(); return; 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: r29 = r29 + -32; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; r7 = r29 + 44; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x3ba1c; pc=0x45c00; run_45c00(); return; case 0x3ba1c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3bc00: pc=0x3bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3bc00() throws ExecutionException { /* 0x3bc00 - 0x3be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3bc00: r29 = r29 + -32; r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; r6 = r5 + r0; r7 = r29 + 40; r5 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x3bc30; pc=0x45c00; run_45c00(); return; case 0x3bc30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; 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: 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=0x3be40; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3be40; continue; } writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x3be38; pc=0x3a600; run_3a600(); return; case 0x3be38: r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x3be40: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3fe00; run_3fe00(); return; case 0x3c000: pc=0x3c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3c000() throws ExecutionException { /* 0x3c000 - 0x3c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3c000: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r6 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3c05c; continue; } r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3c044; continue; } writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x3c03c; pc=0x3a600; run_3a600(); return; case 0x3c03c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x3c044: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r5 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3fe00; run_3fe00(); return; case 0x3c05c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r5 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3fe00; run_3fe00(); return; 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: { long hilo = (r7) * 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; r21 = lo; r22 = r6 + r0; r23 = r7 + r0; r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; if(r21 == r0) { /* Next insn is delay slot */ pc=0x3c380; continue; } r20 = r4 + r0; r18 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3c268; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3c4b8; run_3c400(); return; } case 0x3c268: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3c29c; continue; } case 0x3c280: r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; r2 = r3 | 8192; r3 = r0 + -8193; r3 = r4 & r3; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r3; r2 = r2 & 65535; case 0x3c29c: r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; if(r17 < 0) { /* Next insn is delay slot */ pc=0x3c3a8; continue; } r2 = r2 & 2; r3 = r17 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3c3c0; continue; } case 0x3c2bc: r19 = r21 + r0; /* Next insn is delay slot */ pc=0x3c308; continue; case 0x3c2c8: r6 = r17 + r0; /* Next insn is delay slot */ r31=0x3c2d4; pc=0x48fdc; run_48e00(); return; case 0x3c2d4: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r20 + r0; r2 = r2 + r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r5 = r16 + r0; r18 = r18 + r17; r19 = r19 - r17; /* Next insn is delay slot */ r31=0x3c2f8; pc=0x41200; run_41200(); return; case 0x3c2f8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3c38c; continue; } r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; case 0x3c308: r3 = ((r17 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; r4 = r18 + r0; r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3c2c8; continue; } r6 = r19 + r0; /* Next insn is delay slot */ r31=0x3c328; pc=0x48fdc; run_48e00(); return; case 0x3c328: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 - r19; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r19 = r2 + r19; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; case 0x3c348: r2 = r23 + r0; case 0x3c34c: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x3c380: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3c34c; continue; case 0x3c38c: 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)); } pc=0x3c39c; continue; } if(r22!=0) { hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x3c39c: r2 = lo; /* Next insn is delay slot */ pc=0x3c34c; continue; case 0x3c3a8: r2 = r2 & 2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; r3 = r0 + r0; r17 = r0 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3c2bc; continue; } case 0x3c3c0: r2 = ((r21 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r17 = r3 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3c3d4; continue; } r17 = r21 + r0; case 0x3c3d4: r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x3c3e8; pc=0x48fdc; run_48e00(); return; case 0x3c3e8: r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; r19 = r19 + r17; r2 = r2 - r17; r18 = r18 + r17; 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: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r17 = r21 - r17; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3c4e0; continue; } if(r17 == r0) { /* Next insn is delay slot */ pc=0x3c348; run_3c200(); return; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x3c438; continue; } r4 = r20 + r0; /* Next insn is delay slot */ r31=0x3c434; pc=0x3ca00; run_3ca00(); return; case 0x3c434: r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x3c438: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x3c43c: r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r30 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x3c458; continue; case 0x3c450: if(r17 == r0) { /* Next insn is delay slot */ pc=0x3c348; run_3c200(); return; } case 0x3c458: writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r18; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r4 = r20 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3c474; pc=0x41200; run_41200(); return; case 0x3c474: r4 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r30; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r3; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; r17 = r17 - r4; r18 = r18 + r4; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3c450; 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)); } pc=0x3c4ac; continue; } if(r22!=0) { hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x3c4ac: r2 = lo; /* Next insn is delay slot */ pc=0x3c34c; run_3c200(); return; case 0x3c4b8: /* Next insn is delay slot */ r31=0x3c4c0; pc=0x3a600; run_3a600(); return; case 0x3c4c0: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3c29c; run_3c200(); return; } /* Next insn is delay slot */ pc=0x3c280; run_3c200(); return; case 0x3c4e0: if(r17 != r0) { /* Next insn is delay slot */ pc=0x3c43c; continue; } /* Next insn is delay slot */ pc=0x3c348; run_3c200(); 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: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3c630; pc=0x3c200; run_3c200(); return; case 0x3c630: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3c800: pc=0x3c800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3c800() throws ExecutionException { /* 0x3c800 - 0x3ca00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3c800: r29 = r29 + -40; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r18 = 7 << 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; r20 = r5 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r18 = r18 + 11104; /* Next insn is delay slot */ r31=0x3c834; pc=0x48b80; run_48a00(); return; case 0x3c834: r4 = r17 + r0; r16 = r2 + r0; /* Next insn is delay slot */ r31=0x3c844; pc=0x3f600; run_3f600(); return; case 0x3c844: r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r19 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; 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)); } pc=0x3c870; continue; } if(r16!=0) { hi = (int)((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); lo = (int)((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x3c870: r20 = lo; r20 = r20 + -1; { long hilo = (r20) * r16; hi = (int) (hilo >>> 32); lo = (int) hilo; } r20 = lo; r16 = r20 < r16 ? 1 : 0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x3c8b4; continue; } r4 = r17 + r0; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x3c8a0; pc=0x48920; run_48800(); return; case 0x3c8a0: r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r3 = r3 + r19; if(r2 == r3) { /* Next insn is delay slot */ pc=0x3c8e8; continue; } case 0x3c8b4: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3c8c0; pc=0x3f800; run_3f800(); return; case 0x3c8c0: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x3c8e8: r4 = r17 + r0; r5 = r0 - r20; /* Next insn is delay slot */ r31=0x3c8f8; pc=0x48920; run_48800(); return; case 0x3c8f8: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x3c958; continue; } r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r19 = r19 - r20; r19 = r19 | 1; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; r2 = 7 << 16; r3 = readPages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff]; r4 = r17 + r0; r20 = r3 - r20; writePages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff] = r20; /* Next insn is delay slot */ r31=0x3c930; pc=0x3f800; run_3f800(); return; case 0x3c930: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x3c958: r4 = r17 + r0; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x3c968; pc=0x48920; run_48800(); return; case 0x3c968: r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r4 = r2 - r3; r5 = r4 < 16 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3c8b4; continue; } r5 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; r4 = r4 | 1; r2 = r2 - r5; r5 = 7 << 16; writePages[(r5+17968)>>>12][((r5+17968)>>>2)&0x3ff] = r2; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3c8b4; continue; 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: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r16 = r5 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3cba0; continue; } r17 = r4 + r0; /* Next insn is delay slot */ r31=0x3ca28; pc=0x3f600; run_3f600(); return; case 0x3ca28: r8 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; r2 = r0 + -2; r6 = r16 + -8; r2 = r8 & r2; r3 = r6 + r2; r5 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r7 = 7 << 16; r4 = r0 + -4; r7 = r7 + 11104; r5 = r5 & r4; r4 = readPages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff]; if(r4 == r3) { /* Next insn is delay slot */ pc=0x3cc44; run_3cc00(); return; } r8 = r8 & 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r5; if(r8 == r0) { /* Next insn is delay slot */ pc=0x3cb64; continue; } r4 = r0 + r0; case 0x3ca74: r8 = r3 + r5; r8 = readPages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff]; r8 = r8 & 1; if(r8 != r0) { /* Next insn is delay slot */ pc=0x3caac; continue; } r2 = r2 + r5; r5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3cc0c; run_3cc00(); return; } case 0x3ca9c: r3 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; writePages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff] = r3; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r5; case 0x3caac: 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=0x3cb48; continue; } r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3cbb8; continue; } r3 = r2 >>> 9; r4 = (r3&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3ccb8; run_3cc00(); return; } r4 = r2 >>> 6; r4 = r4 + 56; r8 = r4 << 1; case 0x3caec: r8 = r8 << 2; r8 = r7 + r8; r3 = readPages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff]; if(r3 == r8) { /* Next insn is delay slot */ pc=0x3ccd4; run_3cc00(); return; } r4 = r0 + -4; case 0x3cb08: r5 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r5 = r5 & r4; r5 = ((r2 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3cb30; continue; } r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r8 != r3) { /* Next insn is delay slot */ pc=0x3cb08; continue; } case 0x3cb30: r2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; case 0x3cb38: writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r2; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r3; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r6; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; case 0x3cb48: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r17 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3f800; run_3f800(); return; case 0x3cb64: r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; r8 = 7 << 16; r6 = r6 - r4; r2 = r2 + r4; r4 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; r8 = r8 + 11112; if(r4 == r8) { /* Next insn is delay slot */ pc=0x3ccac; run_3cc00(); return; } r8 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r8; writePages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff] = r4; r4 = r0 + r0; /* Next insn is delay slot */ pc=0x3ca74; continue; case 0x3cba0: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3cbb8: r2 = r2 >>> 3; r3 = r2 >> 2; r4 = r0 + 1; r3 = r4 << (r3&0x1f); r4 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; r2 = r2 << 3; r3 = r3 | r4; writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r3; 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]; r4 = r17 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r7; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; writePages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff] = r6; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r6; case 0x3cc00: pc=0x3cc00; 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: r29 = r29 + 32; /* Next insn is delay slot */ pc=0x3f800; run_3f800(); return; case 0x3cc0c: r8 = 7 << 16; r8 = r8 + 11112; if(r5 != r8) { /* Next insn is delay slot */ pc=0x3ca9c; run_3ca00(); return; } 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=0x3cb48; run_3ca00(); return; case 0x3cc44: r8 = r8 & 1; r2 = r5 + r2; if(r8 != r0) { /* Next insn is delay slot */ pc=0x3cc78; continue; } r3 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; r6 = r6 - r3; r4 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; r2 = r2 + r3; r3 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r3; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r4; case 0x3cc78: r5 = readPages[(r28+-31064)>>>12][((r28+-31064)>>>2)&0x3ff]; r3 = r2 | 1; r2 = ((r2 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; writePages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff] = r6; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3cb48; run_3ca00(); return; } r5 = readPages[(r28+-30640)>>>12][((r28+-30640)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3cca4; pc=0x3c800; run_3c800(); return; case 0x3cca4: /* Next insn is delay slot */ pc=0x3cb48; run_3ca00(); return; case 0x3ccac: r4 = r0 + 1; /* Next insn is delay slot */ pc=0x3ca74; run_3ca00(); return; case 0x3ccb8: r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3ccfc; continue; } r4 = r3 + 91; r8 = r4 << 1; /* Next insn is delay slot */ pc=0x3caec; run_3ca00(); return; case 0x3ccd4: r2 = r0 + 1; r4 = r4 >> 2; r4 = r2 << (r4&0x1f); r2 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; r2 = r4 | r2; writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r2; r2 = r3 + r0; /* Next insn is delay slot */ pc=0x3cb38; run_3ca00(); return; case 0x3ccfc: r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3cd1c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r8 = r4 << 1; /* Next insn is delay slot */ pc=0x3caec; run_3ca00(); return; case 0x3cd1c: r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3cd3c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r8 = r4 << 1; /* Next insn is delay slot */ pc=0x3caec; run_3ca00(); return; case 0x3cd3c: r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3cd5c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r8 = r4 << 1; /* Next insn is delay slot */ pc=0x3caec; run_3ca00(); return; case 0x3cd5c: r8 = r0 + 252; r4 = r0 + 126; /* Next insn is delay slot */ pc=0x3caec; run_3ca00(); return; 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: 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; r17 = r4 + r0; r16 = r5 + r0; r21 = r6 + r0; r18 = r7 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3ce50; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3d030; run_3d000(); return; } case 0x3ce50: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3d04c; run_3d000(); return; } case 0x3ce64: r19 = readPages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff]; if(r19 == r0) { /* Next insn is delay slot */ pc=0x3d388; run_3d200(); return; } r2 = r0 + 1; if(r18 == r2) { /* Next insn is delay slot */ pc=0x3cfc4; continue; } r2 = r0 + 2; if(r18 == r2) { /* Next insn is delay slot */ pc=0x3ced4; continue; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x3ced4; continue; } r2 = r0 + 22; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; case 0x3ce9c: r20 = r0 + -1; case 0x3cea0: r31 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r2 = r20 + r0; r23 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r22 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; r21 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r29 = r29 + 120; /* Next insn is delay slot */ pc=r31; return; case 0x3ced4: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r22 = r0 + r0; r20 = r0 + r0; case 0x3cee0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3d324; run_3d200(); return; } case 0x3cee8: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 2074; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3cf24; continue; } r2 = r2 & 1024; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3d0b8; run_3d000(); return; } r2 = 4 << 16; r2 = r2 + 10240; if(r19 == r2) { /* Next insn is delay slot */ pc=0x3d064; run_3d000(); return; } case 0x3cf1c: r3 = r3 | 2048; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x3cf24: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3cf34; pc=0x39800; run_39800(); return; case 0x3cf34: r20 = r2 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3ce9c; continue; } r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r21 + r0; r7 = r18 + r0; /* Next insn is delay slot */ pc=r19; r31=0x3cf58; return; case 0x3cf58: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x3ce9c; continue; } r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3cf90; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x3cf8c; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3cf8c; pc=0x3ca00; run_3ca00(); return; case 0x3cf8c: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x3cf90: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; 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; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3cfbc; pc=0x48fec; run_48e00(); return; case 0x3cfbc: /* Next insn is delay slot */ pc=0x3cea0; continue; case 0x3cfc4: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3cfd4; pc=0x39800; run_39800(); return; case 0x3cfd4: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r2 & 4096; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3d2e4; run_3d200(); return; } r20 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; case 0x3cfec: r3 = r2 & 4; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3d1a0; run_3d000(); return; } r2 = r2 & 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3d1c8; run_3d000(); return; } case 0x3d000: pc=0x3d000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3d000() throws ExecutionException { /* 0x3d000 - 0x3d200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3d000: r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3d01c; continue; } r3 = r3 - r2; r20 = r20 + r3; case 0x3d01c: r21 = r21 + r20; r22 = r0 + 1; r18 = r0 + r0; /* Next insn is delay slot */ pc=0x3cee0; run_3ce00(); return; case 0x3d030: /* Next insn is delay slot */ r31=0x3d038; pc=0x3a600; run_3a600(); return; case 0x3d038: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; if(r3 != r2) { /* Next insn is delay slot */ pc=0x3ce64; run_3ce00(); return; } case 0x3d04c: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3d05c; pc=0x39800; run_39800(); return; case 0x3d05c: /* Next insn is delay slot */ pc=0x3ce64; run_3ce00(); return; case 0x3d064: addr=r16+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; if(r5 < 0) { /* Next insn is delay slot */ pc=0x3cf1c; run_3ce00(); return; } r4 = r17 + r0; r6 = r29 + 16; /* Next insn is delay slot */ r31=0x3d084; pc=0x48960; run_48800(); return; case 0x3d084: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3d318; run_3d200(); return; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 | 32768; r3 = r3 & 61440; if(r3 != r2) { /* Next insn is delay slot */ pc=0x3d318; run_3d200(); return; } 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; r2 = tmp; r2 = r2 | 1024; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x3d0b8: if(r18 != r0) { /* Next insn is delay slot */ pc=0x3d1d4; continue; } r23 = r21 + r0; if(r22 != r0) { /* Next insn is delay slot */ pc=0x3d204; run_3d200(); return; } case 0x3d0cc: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 4096; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3d33c; run_3d200(); return; } r2 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; case 0x3d0e4: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; r20 = r2 - r3; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3d368; run_3d200(); return; } r6 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; r20 = r20 - r6; case 0x3d104: r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r20 = r20 + r3; r2 = r2 - r4; r20 = r20 - r2; r2 = r6 + r2; case 0x3d11c: r3 = r23 < r20 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3d220; run_3d200(); return; } r3 = r20 + r2; r3 = ((r23 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3d220; run_3d200(); return; } r20 = r23 - r20; r4 = r4 + r20; r2 = r2 - r20; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3d170; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x3d16c; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3d16c; pc=0x3ca00; run_3ca00(); return; case 0x3d16c: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x3d170: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 65503; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x3d180: r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; /* Next insn is delay slot */ r31=0x3d194; pc=0x48fec; run_48e00(); return; case 0x3d194: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x3cea0; run_3ce00(); return; case 0x3d1a0: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r20 = r20 - r2; r2 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3d1c8; continue; } r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; r20 = r20 - r2; case 0x3d1c8: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3d01c; continue; case 0x3d1d4: addr=r16+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r29 + 16; /* Next insn is delay slot */ r31=0x3d1e8; pc=0x48960; run_48800(); return; case 0x3d1e8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3cf24; run_3ce00(); return; } r23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r23 = r21 + r23; if(r22 == r0) { /* Next insn is delay slot */ pc=0x3d0cc; continue; } case 0x3d200: pc=0x3d200; 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: case 0x3d204: r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3d368; continue; } r6 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3d104; run_3d000(); return; case 0x3d220: r20 = readPages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff]; r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r20 = r0 - r20; r20 = r23 & r20; r4 = r17 + r0; r6 = r20 + r0; r7 = r0 + r0; /* Next insn is delay slot */ pc=r19; r31=0x3d244; return; case 0x3d244: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x3cf24; run_3ce00(); return; } r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3d284; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x3d280; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3d280; pc=0x3ca00; run_3ca00(); return; case 0x3d280: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x3d284: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r23 = r23 - r20; r2 = r2 & 65503; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r23 == r0) { /* Next insn is delay slot */ pc=0x3d180; run_3d000(); return; } r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3d2ac; pc=0x41200; run_41200(); return; case 0x3d2ac: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3cf24; run_3ce00(); return; } r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = ((r2 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3cf24; run_3ce00(); return; } r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 - r23; r3 = r3 + r23; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x3d180; run_3d000(); return; case 0x3d2e4: r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; /* Next insn is delay slot */ pc=r19; r31=0x3d2fc; return; case 0x3d2fc: r20 = r2 + r0; r2 = r0 + -1; if(r20 == r2) { /* Next insn is delay slot */ pc=0x3ce9c; run_3ce00(); return; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; /* Next insn is delay slot */ pc=0x3cfec; run_3ce00(); return; case 0x3d318: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; /* Next insn is delay slot */ pc=0x3cf1c; run_3ce00(); return; case 0x3d324: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x3d334; pc=0x3e600; run_3e600(); return; case 0x3d334: /* Next insn is delay slot */ pc=0x3cee8; run_3ce00(); return; case 0x3d33c: r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; /* Next insn is delay slot */ pc=r19; r31=0x3d354; return; case 0x3d354: r3 = r0 + -1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x3d0e4; run_3d000(); return; } /* Next insn is delay slot */ pc=0x3cf24; run_3ce00(); return; case 0x3d368: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r5 = r0 + r0; r2 = r2 - r4; r20 = r20 - r2; r2 = r3 + r2; /* Next insn is delay slot */ pc=0x3d11c; run_3d000(); return; case 0x3d388: r2 = r0 + 29; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r20 = r0 + -1; /* Next insn is delay slot */ pc=0x3cea0; run_3ce00(); return; case 0x3d400: pc=0x3d400; 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: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x3ce00; run_3ce00(); return; 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: r29 = r29 + -48; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r19 = r4 + 736; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; if(r19 == r0) { /* Next insn is delay slot */ pc=0x3d6cc; continue; } r21 = r5 + r0; r20 = r0 + r0; r18 = r0 + -1; case 0x3d638: r17 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; r16 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; r17 = r17 + -1; if(r17 < 0) { /* Next insn is delay slot */ pc=0x3d690; continue; } case 0x3d64c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3d680; 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 */ r3 = tmp; if(r3 == r18) { /* Next insn is delay slot */ pc=0x3d680; continue; } r4 = r16 + r0; /* Next insn is delay slot */ pc=r21; r31=0x3d67c; return; case 0x3d67c: r20 = r20 | r2; case 0x3d680: r17 = r17 + -1; r16 = r16 + 104; if(r17 != r18) { /* Next insn is delay slot */ pc=0x3d64c; continue; } case 0x3d690: r19 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r19 != r0) { /* Next insn is delay slot */ pc=0x3d638; continue; } case 0x3d6a0: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r20 + r0; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3d6cc: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x3d6a0; continue; case 0x3d800: pc=0x3d800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3d800() throws ExecutionException { /* 0x3d800 - 0x3da00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3d800: r29 = r29 + -48; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; r19 = r4 + 736; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r20 = r4 + r0; if(r19 == r0) { /* Next insn is delay slot */ pc=0x3d8dc; continue; } r21 = r5 + r0; r22 = r0 + r0; r18 = r0 + -1; case 0x3d840: r17 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; r16 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; r17 = r17 + -1; if(r17 < 0) { /* Next insn is delay slot */ pc=0x3d89c; continue; } case 0x3d854: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3d88c; 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 */ r3 = tmp; if(r3 == r18) { /* Next insn is delay slot */ pc=0x3d88c; continue; } r4 = r20 + r0; r5 = r16 + r0; /* Next insn is delay slot */ pc=r21; r31=0x3d888; return; case 0x3d888: r22 = r22 | r2; case 0x3d88c: r17 = r17 + -1; r16 = r16 + 104; if(r17 != r18) { /* Next insn is delay slot */ pc=0x3d854; continue; } case 0x3d89c: r19 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r19 != r0) { /* Next insn is delay slot */ pc=0x3d840; continue; } case 0x3d8ac: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r22 + r0; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3d8dc: r22 = r0 + r0; /* Next insn is delay slot */ pc=0x3d8ac; continue; 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: { long hilo = (r7) * 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; 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; r17 = r4 + r0; r18 = lo; r19 = r6 + r0; r20 = r7 + r0; r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3da68; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3db14; continue; } case 0x3da68: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 8192; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3da94; 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]; r2 = r0 + -8193; r2 = r3 & r2; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; case 0x3da94: r4 = r17 + r0; r5 = r16 + r0; r6 = r29 + 16; /* Next insn is delay slot */ r31=0x3daa8; pc=0x59c00; run_59c00(); return; case 0x3daa8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3daec; continue; } r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r18 = r18 - r2; if(r19 != r0) { /* Next insn is delay slot */ if(r19!=0) { hi = (int)((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); lo = (int)((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); } pc=0x3dac8; continue; } if(r19!=0) { hi = (int)((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); lo = (int)((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x3dac8: r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 64; r2 = lo; /* Next insn is delay slot */ pc=r31; return; case 0x3daec: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r20 + r0; r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x3db14: /* Next insn is delay slot */ r31=0x3db1c; pc=0x3a600; run_3a600(); return; case 0x3db1c: /* Next insn is delay slot */ pc=0x3da68; continue; 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: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3dc30; pc=0x3da00; run_3da00(); return; case 0x3dc30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; 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: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x3e200; run_3e200(); return; case 0x3e000: pc=0x3e000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3e000() throws ExecutionException { /* 0x3e000 - 0x3e200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3e000: r29 = r29 + -32; r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3e01c; pc=0x3e200; run_3e200(); return; case 0x3e01c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; 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: 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; r20 = r4 + r0; r18 = r5 + r0; r21 = r6 + r0; /* Next insn is delay slot */ r31=0x3e238; pc=0x58e00; run_58e00(); return; case 0x3e238: r16 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; if(r16 == r0) { /* Next insn is delay slot */ pc=0x3e2f0; 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 */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3e354; continue; } r5 = r0 + 61; r2 = r18 + r0; r4 = r0 + 61; if(r3 != r5) { /* Next insn is delay slot */ pc=0x3e27c; continue; } /* Next insn is delay slot */ pc=0x3e2f0; continue; case 0x3e274: if(r3 == r4) { /* Next insn is delay slot */ pc=0x3e2f0; continue; } case 0x3e27c: r2 = r2 + 1; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3e274; continue; } r17 = r2 - r18; case 0x3e294: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3e2f0; continue; } r22 = r0 + 61; case 0x3e2a8: r5 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x3e2b8; pc=0x43000; run_43000(); return; case 0x3e2b8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x3e2dc; continue; } r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r19 = r19 + r17; addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r22) { /* Next insn is delay slot */ pc=0x3e32c; continue; } case 0x3e2dc: r16 = r16 + 4; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3e2a8; continue; } case 0x3e2f0: r4 = r20 + r0; /* Next insn is delay slot */ r31=0x3e2fc; pc=0x59000; run_59000(); return; case 0x3e2fc: r2 = r0 + r0; case 0x3e300: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x3e32c: r2 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; r4 = r20 + r0; r16 = r16 - r2; r16 = r16 >> 2; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x3e348; pc=0x59000; run_59000(); return; case 0x3e348: r2 = r19 + 1; /* Next insn is delay slot */ pc=0x3e300; continue; case 0x3e354: r17 = r0 + r0; /* Next insn is delay slot */ pc=0x3e294; continue; 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: r29 = r29 + -32; r6 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x3e414; pc=0x3e200; run_3e200(); return; case 0x3e414: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3e600: pc=0x3e600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3e600() throws ExecutionException { /* 0x3e600 - 0x3e800 */ int addr, tmp; for(;;) { switch(pc) { case 0x3e600: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -104; r3 = r2 & 65535; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = r3 & 2; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r31; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r19; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r18; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3e730; 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 */ r5 = tmp; r17 = r4 + r0; if(r5 < 0) { /* Next insn is delay slot */ pc=0x3e6f0; continue; } r6 = r29 + 16; /* Next insn is delay slot */ r31=0x3e64c; pc=0x48960; run_48800(); return; case 0x3e64c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x3e6e4; continue; } r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r0 | 32768; r2 = r2 & 61440; r19 = r2 ^ 8192; r19 = (r19&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; if(r2 == r3) { /* Next insn is delay slot */ pc=0x3e770; continue; } case 0x3e670: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r18 = r0 + 1024; r2 = r2 | 2048; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x3e680: r4 = r17 + r0; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x3e690; pc=0x3ec00; run_3ec00(); return; case 0x3e690: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3e714; continue; } r3 = 4 << 16; r3 = r3 + -24576; writePages[(r17+60)>>>12][((r17+60)>>>2)&0x3ff] = r3; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r3 = r3 | 128; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r18; if(r19 != r0) { /* Next insn is delay slot */ pc=0x3e7a4; continue; } case 0x3e6c4: r31 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r29 = r29 + 104; /* Next insn is delay slot */ pc=r31; return; case 0x3e6e4: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 65535; case 0x3e6f0: r3 = r3 & 128; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3e764; continue; } r18 = r0 + 1024; case 0x3e700: 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; r19 = r0 + r0; /* Next insn is delay slot */ pc=0x3e680; continue; case 0x3e714: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 512; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3e6c4; continue; } r2 = r2 | 2; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x3e730: 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; 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]; r29 = r29 + 104; /* Next insn is delay slot */ pc=r31; return; case 0x3e764: r18 = r0 + 64; /* Next insn is delay slot */ pc=0x3e700; continue; case 0x3e770: r2 = 4 << 16; r3 = readPages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff]; r2 = r2 + 10240; if(r3 != r2) { /* Next insn is delay slot */ pc=0x3e670; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r18 = r0 + 1024; r2 = r2 | 1024; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 1024; writePages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x3e680; continue; case 0x3e7a4: addr=r16+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x3e7b4; pc=0x56800; run_56800(); return; case 0x3e7b4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x3e6c4; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 1; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x3e6c4; continue; case 0x3e800: pc=0x3e800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3e800() throws ExecutionException { /* 0x3e800 - 0x3ea00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3e800: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3ec00; run_3ec00(); return; case 0x3ea00: pc=0x3ea00; 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: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3ca00; run_3ca00(); return; case 0x3ec00: pc=0x3ec00; 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: 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; r19 = r4 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3ed04; continue; } r17 = r0 + -8; r17 = r2 & r17; if(r17 < 0) { /* Next insn is delay slot */ pc=0x3ed14; continue; } r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3ed14; continue; } case 0x3ec5c: r4 = r19 + r0; /* Next insn is delay slot */ r31=0x3ec68; pc=0x3f600; run_3f600(); return; case 0x3ec68: r2 = (r17&0xffffffffL) < (504&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3ed28; continue; } r18 = 7 << 16; r18 = r18 + 11104; r2 = r18 + r17; r16 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r7 = r17 >>> 3; if(r16 == r2) { /* Next insn is delay slot */ pc=0x3f2d8; run_3f200(); return; } case 0x3ec90: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r0 + -4; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r3 & r2; r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r3; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r4; case 0x3ecb0: r2 = r16 + r2; r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r4 = r19 + r0; r3 = r3 | 1; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x3eccc; pc=0x3f800; run_3f800(); return; case 0x3eccc: r2 = r16 + 8; case 0x3ecd0: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x3ed04: r17 = r0 + 16; r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3ec5c; continue; } case 0x3ed14: r2 = r0 + 12; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3ecd0; continue; case 0x3ed28: r2 = r17 >>> 9; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3ef4c; run_3ee00(); return; } r3 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f1b8; run_3f000(); return; } r8 = r17 >>> 6; r8 = r8 + 56; r6 = r8 << 1; case 0x3ed4c: r18 = 7 << 16; r6 = r6 << 2; r18 = r18 + 11104; r6 = r18 + r6; r16 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; if(r6 == r16) { /* Next insn is delay slot */ pc=0x3edd0; continue; } r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r0 + -4; r3 = r3 & r2; r4 = r3 - r17; r2 = r4 < 16 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3ef5c; run_3ee00(); return; } r7 = r0 + -4; if(r4 < 0) { /* Next insn is delay slot */ pc=0x3edc0; continue; } /* Next insn is delay slot */ pc=0x3ef68; run_3ee00(); return; case 0x3ed9c: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = r3 & r7; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x3ef5c; run_3ee00(); return; } if(r2 >= 0) { /* Next insn is delay slot */ pc=0x3ef68; run_3ee00(); return; } case 0x3edc0: r16 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; if(r6 != r16) { /* Next insn is delay slot */ pc=0x3ed9c; continue; } case 0x3edd0: r7 = r8 + 1; case 0x3edd4: r9 = 7 << 16; r16 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; r9 = r9 + 11112; if(r16 == r9) { /* Next insn is delay slot */ pc=0x3f2b0; run_3f200(); return; } r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r0 + -4; r2 = r3 & r2; r3 = r2 - r17; r4 = r3 < 16 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3f26c; run_3f200(); return; } 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: writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r9; writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r9; if(r3 >= 0) { /* Next insn is delay slot */ pc=0x3ecb0; run_3ec00(); return; } r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f1e4; run_3f000(); return; } r3 = r2 >>> 3; r2 = r3 >> 2; r4 = r0 + 1; r4 = r4 << (r2&0x1f); r3 = r3 << 3; r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r3 = r18 + r3; r2 = r4 | r2; r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r3; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r4; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r16; writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r16; case 0x3ee58: r3 = r7 >> 2; r4 = r0 + 1; r4 = r4 << (r3&0x1f); r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3efa0; continue; } r3 = r2 & r4; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3ee98; continue; } r3 = r0 + -4; r7 = r7 & r3; case 0x3ee84: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3ee84; continue; } case 0x3ee98: r8 = r0 + -4; case 0x3ee9c: r10 = r7 << 3; r10 = r18 + r10; r6 = r10 + r0; r11 = r7 + r0; case 0x3eeac: r16 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; if(r6 != r16) { /* Next insn is delay slot */ pc=0x3eedc; continue; } /* Next insn is delay slot */ pc=0x3f2bc; run_3f200(); return; case 0x3eec4: if(r2 >= 0) { /* Next insn is delay slot */ pc=0x3f2f4; run_3f200(); return; } r16 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; if(r6 == r16) { /* Next insn is delay slot */ pc=0x3f2bc; run_3f200(); return; } case 0x3eedc: r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = r3 & r8; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3eec4; continue; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = r16 + r17; r17 = r17 | 1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r17; writePages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff] = r4; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r5; 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; r3 = r3 + r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r4 = r19 + r0; /* Next insn is delay slot */ r31=0x3ef40; pc=0x3f800; run_3f800(); return; case 0x3ef40: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3ef4c: r6 = r0 + 126; r8 = r0 + 63; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3ef5c: r8 = r8 + -1; /* Next insn is delay slot */ pc=0x3edd0; run_3ec00(); return; case 0x3ef68: r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; 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]; r4 = r19 + r0; r2 = r2 | 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x3ef94; pc=0x3f800; run_3f800(); return; case 0x3ef94: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3efa0: r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r2 = r0 + -4; r21 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r21 = r21 & r2; r2 = ((r21 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3efd0; continue; } r2 = r21 - r17; r3 = r2 < 16 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f188; run_3f000(); return; } case 0x3efd0: r22 = readPages[(r28+-30640)>>>12][((r28+-30640)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x3efdc; pc=0x48b80; run_48a00(); return; case 0x3efdc: r3 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; r22 = r22 + 16; r23 = r2 + r0; r2 = r0 + -1; r30 = r16 + r21; r22 = r22 + r17; if(r3 == r2) { /* Next insn is delay slot */ pc=0x3f00c; run_3f000(); return; } r2 = r22 + -1; case 0x3f000: pc=0x3f000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3f000() throws ExecutionException { /* 0x3f000 - 0x3f200 */ int addr, tmp; for(;;) { switch(pc) { case 0x3f000: r2 = r2 + r23; r22 = r0 - r23; r22 = r22 & r2; case 0x3f00c: r4 = r19 + r0; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x3f01c; pc=0x48920; run_48800(); return; case 0x3f01c: r20 = r2 + r0; r2 = r0 + -1; if(r20 == r2) { /* Next insn is delay slot */ pc=0x3f158; continue; } r2 = ((r20 & 0xffffffffL) < (r30 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3f354; run_3f200(); return; } case 0x3f038: r3 = 7 << 16; r2 = readPages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff]; r4 = r23 + -1; r2 = r22 + r2; writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; if(r30 == r20) { /* Next insn is delay slot */ pc=0x3f4ac; run_3f400(); return; } case 0x3f054: r6 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; r5 = r0 + -1; if(r6 == r5) { /* Next insn is delay slot */ pc=0x3f4d0; run_3f400(); return; } r30 = r20 - r30; r2 = r2 + r30; writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; case 0x3f070: r2 = r20 & 7; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3f410; run_3f400(); return; } r5 = r0 + 8; r2 = r5 - r2; r20 = r20 + r2; case 0x3f088: r22 = r20 + r22; r2 = r2 + r23; r4 = r22 & r4; r22 = r2 - r4; r5 = r22 + r0; r4 = r19 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x3f0ac; pc=0x48920; run_48800(); return; case 0x3f0ac: r4 = r0 + -1; r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 == r4) { /* Next insn is delay slot */ pc=0x3f4fc; run_3f400(); return; } r2 = r2 - r20; r4 = r22 + r2; r4 = r4 | 1; case 0x3f0c8: r2 = readPages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff]; writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r20; r2 = r22 + r2; writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r4; if(r16 == r18) { /* Next insn is delay slot */ pc=0x3f128; continue; } r3 = (r21&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3f444; run_3f400(); return; } r4 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r21 = r21 + -12; r3 = r0 + -8; r3 = r21 & r3; r4 = r4 & 1; r4 = r3 | r4; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; r5 = r0 + 5; r4 = r16 + r3; r3 = (r3&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r5; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f4dc; run_3f400(); return; } case 0x3f128: r3 = readPages[(r28+-30644)>>>12][((r28+-30644)>>>2)&0x3ff]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f140; continue; } writePages[(r28+-30644)>>>12][((r28+-30644)>>>2)&0x3ff] = r2; case 0x3f140: r3 = readPages[(r28+-30648)>>>12][((r28+-30648)>>>2)&0x3ff]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f158; continue; } writePages[(r28+-30648)>>>12][((r28+-30648)>>>2)&0x3ff] = r2; case 0x3f158: r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r2 = r0 + -4; r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = r3 & r2; case 0x3f16c: r2 = r3 - r17; r3 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3f3d8; run_3f200(); return; } r3 = r2 < 16 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3f3d8; run_3f200(); return; } case 0x3f188: r3 = r17 | 1; r2 = r2 | 1; r17 = r16 + r17; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; r4 = r19 + r0; writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r17; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x3f1ac; pc=0x3f800; run_3f800(); return; case 0x3f1ac: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3f1b8: r3 = (r2&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3f330; run_3f200(); return; } r3 = (r2&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f3f0; run_3f200(); return; } r8 = r17 >>> 12; r8 = r8 + 110; r6 = r8 << 1; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3f1e4: r3 = r2 >>> 9; r4 = (r3&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x3f340; run_3f200(); return; } r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3f47c; run_3f400(); return; } case 0x3f200: pc=0x3f200; 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: r4 = r3 + 91; r5 = r4 << 1; case 0x3f208: r5 = r5 << 2; r5 = r18 + r5; r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x3f41c; run_3f400(); return; } r6 = r0 + -4; case 0x3f224: r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r4 & r6; r4 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3f24c; continue; } r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; if(r5 != r3) { /* Next insn is delay slot */ pc=0x3f224; continue; } case 0x3f24c: r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; case 0x3f254: writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r4; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r16; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x3ee58; run_3ee00(); return; case 0x3f26c: 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; r2 = r2 + r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r4 = r19 + r0; /* Next insn is delay slot */ r31=0x3f2a4; pc=0x3f800; run_3f800(); return; case 0x3f2a4: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3f2b0: r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3ee58; run_3ee00(); return; case 0x3f2bc: r11 = r11 + 1; r2 = r11 & 3; r6 = r6 + 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3eeac; run_3ee00(); return; } /* Next insn is delay slot */ pc=0x3f378; continue; case 0x3f2d8: r2 = r16 + 8; r16 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r7 = r7 + 2; if(r2 == r16) { /* Next insn is delay slot */ pc=0x3edd4; run_3ec00(); return; } /* Next insn is delay slot */ pc=0x3ec90; run_3ec00(); return; case 0x3f2f4: r3 = r16 + r3; r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r4 = r19 + r0; r2 = r2 | 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x3f324; pc=0x3f800; run_3f800(); return; case 0x3f324: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3f330: r8 = r2 + 91; r6 = r8 << 1; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3f340: r4 = r2 >>> 6; r4 = r4 + 56; r5 = r4 << 1; /* Next insn is delay slot */ pc=0x3f208; continue; case 0x3f354: if(r16 != r18) { /* Next insn is delay slot */ pc=0x3f158; run_3f000(); return; } /* Next insn is delay slot */ pc=0x3f038; run_3f000(); return; case 0x3f364: r2 = r10 + -8; r10 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; r7 = r7 + -1; if(r10 != r2) { /* Next insn is delay slot */ pc=0x3f55c; run_3f400(); return; } case 0x3f378: r2 = r7 & 3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3f364; continue; } r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r3 = ~(r0 | r4); r2 = r3 & r2; writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; case 0x3f394: r4 = r4 << 1; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3efa0; run_3ee00(); return; } if(r4 == r0) { /* Next insn is delay slot */ pc=0x3efa0; run_3ee00(); return; } r3 = r2 & r4; r7 = r11 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x3ee9c; run_3ee00(); return; } case 0x3f3bc: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f3bc; continue; } /* Next insn is delay slot */ pc=0x3ee9c; run_3ee00(); return; case 0x3f3d8: r4 = r19 + r0; /* Next insn is delay slot */ r31=0x3f3e4; pc=0x3f800; run_3f800(); return; case 0x3f3e4: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3ecd0; run_3ec00(); return; case 0x3f3f0: r3 = (r2&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f45c; run_3f400(); return; } r8 = r17 >>> 15; 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: r8 = r8 + 119; r6 = r8 << 1; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3f410: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x3f088; run_3f000(); return; case 0x3f41c: r2 = r0 + 1; r4 = r4 >> 2; r4 = r2 << (r4&0x1f); r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r2 = r4 | r2; writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; r4 = r3 + r0; /* Next insn is delay slot */ pc=0x3f254; run_3f200(); return; case 0x3f444: r2 = r0 + 1; writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r2; r16 = r20 + r0; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x3f16c; run_3f000(); return; case 0x3f45c: r2 = (r2&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3f49c; continue; } r8 = r17 >>> 18; r8 = r8 + 124; r6 = r8 << 1; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3f47c: r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3f50c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r5 = r4 << 1; /* Next insn is delay slot */ pc=0x3f208; run_3f200(); return; case 0x3f49c: r6 = r0 + 252; r8 = r0 + 126; /* Next insn is delay slot */ pc=0x3ed4c; run_3ec00(); return; case 0x3f4ac: r5 = r30 & r4; if(r5 != r0) { /* Next insn is delay slot */ pc=0x3f054; run_3f000(); return; } r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; r4 = r22 + r21; r4 = r4 | 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x3f128; run_3f000(); return; case 0x3f4d0: writePages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff] = r20; /* Next insn is delay slot */ pc=0x3f070; run_3f000(); return; case 0x3f4dc: r4 = r19 + r0; r5 = r16 + 8; /* Next insn is delay slot */ r31=0x3f4ec; pc=0x3ca00; run_3ca00(); return; case 0x3f4ec: r2 = 7 << 16; r2 = readPages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3f128; run_3f000(); return; case 0x3f4fc: r4 = r0 + 1; r22 = r0 + r0; /* Next insn is delay slot */ pc=0x3f0c8; run_3f000(); return; case 0x3f50c: r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x3f52c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r5 = r4 << 1; /* Next insn is delay slot */ pc=0x3f208; run_3f200(); return; case 0x3f52c: r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x3f54c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r5 = r4 << 1; /* Next insn is delay slot */ pc=0x3f208; run_3f200(); return; case 0x3f54c: r5 = r0 + 252; r4 = r0 + 126; /* Next insn is delay slot */ pc=0x3f208; run_3f200(); return; case 0x3f55c: r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3f394; run_3f200(); return; case 0x3f600: pc=0x3f600; 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: /* Next insn is delay slot */ pc=r31; return; case 0x3f800: pc=0x3f800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3f800() throws ExecutionException { /* 0x3f800 - 0x3fa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3f800: /* Next insn is delay slot */ pc=r31; return; 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: r29 = r29 + -32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; r6 = r5 + r0; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r7 = r29 + 40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x3fa28; pc=0x45c00; run_45c00(); return; case 0x3fa28: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3fc00: pc=0x3fc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_3fc00() throws ExecutionException { /* 0x3fc00 - 0x3fe00 */ int addr, tmp; for(;;) { switch(pc) { case 0x3fc00: r29 = r29 + -32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; r6 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r5; r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; r7 = r29 + 36; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x3fc30; pc=0x45c00; run_45c00(); return; case 0x3fc30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ 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: 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=0x3fe28; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x3fec8; continue; } case 0x3fe28: r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x3fe74; continue; } r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; case 0x3fe54: 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; r2 = tmp; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x3fe74: r3 = readPages[(r6+24)>>>12][((r6+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x3fee8; continue; } r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x3fe54; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = r0 + 10; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x48200; run_48200(); return; case 0x3fec8: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x3fed8; pc=0x3a600; run_3a600(); return; case 0x3fed8: r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x3fe28; continue; case 0x3fee8: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x48200; run_48200(); return; case 0x40000: pc=0x40000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_40000() throws ExecutionException { /* 0x40000 - 0x40200 */ int addr, tmp; for(;;) { switch(pc) { case 0x40000: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x40034; continue; } r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x400cc; continue; } case 0x40034: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x40084; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; case 0x40060: r3 = r2 + 1; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x40084: r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r2 = r2 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x400dc; continue; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r0 + 10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x40060; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r0 + 10; /* Next insn is delay slot */ pc=0x400e4; continue; case 0x400cc: /* Next insn is delay slot */ r31=0x400d4; pc=0x3a600; run_3a600(); return; case 0x400d4: /* Next insn is delay slot */ pc=0x40034; continue; case 0x400dc: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 + r0; case 0x400e4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r6 = r16 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x48200; run_48200(); return; case 0x40200: pc=0x40200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_40200() throws ExecutionException { /* 0x40200 - 0x40400 */ int addr, tmp; for(;;) { switch(pc) { case 0x40200: r29 = r29 + -64; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r5 + r0; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; r16 = r5 + r0; /* Next insn is delay slot */ r31=0x40224; pc=0x10268; run_10200(); return; case 0x40224: writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r2 = r2 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; r2 = r29 + 16; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r3 = 7 << 16; r3 = r3 + -7636; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; 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 */ r3 = tmp; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r4 = r3 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x40288; 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; r3 = r0 + -8193; r3 = r4 & r3; writePages[(r2+100)>>>12][((r2+100)>>>2)&0x3ff] = r3; case 0x40288: r5 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r29 + 32; /* Next insn is delay slot */ r31=0x4029c; pc=0x59c00; run_59c00(); return; case 0x4029c: r3 = r0 + 10; if(r2 != r0) { /* Next insn is delay slot */ pc=0x402c4; continue; } case 0x402a8: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = r3 + r0; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x402c4: r3 = r0 + -1; /* Next insn is delay slot */ pc=0x402a8; continue; 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: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x40200; run_40200(); return; case 0x40600: pc=0x40600; 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: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x40800; run_40800(); return; case 0x40800: pc=0x40800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_40800() throws ExecutionException { /* 0x40800 - 0x40a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x40800: 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; r16 = r5 + r0; r20 = r6 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x40b4c; run_40a00(); return; } r21 = r4 + r0; /* Next insn is delay slot */ r31=0x40848; pc=0x3f600; run_3f600(); return; case 0x40848: r3 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; r2 = r20 + 11; r17 = r0 + -4; r4 = (r2&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; r19 = r16 + -8; r17 = r3 & r17; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4098c; continue; } r4 = r0 + 16; r18 = r0 + 16; case 0x40870: r2 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x409a0; continue; } r2 = r17 < r4 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x409e0; continue; } r23 = 7 << 16; r23 = r23 + 11104; r5 = readPages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff]; r2 = r19 + r17; if(r5 == r2) { /* Next insn is delay slot */ pc=0x40b84; run_40a00(); return; } r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r7 = r0 + -2; r7 = r6 & r7; r7 = r2 + r7; r7 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; r7 = r7 & 1; if(r7 == r0) { /* Next insn is delay slot */ pc=0x409b4; continue; } r6 = r0 + r0; r2 = r0 + r0; case 0x408cc: r3 = r3 & 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x40aa4; run_40a00(); return; } r22 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; r3 = r0 + -4; r22 = r19 - r22; r7 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; r3 = r7 & r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40c98; run_40c00(); return; } r3 = r3 + r17; if(r2 == r5) { /* Next insn is delay slot */ pc=0x40ca4; run_40c00(); return; } r23 = r6 + r3; r5 = r23 < r4 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x40a94; run_40a00(); return; } r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; case 0x40928: r2 = readPages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff]; r3 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; 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; r19 = r22 + 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40c70; run_40c00(); return; } r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x40be4; run_40a00(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff] = r2; r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40dc0; run_40c00(); return; } r3 = r22 + 16; r16 = r16 + 8; /* Next insn is delay slot */ pc=0x40be8; run_40a00(); return; case 0x4098c: r18 = r0 + -8; r18 = r2 & r18; r4 = r18 + r0; if(r18 >= 0) { /* Next insn is delay slot */ pc=0x40870; continue; } case 0x409a0: r2 = r0 + 12; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x40a20; run_40a00(); return; case 0x409b4: r7 = r0 + -4; r6 = r6 & r7; r7 = r6 + r17; r8 = r7 < r4 ? 1 : 0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x408cc; continue; } r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; r17 = r7 + r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r4; writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r2; case 0x409e0: r6 = r17 - r18; r2 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40a54; run_40a00(); return; } r3 = r3 & 1; r3 = r3 | r17; writePages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff] = r3; r17 = r19 + r17; 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: r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r2 = r2 | 1; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; case 0x40a10: r4 = r21 + r0; /* Next insn is delay slot */ r31=0x40a1c; pc=0x3f800; run_3f800(); return; case 0x40a1c: r2 = r16 + r0; case 0x40a20: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x40a54: r3 = r3 & 1; r5 = r19 + r18; r2 = r6 | 1; r18 = r3 | r18; writePages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff] = r18; r6 = r5 + r6; writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r2; r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; r4 = r21 + r0; r2 = r2 | 1; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; r5 = r5 + 8; /* Next insn is delay slot */ r31=0x40a8c; pc=0x3ca00; run_3ca00(); return; case 0x40a8c: /* Next insn is delay slot */ pc=0x40a10; continue; case 0x40a94: r23 = r3 + r0; case 0x40a98: r4 = r23 < r4 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x40928; run_40800(); return; } case 0x40aa4: r5 = r20 + r0; r4 = r21 + r0; /* Next insn is delay slot */ r31=0x40ab4; pc=0x3ec00; run_3ec00(); return; case 0x40ab4: r20 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40e8c; run_40e00(); return; } r3 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; r4 = r2 + -8; r2 = r0 + -2; r2 = r3 & r2; r2 = r19 + r2; if(r4 == r2) { /* Next insn is delay slot */ pc=0x40da8; run_40c00(); return; } r6 = r17 + -4; r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40c58; run_40c00(); return; } r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40bb0; continue; } r2 = r20 + r0; r3 = r16 + r0; case 0x40b00: r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; case 0x40b24: r4 = r21 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x40b34; pc=0x3ca00; run_3ca00(); return; case 0x40b34: r4 = r21 + r0; /* Next insn is delay slot */ r31=0x40b40; pc=0x3f800; run_3f800(); return; case 0x40b40: r2 = r20 + r0; /* Next insn is delay slot */ pc=0x40a20; continue; case 0x40b4c: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r5 = r6 + r0; r29 = r29 + 56; /* Next insn is delay slot */ pc=0x3ec00; run_3ec00(); return; case 0x40b84: r6 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r2 = r0 + -4; r6 = r6 & r2; r2 = r6 + r17; r7 = r18 + 16; r7 = r2 < r7 ? 1 : 0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x40c1c; run_40c00(); return; } r2 = r5 + r0; /* Next insn is delay slot */ pc=0x408cc; run_40800(); return; case 0x40bb0: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r2; r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40d74; run_40c00(); return; } r2 = r20 + 8; r3 = r16 + 8; /* Next insn is delay slot */ pc=0x40b00; continue; case 0x40be4: r3 = r19 + r0; case 0x40be8: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r17 = r23 + r0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; case 0x40c00: pc=0x40c00; 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: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r16 = r19 + r0; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; r3 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; r19 = r22 + r0; /* Next insn is delay slot */ pc=0x409e0; run_40800(); return; case 0x40c1c: 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]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; writePages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x40c4c; pc=0x3f800; run_3f800(); return; case 0x40c4c: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x40a20; run_40a00(); return; case 0x40c58: r4 = r20 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x40c68; pc=0x5b600; run_5b600(); return; case 0x40c68: /* Next insn is delay slot */ pc=0x40b24; run_40a00(); return; case 0x40c70: r4 = r19 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x40c80; pc=0x5b600; run_5b600(); return; case 0x40c80: r16 = r19 + r0; r3 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; r17 = r23 + r0; r19 = r22 + r0; /* Next insn is delay slot */ pc=0x409e0; run_40800(); return; case 0x40c98: r23 = r3 + r17; /* Next insn is delay slot */ pc=0x40a98; run_40a00(); return; case 0x40ca4: r30 = r6 + r3; r2 = r18 + 16; r2 = r30 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x40a94; run_40a00(); return; } r2 = readPages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff]; r3 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; r6 = r17 + -4; writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; r19 = r22 + 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40e40; run_40e00(); return; } r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x40e34; run_40e00(); return; } r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff] = r2; r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x40e58; run_40e00(); return; } r3 = r22 + 16; r16 = r16 + 8; case 0x40d14: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; case 0x40d38: 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]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; writePages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ r31=0x40d68; pc=0x3f800; run_3f800(); return; case 0x40d68: r2 = r19 + r0; /* Next insn is delay slot */ pc=0x40a20; run_40a00(); return; case 0x40d74: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r20+8)>>>12][((r20+8)>>>2)&0x3ff] = r2; r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; writePages[(r20+12)>>>12][((r20+12)>>>2)&0x3ff] = r2; r2 = r0 + 36; if(r6 == r2) { /* Next insn is delay slot */ pc=0x40df4; continue; } r2 = r20 + 16; r3 = r16 + 16; /* Next insn is delay slot */ pc=0x40b00; run_40a00(); return; case 0x40da8: r4 = readPages[(r20+-4)>>>12][((r20+-4)>>>2)&0x3ff]; r2 = r0 + -4; r2 = r4 & r2; r17 = r17 + r2; /* Next insn is delay slot */ pc=0x409e0; run_40800(); return; case 0x40dc0: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; r2 = r0 + 36; if(r6 == r2) { /* Next insn is delay slot */ pc=0x40e14; run_40e00(); return; } r3 = r22 + 24; r16 = r16 + 16; /* Next insn is delay slot */ pc=0x40be8; run_40a00(); return; case 0x40df4: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r3 = r16 + 24; writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r2; case 0x40e00: pc=0x40e00; 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: r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r2 = r20 + 24; writePages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x40b00; run_40a00(); return; case 0x40e14: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; 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=0x40be8; run_40a00(); return; case 0x40e34: r3 = r19 + r0; /* Next insn is delay slot */ pc=0x40d14; run_40c00(); return; case 0x40e40: r4 = r19 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x40e50; pc=0x5b600; run_5b600(); return; case 0x40e50: /* Next insn is delay slot */ pc=0x40d38; run_40c00(); return; case 0x40e58: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; r2 = r0 + 36; if(r6 == r2) { /* Next insn is delay slot */ pc=0x40ea4; continue; } r3 = r22 + 24; r16 = r16 + 16; /* Next insn is delay slot */ pc=0x40d14; run_40c00(); return; case 0x40e8c: r4 = r21 + r0; /* Next insn is delay slot */ r31=0x40e98; pc=0x3f800; run_3f800(); return; case 0x40e98: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x40a20; run_40a00(); return; case 0x40ea4: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r3 = r22 + 32; writePages[(r22+24)>>>12][((r22+24)>>>2)&0x3ff] = r2; r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r16 = r16 + 24; writePages[(r22+28)>>>12][((r22+28)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x40d14; run_40c00(); return; case 0x41000: pc=0x41000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_41000() throws ExecutionException { /* 0x41000 - 0x41200 */ int addr, tmp; for(;;) { switch(pc) { case 0x41000: addr=r4+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r0 + 9; r3 = r3 & 9; if(r3 == r2) { /* Next insn is delay slot */ pc=0x41020; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x41020: /* Next insn is delay slot */ pc=0x39a00; run_39a00(); 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: 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; r17 = r4 + r0; r16 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x41238; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x413a0; continue; } case 0x41238: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x4126c; continue; } r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; r2 = r0 + -8193; r3 = r3 | 8192; r2 = r4 & r2; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r3 & 65535; case 0x4126c: r4 = r2 & 32; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x4137c; continue; } r4 = r2 & 4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4133c; continue; } r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x412c4; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x412b0; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x412b0; pc=0x3ca00; run_3ca00(); return; case 0x412b0: r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4146c; run_41400(); return; } case 0x412c4: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x41498; run_41400(); return; } case 0x412d4: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r19 = tmp; r18 = r19 & 65535; r2 = r18 & 3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x413b0; continue; } case 0x412ec: r6 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r6; r4 = r17 + r0; /* Next insn is delay slot */ pc=r2; r31=0x4130c; return; case 0x4130c: writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x41364; continue; } r2 = r0 + r0; case 0x4131c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4133c: r4 = r2 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x414b0; run_41400(); return; } r2 = r2 & 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4142c; run_41400(); return; } r3 = r3 | 4; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x412c4; continue; case 0x41364: if(r2 != r0) { /* Next insn is delay slot */ pc=0x413f8; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 32; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x4137c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x413a0: /* Next insn is delay slot */ r31=0x413a8; pc=0x3a600; run_3a600(); return; case 0x413a8: /* Next insn is delay slot */ pc=0x41238; continue; case 0x413b0: r2 = r0 + 1; r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r5 = 4 << 16; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r5 = r5 + 4096; /* Next insn is delay slot */ r31=0x413cc; pc=0x3d600; run_3d600(); return; case 0x413cc: r18 = r18 & 9; r2 = r0 + 9; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r19&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r18 != r2) { /* Next insn is delay slot */ pc=0x412ec; continue; } r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x413f0; pc=0x39400; run_39400(); return; case 0x413f0: /* Next insn is delay slot */ pc=0x412ec; continue; case 0x413f8: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; case 0x41400: pc=0x41400; 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 = 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; r2 = r0 + -1; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4142c: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x4143c; pc=0x39800; run_39800(); return; case 0x4143c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x4137c; run_41200(); return; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; r3 = r3 & 65527; r3 = r3 << 16; r3 = r3 >> 16; r3 = r3 | 4; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x412c4; run_41200(); return; case 0x4146c: r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x41498: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x414a8; pc=0x3e600; run_3e600(); return; case 0x414a8: /* Next insn is delay slot */ pc=0x412d4; run_41200(); return; case 0x414b0: 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; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x4131c; run_41200(); 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: 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(r4 == r0) { /* Next insn is delay slot */ pc=0x41630; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x41684; continue; } case 0x41630: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x41640; pc=0x41200; run_41200(); return; case 0x41640: if(r2 != r0) { /* Next insn is delay slot */ pc=0x41694; continue; } r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; 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; r2 = tmp; case 0x4166c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x41684: /* Next insn is delay slot */ r31=0x4168c; pc=0x3a600; run_3a600(); return; case 0x4168c: /* Next insn is delay slot */ pc=0x41630; continue; case 0x41694: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x4166c; continue; case 0x41800: pc=0x41800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_41800() throws ExecutionException { /* 0x41800 - 0x41a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x41800: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x41600; run_41600(); return; case 0x41a00: pc=0x41a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_41a00() throws ExecutionException { /* 0x41a00 - 0x41c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x41a00: r29 = r29 + -144; writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r17; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r16; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; r17 = r4 + r0; r16 = r6 + r0; if(r6 < 0) { /* Next insn is delay slot */ pc=0x41af4; continue; } r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; if(r6 != r0) { /* Next insn is delay slot */ pc=0x41aa4; continue; } r2 = r0 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = r0 + -1; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r29 + 160; r6 = r7 + r0; r4 = r17 + r0; r5 = r29 + 16; r7 = r2 + r0; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x41a6c; pc=0x43800; run_43800(); return; case 0x41a6c: r3 = r2 < -1 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x41ae4; continue; } case 0x41a78: if(r16 == r0) { /* Next insn is delay slot */ pc=0x41a8c; continue; } r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x41a8c: r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r17 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; r16 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r29 = r29 + 144; /* Next insn is delay slot */ pc=r31; return; case 0x41aa4: r2 = r6 + -1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = r0 + -1; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r29 + 160; r6 = r7 + r0; r4 = r17 + r0; r5 = r29 + 16; r7 = r2 + r0; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x41ad8; pc=0x43800; run_43800(); return; case 0x41ad8: r3 = r2 < -1 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x41a78; continue; } case 0x41ae4: r3 = r0 + 139; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x41a78; continue; case 0x41af4: r2 = r0 + 139; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x41a8c; continue; case 0x41c00: pc=0x41c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_41c00() throws ExecutionException { /* 0x41c00 - 0x41e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x41c00: r29 = r29 + -144; writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r17; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r16; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; r16 = r5 + r0; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r7; r17 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r5 < 0) { /* Next insn is delay slot */ pc=0x41ce8; continue; } r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; if(r5 != r0) { /* Next insn is delay slot */ pc=0x41ca0; continue; } r2 = r0 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r7 = r29 + 156; r2 = r0 + -1; r4 = r17 + r0; r5 = r29 + 16; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x41c68; pc=0x43800; run_43800(); return; case 0x41c68: r3 = r2 < -1 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x41cd8; continue; } case 0x41c74: if(r16 == r0) { /* Next insn is delay slot */ pc=0x41c88; continue; } r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x41c88: r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r17 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; r16 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r29 = r29 + 144; /* Next insn is delay slot */ pc=r31; return; case 0x41ca0: r2 = r5 + -1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r7 = r29 + 156; r2 = r0 + -1; r4 = r17 + r0; r5 = r29 + 16; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x41ccc; pc=0x43800; run_43800(); return; case 0x41ccc: r3 = r2 < -1 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x41c74; continue; } case 0x41cd8: r3 = r0 + 139; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x41c74; continue; case 0x41ce8: r2 = r0 + 139; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x41c88; continue; case 0x41e00: pc=0x41e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_41e00() throws ExecutionException { /* 0x41e00 - 0x42000 */ int addr, tmp; for(;;) { switch(pc) { case 0x41e00: r29 = r29 + -136; r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 32767 << 16; r2 = r2 | 65535; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r7 = r29 + 148; r2 = r0 + -1; r5 = r29 + 16; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x41e48; pc=0x43800; run_43800(); return; case 0x41e48: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x42000: pc=0x42000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_42000() throws ExecutionException { /* 0x42000 - 0x42200 */ int addr, tmp; for(;;) { switch(pc) { case 0x42000: r29 = r29 + -136; r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 32767 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; r2 = r2 | 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r6; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r7 = r29 + 144; r6 = r5 + r0; r2 = r0 + -1; r5 = r29 + 16; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x42054; pc=0x43800; run_43800(); return; case 0x42054: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ 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: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r5 + r0; addr=r5+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4221c; pc=0x488a0; run_48800(); return; case 0x4221c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x42244; continue; } r3 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r3 + r2; writePages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff] = r3; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x42244: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r3 & 61439; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; 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: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x42600: pc=0x42600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_42600() throws ExecutionException { /* 0x42600 - 0x42800 */ int addr, tmp; for(;;) { switch(pc) { case 0x42600: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ 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; r19 = r4 + r0; r16 = r5 + r0; r18 = r6 + r0; r17 = r7 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x42650; 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 */ r5 = tmp; r6 = r0 + r0; r7 = r0 + 2; /* Next insn is delay slot */ r31=0x4264c; pc=0x489a0; run_48800(); return; case 0x4264c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; case 0x42650: 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; 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 */ r5 = tmp; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r6 = r18 + r0; r7 = r17 + r0; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=0x488e0; run_48800(); return; case 0x42800: pc=0x42800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_42800() throws ExecutionException { /* 0x42800 - 0x42a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x42800: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r5 + r0; addr=r5+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4281c; pc=0x489a0; run_48800(); return; case 0x4281c: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x4284c; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; 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]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x4284c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r3 & 61439; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ 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: addr=r5+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r5 = tmp; /* Next insn is delay slot */ pc=0x48860; run_48800(); return; case 0x42c00: pc=0x42c00; 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: r2 = r4 | r5; r2 = r2 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x42c68; continue; } addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; /* Next insn is delay slot */ pc=0x42c44; continue; case 0x42c1c: addr=r4+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; if(r3 != r2) { /* Next insn is delay slot */ pc=0x42c54; continue; } addr=r5+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r5 = r5 + 2; if(r6 == r0) { /* Next insn is delay slot */ pc=0x42c8c; continue; } addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r6 != r2) { /* Next insn is delay slot */ pc=0x42c8c; continue; } case 0x42c44: addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r4 = r4 + 2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x42c1c; continue; } case 0x42c54: r2 = r3 - r2; /* Next insn is delay slot */ pc=r31; return; case 0x42c60: if(r3 != r2) { /* Next insn is delay slot */ pc=0x42c54; continue; } case 0x42c68: r4 = r4 + 1; addr=r4+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r5 = r5 + 1; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x42c60; continue; } r2 = r3 - r2; /* Next insn is delay slot */ pc=r31; return; case 0x42c8c: r2 = r6 - r2; /* Next insn is delay slot */ pc=r31; return; 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: r3 = r4 | r5; r3 = r3 & 3; r2 = r4 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x42e90; continue; } r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r10 = 65278 << 16; r10 = r10 | 65279; r4 = ~(r0 | r6); r3 = r6 + r10; r9 = 32896 << 16; r3 = r4 & r3; r9 = r9 | 32896; r3 = r3 & r9; if(r3 != r0) { /* Next insn is delay slot */ pc=0x42e90; continue; } r3 = r2 + r0; case 0x42e44: r3 = r3 + 4; r5 = r5 + 4; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r8 = ~(r0 | r6); r7 = r6 + r10; r7 = r8 & r7; r7 = r7 & r9; if(r7 == r0) { /* Next insn is delay slot */ pc=0x42e44; 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 */ r6 = tmp; r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r6 != r0) { /* Next insn is delay slot */ pc=0x42e94; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x42e90: r3 = r2 + r0; case 0x42e94: 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 */ r6 = tmp; r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r6 != r0) { /* Next insn is delay slot */ pc=0x42e94; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x43000: pc=0x43000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_43000() throws ExecutionException { /* 0x43000 - 0x43200 */ int addr, tmp; for(;;) { switch(pc) { case 0x43000: if(r6 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } r2 = r4 | r5; r2 = r2 & 3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x430a4; continue; } case 0x43018: r6 = r6 + -1; case 0x4301c: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ 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 */ r3 = tmp; if(r3 != r2) { /* Next insn is delay slot */ pc=0x43158; continue; } if(r6 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } r2 = r4 + 1; r5 = r5 + 1; r4 = r4 + r6; /* Next insn is delay slot */ pc=0x4306c; continue; case 0x43054: if(r2 == r4) { /* Next insn is delay slot */ pc=0x43098; continue; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } r2 = r2 + 1; r5 = r5 + 1; case 0x4306c: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ 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 */ r3 = tmp; if(r3 == r6) { /* Next insn is delay slot */ pc=0x43054; continue; } case 0x43080: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r3 - r2; /* Next insn is delay slot */ pc=r31; return; case 0x43098: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x430a4: r2 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x43018; continue; } r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x43018; continue; } r2 = r6 + -4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } r8 = 65278 << 16; r8 = r8 | 65279; r6 = r3 + r8; r7 = 32896 << 16; r3 = ~(r0 | r3); r3 = r6 & r3; r7 = r7 | 32896; r3 = r3 & r7; if(r3 == r0) { /* Next insn is delay slot */ pc=0x43138; continue; } /* Next insn is delay slot */ pc=0x43098; continue; case 0x43100: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; if(r3 != r6) { /* Next insn is delay slot */ pc=0x43164; continue; } r2 = r2 + -4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43098; continue; } r6 = r3 + r8; r3 = ~(r0 | r3); r3 = r6 & r3; r3 = r3 & r7; if(r3 != r0) { /* Next insn is delay slot */ pc=0x43098; continue; } case 0x43138: r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; r4 = r4 + 4; r5 = r5 + 4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x43100; continue; } r6 = r2 + -1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4301c; continue; } case 0x43158: r2 = r4 + r0; /* Next insn is delay slot */ pc=0x43080; continue; case 0x43164: r6 = r2 + -1; /* Next insn is delay slot */ pc=0x4301c; 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: r29 = r29 + -8; r11 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = r5 + r0; writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x4321c; continue; case 0x43218: r2 = r3 + r0; case 0x4321c: r3 = r2 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r9 = r11 + r8; addr=r9+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r9 = r9 & 8; if(r9 != r0) { /* Next insn is delay slot */ pc=0x43218; continue; } r9 = r0 + 45; if(r8 == r9) { /* Next insn is delay slot */ pc=0x43418; run_43400(); return; } r9 = r0 + 43; if(r8 == r9) { /* Next insn is delay slot */ pc=0x4342c; run_43400(); return; } r25 = r0 + r0; case 0x4325c: r2 = r0 + -17; r2 = r7 & r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4339c; continue; } r2 = r0 + 48; if(r8 == r2) { /* Next insn is delay slot */ pc=0x43380; continue; } if(r7 != r0) { /* Next insn is delay slot */ pc=0x4339c; continue; } r24 = r0 + 10; r7 = r0 + 10; case 0x43288: if(r25 == r0) { /* Next insn is delay slot */ pc=0x433a8; continue; } case 0x43290: r13 = 32768 << 16; case 0x43294: if(r24 != r0) { /* Next insn is delay slot */ if(r24!=0) { hi = (int)((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); } pc=0x432a0; continue; } if(r24!=0) { hi = (int)((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x432a0: r12 = r0 + r0; r2 = r0 + r0; r15 = r0 + 1; r14 = r0 + -1; r16 = hi; r13 = lo; /* Next insn is delay slot */ pc=0x43308; continue; case 0x432c0: r8 = r8 + -48; r9 = r8 < r7 ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x43348; continue; } case 0x432d0: if(r12 == r14) { /* Next insn is delay slot */ pc=0x432fc; continue; } r9 = ((r13 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x433c4; continue; } if(r2 == r13) { /* Next insn is delay slot */ pc=0x433b8; continue; } case 0x432ec: { long hilo = (r2) * r24; hi = (int) (hilo >>> 32); lo = (int) hilo; } r12 = r0 + 1; r2 = lo; r2 = r8 + r2; case 0x432fc: r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; case 0x43308: r9 = r11 + r8; addr=r9+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r10 = r9 & 4; if(r10 != r0) { /* Next insn is delay slot */ pc=0x432c0; continue; } r9 = r9 & 3; if(r9 == r0) { /* Next insn is delay slot */ pc=0x43348; continue; } if(r9 == r15) { /* Next insn is delay slot */ pc=0x433d0; continue; } r9 = r0 + 87; r8 = r8 - r9; case 0x4333c: r9 = r8 < r7 ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x432d0; continue; } case 0x43348: r7 = r0 + -1; if(r12 == r7) { /* Next insn is delay slot */ pc=0x433e0; continue; } if(r25 != r0) { /* Next insn is delay slot */ pc=0x4340c; run_43400(); return; } case 0x4335c: if(r6 == r0) { /* Next insn is delay slot */ pc=0x43370; continue; } if(r12 != r0) { /* Next insn is delay slot */ pc=0x43400; run_43400(); return; } case 0x4336c: writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; case 0x43370: r16 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; r29 = r29 + 8; /* Next insn is delay slot */ pc=r31; return; case 0x43380: addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r2 = r0 + 88; r9 = r9 & 223; if(r9 == r2) { /* Next insn is delay slot */ pc=0x4344c; run_43400(); return; } if(r7 == r0) { /* Next insn is delay slot */ pc=0x43464; run_43400(); return; } case 0x4339c: r24 = r7 + r0; if(r25 != r0) { /* Next insn is delay slot */ pc=0x43290; continue; } case 0x433a8: r13 = 32767 << 16; r13 = r13 | 65535; /* Next insn is delay slot */ pc=0x43294; continue; case 0x433b8: r9 = r16 < r8 ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x432ec; continue; } case 0x433c4: r12 = r0 + -1; /* Next insn is delay slot */ pc=0x432fc; continue; case 0x433d0: r9 = r0 + 55; r8 = r8 - r9; /* Next insn is delay slot */ pc=0x4333c; continue; case 0x433e0: if(r25 != r0) { /* Next insn is delay slot */ pc=0x43440; run_43400(); return; } r2 = 32767 << 16; r2 = r2 | 65535; case 0x433f0: r5 = r0 + 34; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; if(r6 == r0) { /* Next insn is delay slot */ pc=0x43370; 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: r5 = r3 + -1; /* Next insn is delay slot */ pc=0x4336c; run_43200(); return; case 0x4340c: r2 = r0 - r2; /* Next insn is delay slot */ pc=0x4335c; run_43200(); return; case 0x43418: r3 = r2 + 2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + 1; /* Next insn is delay slot */ pc=0x4325c; run_43200(); return; case 0x4342c: r3 = r2 + 2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + r0; /* Next insn is delay slot */ pc=0x4325c; run_43200(); return; case 0x43440: r2 = 32768 << 16; /* Next insn is delay slot */ pc=0x433f0; run_43200(); return; case 0x4344c: addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r24 = r0 + 16; r3 = r3 + 2; r7 = r0 + 16; /* Next insn is delay slot */ pc=0x43288; run_43200(); return; case 0x43464: r24 = r0 + 8; r7 = r0 + 8; /* Next insn is delay slot */ pc=0x43288; run_43200(); 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: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x43200; run_43200(); return; case 0x43800: pc=0x43800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_43800() throws ExecutionException { /* 0x43800 - 0x43a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x43800: 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; r22 = r5 + r0; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r6; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r7; writePages[(r29+296)>>>12][((r29+296)>>>2)&0x3ff] = r30; writePages[(r29+292)>>>12][((r29+292)>>>2)&0x3ff] = r23; writePages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff] = r21; writePages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff] = r20; writePages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff] = r19; writePages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff] = r18; writePages[(r29+268)>>>12][((r29+268)>>>2)&0x3ff] = r17; writePages[(r29+264)>>>12][((r29+264)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x43844; pc=0x5ae00; run_5ae00(); return; case 0x43844: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r2 + r0; writePages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x4385c; pc=0x10268; run_10200(); return; case 0x4385c: writePages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff] = r2; addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 128; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43884; continue; } r2 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45464; run_45400(); return; } case 0x43884: r21 = r29 + 40; r2 = 7 << 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r21; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r0; writePages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff] = r0; writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r0; writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r0; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r0; writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r0; r8 = r21 + r0; r19 = r2 + 652; case 0x438b8: r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43fa4; run_43e00(); return; } case 0x438d0: r3 = r0 + 37; r16 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; if(r2 != r3) { /* Next insn is delay slot */ pc=0x438f0; continue; } /* Next insn is delay slot */ pc=0x4395c; continue; case 0x438e8: if(r2 == r3) { /* Next insn is delay slot */ pc=0x43904; continue; } case 0x438f0: 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 */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x438e8; continue; } case 0x43904: r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; r17 = r16 - r3; if(r17 == r0) { /* Next insn is delay slot */ pc=0x4395c; continue; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; r2 = r2 + r17; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r2 = r2 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43a04; run_43a00(); return; } r8 = r8 + 8; case 0x4394c: r3 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; r3 = r3 + r17; writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r3; case 0x4395c: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43a2c; run_43a00(); return; } r16 = r16 + 1; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r5 = r0 + r0; r30 = r0 + -1; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; case 0x4398c: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r3 = r16 + 1; case 0x43994: r2 = r18 + -32; r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4452c; run_44400(); return; } r4 = 7 << 16; r2 = r2 << 2; r4 = r4 + 280; r2 = r4 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x439c4: r17 = r17 | 16; case 0x439c8: r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; continue; case 0x439d4: r4 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r7 >= 0) { /* Next insn is delay slot */ pc=0x4451c; run_44400(); return; } r7 = r0 - r7; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; case 0x439f4: r17 = r17 | 4; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; 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 0x43a04: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43a18; pc=0x5fe00; run_5fe00(); return; case 0x43a18: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; continue; } r8 = r21 + r0; /* Next insn is delay slot */ pc=0x4394c; run_43800(); return; case 0x43a2c: r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43a50; continue; } r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43a50; pc=0x5fe00; run_5fe00(); return; case 0x43a50: addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43a9c; continue; } r2 = r0 + -1; case 0x43a68: r31 = readPages[(r29+300)>>>12][((r29+300)>>>2)&0x3ff]; r30 = readPages[(r29+296)>>>12][((r29+296)>>>2)&0x3ff]; r23 = readPages[(r29+292)>>>12][((r29+292)>>>2)&0x3ff]; r22 = readPages[(r29+288)>>>12][((r29+288)>>>2)&0x3ff]; r21 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; r20 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; r19 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; r18 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; r17 = readPages[(r29+268)>>>12][((r29+268)>>>2)&0x3ff]; r16 = readPages[(r29+264)>>>12][((r29+264)>>>2)&0x3ff]; r29 = r29 + 304; /* Next insn is delay slot */ pc=r31; return; case 0x43a9c: r2 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x43a68; continue; case 0x43aa8: r5 = r0 + 43; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x43ab8: writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r20 = r3 + 4; if(r16 == r0) { /* Next insn is delay slot */ pc=0x4560c; run_45600(); return; } r4 = r16 + r0; if(r30 < 0) { /* Next insn is delay slot */ pc=0x454e0; run_45400(); return; } r5 = r0 + r0; r6 = r30 + r0; writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x43af8; pc=0x5b400; run_5b400(); return; case 0x43af8: r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x458ac; run_45800(); return; } r2 = r2 - r16; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; r2 = r30 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x43b1c; continue; } writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; case 0x43b1c: r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x454fc; run_45400(); return; } case 0x43b2c: addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; case 0x43b40: if(r3 == r0) { /* Next insn is delay slot */ pc=0x43b58; continue; } case 0x43b48: r2 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; case 0x43b58: r4 = r17 & 2; writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x43b78; continue; } r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r5 = r5 + 2; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; case 0x43b78: r2 = r17 & 132; writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44550; run_44400(); return; } r4 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r20 = r4 - r5; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x44550; run_44400(); return; } r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45548; run_45400(); return; } r4 = r20 + r0; writePages[(r29+244)>>>12][((r29+244)>>>2)&0x3ff] = r16; r20 = r17 + r0; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; r23 = r0 + 16; r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r17 = r4 + r0; /* Next insn is delay slot */ pc=0x43bec; continue; case 0x43bd8: r17 = r17 + -16; r4 = r17 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43c48; run_43c00(); return; } case 0x43bec: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r23; case 0x43c00: pc=0x43c00; 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: writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43bd8; run_43a00(); return; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43c24; pc=0x5fe00; run_5fe00(); return; case 0x43c24: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } 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]; r8 = r21 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x43bec; run_43a00(); return; } case 0x43c48: r4 = r17 + r0; r16 = readPages[(r29+244)>>>12][((r29+244)>>>2)&0x3ff]; r17 = r20 + r0; r20 = r4 + r0; case 0x43c58: r3 = r3 + 1; r4 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; r2 = r20 + r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44c1c; run_44c00(); return; } addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r8 = r8 + 8; case 0x43c88: if(r3 == r0) { /* Next insn is delay slot */ pc=0x43cc4; continue; } r3 = r29 + 182; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44a50; run_44a00(); return; } r8 = r8 + 8; case 0x43cc4: r3 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x43d08; continue; } r3 = r29 + 180; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 2; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + 2; r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44a7c; run_44a00(); return; } r8 = r8 + 8; case 0x43d08: r4 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; r3 = r0 + 128; if(r4 == r3) { /* Next insn is delay slot */ pc=0x448bc; run_44800(); return; } case 0x43d18: r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; r20 = r30 - r3; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x43e14; run_43e00(); return; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x450c0; run_45000(); return; } r5 = 7 << 16; r23 = r5 + 636; r4 = r23 + r0; writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r16; r23 = r20 + r0; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r20 = r17 + r0; r30 = r0 + 16; r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r17 = r4 + r0; /* Next insn is delay slot */ pc=0x43d7c; continue; case 0x43d68: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43dd8; continue; } case 0x43d7c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43d68; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43db4; pc=0x5fe00; run_5fe00(); return; case 0x43db4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } 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]; r8 = r21 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x43d7c; continue; } case 0x43dd8: r4 = r17 + r0; r16 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; case 0x43dec: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; case 0x43e00: pc=0x43e00; 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: writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44a24; run_44a00(); return; } r8 = r8 + 8; case 0x43e14: r3 = r17 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x44750; run_44600(); return; } r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; r2 = r2 + r3; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44654; run_44600(); return; } case 0x43e4c: r8 = r8 + 8; case 0x43e50: r17 = r17 & 4; if(r17 == r0) { /* Next insn is delay slot */ pc=0x43f50; continue; } r3 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r4 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r16 = r3 - r4; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x43f50; continue; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x455fc; run_45400(); return; } r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; r17 = r0 + 16; r18 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x43eac; continue; case 0x43e98: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43f08; continue; } case 0x43eac: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x43e98; continue; } r4 = r18 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43ee4; pc=0x5fe00; run_5fe00(); return; case 0x43ee4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } 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]; r8 = r21 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x43eac; continue; } case 0x43f08: r3 = r3 + 1; r5 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; r2 = r2 + r16; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x43f50; continue; } r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x43f44; pc=0x5fe00; run_5fe00(); return; case 0x43f44: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; case 0x43f50: r3 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r5 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r4 = r3 < r5 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x43f6c; continue; } r3 = r5 + r0; case 0x43f6c: r4 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; r4 = r4 + r3; writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44680; run_44600(); return; } writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; r8 = r21 + r0; case 0x43f8c: r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x438d0; run_43800(); return; } case 0x43fa4: r16 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x4395c; run_43800(); return; case 0x43fb0: if(r5 != r0) { /* Next insn is delay slot */ pc=0x439c8; run_43800(); return; } r5 = r0 + 32; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x43fc8: addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r4 = r3 + 1; if(r18 == r6) { /* Next insn is delay slot */ pc=0x45b04; run_45a00(); return; } r2 = r18 + -48; r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r30 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x4401c; run_44000(); return; } case 0x43fec: 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 */ r18 = tmp; r30 = r30 << 3; r30 = r3 + r30; case 0x44000: pc=0x44000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_44000() throws ExecutionException { /* 0x44000 - 0x44200 */ int addr, tmp; for(;;) { switch(pc) { case 0x44000: r30 = r2 + r30; r2 = r18 + -48; r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x43fec; run_43e00(); return; } if(r30 < 0) { /* Next insn is delay slot */ pc=0x45454; run_45400(); return; } case 0x4401c: r3 = r4 + r0; /* Next insn is delay slot */ pc=0x43994; run_43800(); return; case 0x44028: r17 = r17 | 128; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x44038: r7 = r0 + r0; r2 = r18 + -48; case 0x44040: 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 */ r18 = tmp; r7 = r7 << 3; r7 = r4 + r7; r7 = r7 + r2; r2 = r18 + -48; r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44040; continue; } /* Next insn is delay slot */ pc=0x43994; run_43800(); return; case 0x44070: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x444ec; run_44400(); return; } case 0x44088: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r4 = r0 + r0; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; case 0x440a4: if(r30 < 0) { /* Next insn is delay slot */ pc=0x440b4; continue; } r5 = r0 + -129; r17 = r17 & r5; case 0x440b4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x446ac; run_44600(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x446ac; run_44600(); return; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x44ad0; run_44a00(); return; } r2 = r17 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x44ad0; run_44a00(); 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; r2 = r0 + 1; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; r16 = r29 + 143; case 0x440ec: r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; r4 = r2 < r30 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44104; continue; } r2 = r30 + r0; case 0x44104: writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x43b40; run_43a00(); return; case 0x44114: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x444a8; run_44400(); return; } case 0x4412c: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r4 = r0 + 1; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; continue; case 0x44150: r2 = 7 << 16; r2 = r2 + 228; writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r2; r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x44390; run_44200(); return; } case 0x44174: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; case 0x44188: r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44ae0; run_44a00(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x44ae0; run_44a00(); 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; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; continue; case 0x441c0: r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x4432c; run_44200(); return; } case 0x441d8: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; case 0x441ec: if(r2 < 0) { /* Next insn is delay slot */ pc=0x44350; run_44200(); return; } case 0x441f4: addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x440a4; continue; 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 0x44204: r17 = r17 | 64; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x44214: writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; addr=r29+104; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; case 0x44234: 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; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; r16 = r29 + 104; /* Next insn is delay slot */ pc=0x43b58; run_43a00(); return; case 0x4425c: r17 = r17 | 1; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x4426c: r2 = r17 & 16; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44d6c; run_44c00(); return; } r17 = r17 & 64; if(r17 == r0) { /* Next insn is delay slot */ pc=0x44d6c; run_44c00(); 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 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x438b8; run_43800(); return; case 0x442bc: writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; 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; 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]; r17 = r17 | 2; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + 248; writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r3; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x44310: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x441d8; run_44000(); return; } case 0x4432c: r2 = r17 & 64; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x4506c; run_45000(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x441f4; run_44000(); return; } case 0x44350: 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; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x4436c: writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + 248; r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44174; run_44000(); return; } case 0x44390: r2 = r17 & 64; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45058; run_45000(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x44188; run_44000(); return; case 0x443b4: r2 = r17 & 8; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45044; run_45000(); return; } r4 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r3 = r4 + 7; case 0x443d8: r2 = r0 + -8; r2 = r3 & r2; r3 = r2 + 8; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; writePages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff] = f0; f12 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; case 0x44400: pc=0x44400; 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: writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = f1; f13 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x44410; pc=0x37a00; run_37a00(); return; case 0x44410: r3 = r0 + 1; r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; if(r2 != r3) { /* Next insn is delay slot */ pc=0x44fe4; run_44e00(); return; } f0 = r0; f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x456e0; run_45600(); return; } addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; case 0x44448: r2 = r18 < 72 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45444; run_45400(); return; } r16 = 7 << 16; r16 = r16 + 216; case 0x4445c: 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; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x43b40; run_43a00(); return; case 0x44484: r17 = r17 | 8; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x44494: r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4412c; run_44000(); return; } case 0x444a8: r2 = r17 & 64; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45080; run_45000(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x444d8: r2 = r17 & 16; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44088; run_44000(); return; } case 0x444ec: r2 = r17 & 64; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x450a0; run_45000(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x4451c: writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x4452c: writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r18 == r0) { /* Next insn is delay slot */ pc=0x43a2c; run_43a00(); return; } addr=r29+104; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x44234; run_44200(); return; case 0x44550: r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x43c88; run_43c00(); return; case 0x4455c: r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r2 = r2 + 1; r3 = r4 < 2 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x449cc; run_44800(); return; } case 0x44580: r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44f34; run_44e00(); return; } r4 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; r8 = r8 + 8; r3 = r3 + 1; r5 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; r2 = r2 + r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44f88; run_44e00(); return; } case 0x445cc: r8 = r8 + 8; case 0x445d0: f0 = r0; f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x44c4c; run_44c00(); return; } r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r16 = r16 + 1; r4 = r5 + -1; 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: writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r2 = r2 + r4; case 0x4460c: r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x449f4; run_44800(); return; } case 0x44624: r8 = r8 + 8; case 0x44628: r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r4 = r29 + 164; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; r2 = r5 + r2; case 0x4463c: r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x43e4c; run_43e00(); return; } case 0x44654: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44668; pc=0x5fe00; run_5fe00(); return; case 0x44668: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43e50; run_43e00(); return; case 0x44680: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44694; pc=0x5fe00; run_5fe00(); return; case 0x44694: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43f8c; run_43e00(); return; case 0x446ac: r5 = r0 + 1; if(r4 == r5) { /* Next insn is delay slot */ pc=0x44aa8; run_44a00(); return; } r6 = r29 + 144; r5 = r0 + 2; r16 = r6 + r0; if(r4 != r5) { /* Next insn is delay slot */ pc=0x44700; continue; } r5 = readPages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff]; case 0x446d0: r4 = r2 & 15; r4 = r5 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r16 = r16 + -1; r2 = r2 >>> 4; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x446d0; continue; } case 0x446f0: r6 = r6 - r16; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x440ec; run_44000(); return; case 0x44700: r4 = r2 & 7; r16 = r16 + -1; r4 = r4 + 48; r2 = r2 >>> 3; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44700; continue; } r2 = r17 & 1; r5 = r16 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x446f0; continue; } r2 = r0 + 48; if(r4 == r2) { /* Next insn is delay slot */ pc=0x446f0; continue; } r16 = r16 + -1; r6 = r6 - r16; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x440ec; run_44000(); return; case 0x44750: r18 = r18 < 102 ? 1 : 0; if(r18 != r0) { /* Next insn is delay slot */ pc=0x4455c; run_44400(); return; } f0 = r0; f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x44af4; run_44a00(); return; } r3 = 7 << 16; r3 = r3 + 276; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x450d4; run_45000(); return; } r8 = r8 + 8; case 0x447b8: r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r3 = r3 < r4 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x447dc; continue; } r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x43e50; run_43e00(); return; } case 0x447dc: r3 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; r2 = r2 + r3; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; case 0x44800: pc=0x44800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_44800() throws ExecutionException { /* 0x44800 - 0x44a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x44800: r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x45418; run_45400(); return; } r8 = r8 + 8; case 0x44818: r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r16 = r3 + -1; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x43e50; run_43e00(); return; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x44d08; run_44c00(); return; } r5 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r5 + 636; r18 = r0 + 16; r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x44868; continue; case 0x44854: r8 = r8 + 8; case 0x44858: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44d14; run_44c00(); return; } case 0x44868: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44854; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x448a0; pc=0x5fe00; run_5fe00(); return; case 0x448a0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44858; continue; case 0x448bc: r3 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r4 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r20 = r3 - r4; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x43d18; run_43c00(); return; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x4572c; run_45600(); return; } r4 = 7 << 16; r23 = r4 + 636; r4 = r23 + r0; writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r16; r23 = r20 + r0; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r20 = r17 + r0; r7 = r0 + 16; r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r17 = r4 + r0; /* Next insn is delay slot */ pc=0x44924; continue; case 0x44910: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44988; continue; } case 0x44924: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r7; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44910; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; writePages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x44960; pc=0x5fe00; run_5fe00(); return; case 0x44960: r7 = readPages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } 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]; r8 = r21 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44924; continue; } case 0x44988: r4 = r17 + r0; r16 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; case 0x4499c: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44fb8; run_44e00(); return; } r8 = r8 + 8; /* Next insn is delay slot */ pc=0x43d18; run_43c00(); return; case 0x449cc: r3 = r17 & 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x44580; run_44400(); return; } r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44624; run_44600(); return; } case 0x449f4: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; 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: /* Next insn is delay slot */ r31=0x44a08; pc=0x5fe00; run_5fe00(); return; case 0x44a08: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44628; run_44600(); return; case 0x44a24: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44a38; pc=0x5fe00; run_5fe00(); return; case 0x44a38: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43e14; run_43e00(); return; case 0x44a50: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44a64; pc=0x5fe00; run_5fe00(); return; case 0x44a64: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43cc4; run_43c00(); return; case 0x44a7c: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44a90; pc=0x5fe00; run_5fe00(); return; case 0x44a90: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43d08; run_43c00(); return; case 0x44aa8: r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44d28; run_44c00(); return; } 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; r16 = r29 + 143; /* Next insn is delay slot */ pc=0x440ec; run_44000(); return; case 0x44ad0: writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r0; r16 = r29 + 144; /* Next insn is delay slot */ pc=0x440ec; run_44000(); return; case 0x44ae0: 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x44af4: r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x45100; run_45000(); return; } r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r4 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x44b24; continue; } r20 = r4 + r0; case 0x44b24: if(r20 <= 0) { /* Next insn is delay slot */ pc=0x44b58; continue; } r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + r20; r3 = r3 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x45568; run_45400(); return; } r8 = r8 + 8; case 0x44b58: if(r20 < 0) { /* Next insn is delay slot */ pc=0x4555c; run_45400(); return; } case 0x44b60: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r20 = r3 - r20; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x44ddc; run_44c00(); return; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45a94; run_45a00(); return; } r5 = 7 << 16; r23 = r5 + 636; r4 = r23 + r0; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r16; r23 = r20 + r0; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r20 = r18 + r0; r30 = r0 + 16; r18 = r17 + r0; r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r17 = r4 + r0; /* Next insn is delay slot */ pc=0x44bc8; continue; case 0x44bb4: r8 = r8 + 8; case 0x44bb8: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44d9c; run_44c00(); return; } case 0x44bc8: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44bb4; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44c00; pc=0x5fe00; run_5fe00(); return; case 0x44c00: pc=0x44c00; 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: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44bb8; run_44a00(); return; case 0x44c1c: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44c30; pc=0x5fe00; run_5fe00(); return; case 0x44c30: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43c88; run_43c00(); return; case 0x44c4c: r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r16 = r4 + -1; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x44628; run_44600(); return; } r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x45a84; run_45a00(); return; } r4 = 7 << 16; r23 = r4 + 636; r18 = r0 + 16; r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x44c98; continue; case 0x44c84: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44cf4; continue; } case 0x44c98: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44c84; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44cd0; pc=0x5fe00; run_5fe00(); return; case 0x44cd0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } 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]; r8 = r21 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44c98; continue; } case 0x44cf4: writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; r2 = r2 + r16; /* Next insn is delay slot */ pc=0x4460c; run_44600(); return; case 0x44d08: r4 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r4 + 636; case 0x44d14: writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; r2 = r2 + r16; /* Next insn is delay slot */ pc=0x4463c; run_44600(); return; case 0x44d28: r6 = r29 + 144; r16 = r6 + r0; r4 = r0 + 10; case 0x44d34: if(r4 != r0) { /* Next insn is delay slot */ if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } pc=0x44d40; continue; } if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x44d40: 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; r2 = lo; if(r2 != r0) { /* Next insn is delay slot */ pc=0x44d34; continue; } r6 = r6 - r16; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x440ec; run_44000(); return; case 0x44d6c: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x438b8; run_43800(); return; case 0x44d9c: r4 = r17 + r0; r16 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; r17 = r18 + r0; r18 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; case 0x44db4: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x45650; run_45600(); return; } r8 = r8 + 8; case 0x44ddc: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r16 = r16 + r3; r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r4 = r3 < r5 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44e08; run_44e00(); return; } r4 = r17 & 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: if(r4 == r0) { /* Next insn is delay slot */ pc=0x44e3c; continue; } case 0x44e08: r4 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; r5 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + r5; r4 = r4 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x455cc; run_45400(); return; } r8 = r8 + 8; case 0x44e3c: r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x44e5c; continue; } r20 = r18 + r0; case 0x44e5c: if(r20 <= 0) { /* Next insn is delay slot */ pc=0x44e90; continue; } r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + r20; r4 = r4 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4567c; run_45600(); return; } r8 = r8 + 8; case 0x44e90: if(r20 < 0) { /* Next insn is delay slot */ pc=0x456b4; run_45600(); return; } case 0x44e98: r16 = r3 - r20; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x43e50; run_43e00(); return; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x44d08; run_44c00(); return; } r5 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r5 + 636; r18 = r0 + 16; r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x44ee0; continue; case 0x44ecc: r8 = r8 + 8; case 0x44ed0: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44d14; run_44c00(); return; } case 0x44ee0: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x44ecc; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44f18; pc=0x5fe00; run_5fe00(); return; case 0x44f18: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44ed0; continue; case 0x44f34: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44f48; pc=0x5fe00; run_5fe00(); return; case 0x44f48: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r4 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; r3 = r3 + 1; r5 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; r2 = r2 + r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x445cc; run_44400(); return; } case 0x44f88: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44f9c; pc=0x5fe00; run_5fe00(); return; case 0x44f9c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x445d0; run_44400(); return; case 0x44fb8: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x44fcc; pc=0x5fe00; run_5fe00(); return; case 0x44fcc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x43d18; run_43c00(); return; case 0x44fe4: f12 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; f13 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x44ff8; pc=0x37a00; run_37a00(); return; case 0x44ff8: r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45234; run_45200(); return; } case 0x45000: pc=0x45000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_45000() throws ExecutionException { /* 0x45000 - 0x45200 */ int addr, tmp; for(;;) { switch(pc) { case 0x45000: r2 = r18 < 72 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45494; run_45400(); return; } r16 = 7 << 16; r16 = r16 + 224; case 0x45018: 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 */ r3 = tmp; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x43b40; run_43a00(); return; case 0x45044: r2 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r3 = r2 + 7; /* Next insn is delay slot */ pc=0x443d8; run_44200(); return; case 0x45058: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x44188; run_44000(); return; case 0x4506c: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x441ec; run_44000(); return; case 0x45080: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; r4 = r0 + 1; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x450a0: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; r4 = r0 + r0; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x440a4; run_44000(); return; case 0x450c0: r4 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r4 + 636; /* Next insn is delay slot */ pc=0x43dec; run_43c00(); return; case 0x450d4: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x450e8; pc=0x5fe00; run_5fe00(); return; case 0x450e8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x447b8; run_44600(); return; case 0x45100: r4 = 7 << 16; r4 = r4 + 276; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; r4 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x454a4; run_45400(); return; } r8 = r8 + 8; r18 = r3 + r0; case 0x4513c: if(r18 != r0) { /* Next insn is delay slot */ pc=0x45160; continue; } r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45160; continue; } r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x43e50; run_43e00(); return; } case 0x45160: r3 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; 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; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x458e0; run_45800(); return; } r8 = r8 + 8; case 0x4519c: r18 = r0 - r18; if(r18 <= 0) { /* Next insn is delay slot */ pc=0x45530; run_45400(); return; } r4 = r18 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x45594; run_45400(); return; } r5 = 7 << 16; r23 = r5 + 636; r20 = r0 + 16; r30 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x451e0; continue; case 0x451cc: r8 = r8 + 8; case 0x451d0: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x4559c; run_45400(); return; } case 0x451e0: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x451cc; continue; } 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: r4 = r30 + r0; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x45218; pc=0x5fe00; run_5fe00(); return; case 0x45218: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x451d0; run_45000(); return; case 0x45234: r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; if(r30 == r2) { /* Next insn is delay slot */ pc=0x454d4; run_45400(); return; } r2 = r0 + 71; if(r20 == r2) { /* Next insn is delay slot */ pc=0x458cc; run_45800(); return; } case 0x45254: r2 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; r23 = r17 | 256; if(r2 < 0) { /* Next insn is delay slot */ pc=0x45914; run_45800(); return; } f0 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r0; f1 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; writePages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff] = f0; writePages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff] = f1; case 0x4527c: r2 = r0 + 102; if(r18 == r2) { /* Next insn is delay slot */ pc=0x45740; run_45600(); return; } r2 = r0 + 70; if(r18 == r2) { /* Next insn is delay slot */ pc=0x45740; run_45600(); return; } r2 = r0 + 69; if(r20 == r2) { /* Next insn is delay slot */ pc=0x4593c; run_45800(); return; } r5 = r30 + r0; case 0x452a4: r2 = r0 + 2; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = r29 + 176; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = r29 + 172; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r2 = r29 + 156; r7 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; r6 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; writePages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff] = r5; writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x452e4; pc=0x57400; run_57400(); return; case 0x452e4: r16 = r2 + r0; r2 = r0 + 103; r5 = readPages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff]; r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; if(r18 == r2) { /* Next insn is delay slot */ pc=0x45308; continue; } r2 = r0 + 71; if(r18 != r2) { /* Next insn is delay slot */ pc=0x45314; continue; } case 0x45308: r2 = r17 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45a6c; run_45a00(); return; } case 0x45314: r2 = r0 + 70; r4 = r16 + r5; if(r20 == r2) { /* Next insn is delay slot */ pc=0x4584c; run_45800(); return; } case 0x45324: f0 = r0; f2 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x45720; run_45600(); return; } r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x45380; continue; } r5 = r0 + 48; case 0x45360: 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]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45360; continue; } case 0x45380: r2 = r2 - r16; writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r2; r2 = r0 + 71; if(r20 == r2) { /* Next insn is delay slot */ pc=0x456f4; run_45600(); return; } r2 = r18 < 102 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45b80; run_45a00(); return; } r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r2 = r0 + 102; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r3; if(r18 == r2) { /* Next insn is delay slot */ pc=0x459ac; run_45800(); return; } case 0x453b4: r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r4 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r2 = r4 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45948; run_45800(); return; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x45980; run_45800(); return; } r2 = r4 + r0; if(r4 < 0) { /* Next insn is delay slot */ pc=0x45b64; run_45a00(); return; } case 0x453e4: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r18 = r0 + 103; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; case 0x453f0: r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; if(r5 != r0) { /* Next insn is delay slot */ pc=0x456c0; run_45600(); return; } 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: addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; r17 = r23 + r0; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x43b40; run_43a00(); return; case 0x45418: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x4542c; pc=0x5fe00; run_5fe00(); return; case 0x4542c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44818; run_44800(); return; case 0x45444: r16 = 7 << 16; r16 = r16 + 212; /* Next insn is delay slot */ pc=0x4445c; run_44400(); return; case 0x45454: r30 = r0 + -1; r3 = r4 + r0; /* Next insn is delay slot */ pc=0x43994; run_43800(); return; case 0x45464: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r0 + 64; /* Next insn is delay slot */ r31=0x45474; pc=0x3ec00; run_3ec00(); return; case 0x45474: writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r2; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45b8c; run_45a00(); return; } r2 = r0 + 64; writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x43884; run_43800(); return; case 0x45494: r16 = 7 << 16; r16 = r16 + 220; /* Next insn is delay slot */ pc=0x45018; run_45000(); return; case 0x454a4: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x454b8; pc=0x5fe00; run_5fe00(); return; case 0x454b8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r18 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x4513c; run_45000(); return; case 0x454d4: r30 = r0 + 6; /* Next insn is delay slot */ pc=0x45254; run_45200(); return; case 0x454e0: writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x454ec; pc=0x10268; run_10200(); return; case 0x454ec: writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x43b2c; run_43a00(); return; } case 0x454fc: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x43b2c; run_43a00(); return; case 0x45508: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x4551c; pc=0x5fe00; run_5fe00(); return; case 0x4551c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; case 0x45530: r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r2 = r4 + r2; /* Next insn is delay slot */ pc=0x4463c; run_44600(); return; case 0x45548: r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x43c58; run_43c00(); return; case 0x4555c: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x44b60; run_44a00(); return; case 0x45568: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x4557c; pc=0x5fe00; run_5fe00(); return; case 0x4557c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44b58; run_44a00(); return; case 0x45594: r4 = 7 << 16; r23 = r4 + 636; case 0x4559c: r3 = r3 + 1; r2 = r2 + r18; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x45508; continue; } r8 = r8 + 8; /* Next insn is delay slot */ pc=0x45530; continue; case 0x455cc: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x455e0; pc=0x5fe00; run_5fe00(); return; case 0x455e0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44e3c; run_44e00(); return; case 0x455fc: r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; case 0x45600: pc=0x45600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_45600() throws ExecutionException { /* 0x45600 - 0x45800 */ int addr, tmp; for(;;) { switch(pc) { case 0x45600: writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x43f08; run_43e00(); return; case 0x4560c: r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r2 = r30 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45620; continue; } r2 = r0 + 6; case 0x45620: writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x45a78; run_45a00(); return; } case 0x4562c: r16 = 7 << 16; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; r3 = r0 + r0; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; r16 = r16 + 268; /* Next insn is delay slot */ pc=0x43b58; run_43a00(); return; case 0x45650: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x45664; pc=0x5fe00; run_5fe00(); return; case 0x45664: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44ddc; run_44c00(); return; case 0x4567c: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x45690; pc=0x5fe00; run_5fe00(); return; case 0x45690: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = r5 - r3; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x44e90; run_44e00(); return; case 0x456b4: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x44e98; run_44e00(); return; case 0x456c0: 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; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x43b48; run_43a00(); return; case 0x456e0: 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; r3 = r0 + 45; /* Next insn is delay slot */ pc=0x44448; run_44400(); return; case 0x456f4: r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r3 = r2 < -3 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45790; continue; } r3 = r30 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x45790; continue; } writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x453b4; run_45200(); return; case 0x45720: r2 = r4 + r0; /* Next insn is delay slot */ pc=0x45380; run_45200(); return; case 0x4572c: r5 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r5 + 636; /* Next insn is delay slot */ pc=0x4499c; run_44800(); return; case 0x45740: r2 = r0 + 3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = r29 + 176; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r2 = r29 + 172; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r2 = r29 + 156; r7 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; r6 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r30; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x4577c; pc=0x57400; run_57400(); return; case 0x4577c: r16 = r2 + r0; r5 = r30 + r0; r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x45314; run_45200(); return; case 0x45790: r18 = r18 + -2; case 0x45794: r2 = r2 + -1; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r2; addr=r29+164; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x45b34; run_45a00(); return; } r3 = r0 + 43; addr=r29+165; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x457b0: r3 = r2 < 10 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x459d8; run_45800(); return; } r2 = r2 + 48; r3 = r0 + 48; addr=r29+167; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+166; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r29 + 168; r4 = r29 + 164; case 0x457d4: r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r4 = r2 - r4; r3 = r3 + r4; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; r2 = r3 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45820; run_45800(); return; } case 0x457f8: r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; 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: r3 = r3 + 1; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; r2 = r3 + r0; if(r3 < 0) { /* Next insn is delay slot */ pc=0x4583c; continue; } case 0x45814: writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x45820: r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x457f8; run_45600(); return; } r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x45814; continue; } case 0x4583c: r2 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x4584c: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 48; if(r3 == r2) { /* Next insn is delay slot */ pc=0x45870; continue; } case 0x4585c: r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r4 = r4 + r2; /* Next insn is delay slot */ pc=0x45324; run_45200(); return; case 0x45870: f0 = r0; f2 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x4585c; continue; } r2 = r0 + 1; r2 = r2 - r5; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r2; r4 = r4 + r2; /* Next insn is delay slot */ pc=0x45324; run_45200(); return; case 0x458ac: writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r30; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; addr=r29+182; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; r30 = r0 + r0; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x43b40; run_43a00(); return; case 0x458cc: if(r30 != r0) { /* Next insn is delay slot */ pc=0x45254; run_45200(); return; } r30 = r0 + 1; /* Next insn is delay slot */ pc=0x45254; run_45200(); return; case 0x458e0: r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r29 + 144; /* Next insn is delay slot */ r31=0x458f4; pc=0x5fe00; run_5fe00(); return; case 0x458f4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x43a50; run_43a00(); return; } r18 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r8 = r21 + r0; /* Next insn is delay slot */ pc=0x4519c; run_45000(); return; case 0x45914: r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; r2 = 32768 << 16; r4 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; r2 = r3 ^ r2; r5 = r0 + 45; writePages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff] = r2; writePages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff] = r4; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x4527c; run_45200(); return; case 0x4593c: r5 = r30 + 1; /* Next insn is delay slot */ pc=0x452a4; run_45200(); return; case 0x45948: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x45af4; run_45a00(); return; } r2 = r0 + 1; case 0x4595c: r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r2 = r2 + r3; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x4599c; continue; } case 0x45974: r18 = r0 + 103; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x45980: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; r2 = r3 + r0; if(r3 >= 0) { /* Next insn is delay slot */ pc=0x45974; continue; } case 0x4599c: r2 = r0 + r0; r18 = r0 + 103; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x459ac: if(r3 <= 0) { /* Next insn is delay slot */ pc=0x45acc; run_45a00(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x45aa8; run_45a00(); return; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x45aa8; run_45a00(); return; } r2 = r3 + r0; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x459d8: r6 = r29 + 163; r3 = r6 + r0; r4 = r0 + 10; case 0x459e4: if(r4 != r0) { /* Next insn is delay slot */ hi = r2%r4; lo = r2/r4; pc=0x459f0; continue; } hi = r2%r4; lo = r2/r4; throw new ExecutionException("Break"); case 0x459f0: r3 = r3 + -1; r5 = hi; r5 = r5 + 48; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x45a00: pc=0x45a00; 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: r2 = lo; r5 = r2 < 10 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x459e4; run_45800(); return; } r2 = r2 + 48; r5 = r2 << 24; r4 = r3 + -1; r5 = r5 >> 24; r2 = ((r4 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45b70; continue; } r2 = r29 + 166; /* Next insn is delay slot */ pc=0x45a40; continue; case 0x45a3c: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; case 0x45a40: r2 = r2 + 1; r4 = r4 + 1; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 != r6) { /* Next insn is delay slot */ pc=0x45a3c; continue; } r4 = r29 + 164; r2 = r4 - r3; r3 = r29 + 166; r2 = r3 + r2; /* Next insn is delay slot */ pc=0x457d4; run_45600(); return; case 0x45a6c: r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x45380; run_45200(); return; case 0x45a78: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x4562c; run_45600(); return; case 0x45a84: r5 = 7 << 16; r23 = r5 + 636; /* Next insn is delay slot */ pc=0x44cf4; run_44c00(); return; case 0x45a94: r4 = 7 << 16; r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r23 = r4 + 636; /* Next insn is delay slot */ pc=0x44db4; run_44c00(); return; case 0x45aa8: r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r2 = r30 + 1; r2 = r3 + r2; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; } case 0x45ac0: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x45acc: if(r30 != r0) { /* Next insn is delay slot */ pc=0x45b48; continue; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x45b48; continue; } r3 = r0 + 1; r2 = r0 + 1; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; case 0x45af4: r2 = r0 + 2; r2 = r2 - r3; /* Next insn is delay slot */ pc=0x4595c; run_45800(); return; case 0x45b04: r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; r30 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r3 + 4; r3 = r4 + r0; if(r30 >= 0) { /* Next insn is delay slot */ pc=0x4451c; run_44400(); return; } writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; r30 = r0 + -1; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x4398c; run_43800(); return; case 0x45b34: r3 = r0 + 45; r2 = r0 - r2; addr=r29+165; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x457b0; run_45600(); return; case 0x45b48: r30 = r30 + 2; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; r2 = r30 + r0; if(r30 >= 0) { /* Next insn is delay slot */ pc=0x453f0; run_45200(); return; } /* Next insn is delay slot */ pc=0x45ac0; continue; case 0x45b64: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x453e4; run_45200(); return; case 0x45b70: r2 = r29 + 166; r4 = r29 + 164; /* Next insn is delay slot */ pc=0x457d4; run_45600(); return; case 0x45b80: r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x45794; run_45600(); return; case 0x45b8c: r3 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; r2 = r0 + 12; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x43a68; run_43a00(); return; case 0x45c00: pc=0x45c00; 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: 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; r22 = r5 + r0; r21 = r4 + r0; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r6; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r7; writePages[(r29+1320)>>>12][((r29+1320)>>>2)&0x3ff] = r30; writePages[(r29+1316)>>>12][((r29+1316)>>>2)&0x3ff] = r23; writePages[(r29+1304)>>>12][((r29+1304)>>>2)&0x3ff] = r20; writePages[(r29+1300)>>>12][((r29+1300)>>>2)&0x3ff] = r19; writePages[(r29+1296)>>>12][((r29+1296)>>>2)&0x3ff] = r18; writePages[(r29+1292)>>>12][((r29+1292)>>>2)&0x3ff] = r17; writePages[(r29+1288)>>>12][((r29+1288)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x45c44; pc=0x5ae00; run_5ae00(); return; case 0x45c44: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r2 + r0; writePages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x45c5c; pc=0x10268; run_10200(); return; case 0x45c5c: writePages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff] = r2; if(r21 == r0) { /* Next insn is delay slot */ pc=0x45c78; continue; } r2 = readPages[(r21+56)>>>12][((r21+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45fec; run_45e00(); return; } case 0x45c78: addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x45cac; continue; } r4 = readPages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff]; r2 = r0 + -8193; r3 = r3 | 8192; r2 = r4 & r2; writePages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff] = r2; addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r3 & 65535; case 0x45cac: r4 = r2 & 8; if(r4 == r0) { /* Next insn is delay slot */ pc=0x45e58; run_45e00(); return; } r4 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x45e58; run_45e00(); return; } r2 = r2 & 26; r4 = r0 + 10; if(r2 == r4) { /* Next insn is delay slot */ pc=0x45e88; run_45e00(); return; } case 0x45cd8: r3 = r29 + 40; r2 = 7 << 16; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r3; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r0; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r0; writePages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff] = r0; writePages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff] = r0; writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r0; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r0; writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r0; r8 = r3 + r0; r19 = r2 + 1040; case 0x45d0c: r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x464a4; run_46400(); return; } case 0x45d24: r3 = r0 + 37; r16 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; if(r2 != r3) { /* Next insn is delay slot */ pc=0x45d44; continue; } /* Next insn is delay slot */ pc=0x45db0; continue; case 0x45d3c: if(r2 == r3) { /* Next insn is delay slot */ pc=0x45d58; continue; } case 0x45d44: 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 */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45d3c; continue; } case 0x45d58: r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; r17 = r16 - r3; if(r17 == r0) { /* Next insn is delay slot */ pc=0x45db0; continue; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; r2 = r2 + r17; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; r2 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r2 = r2 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45f80; run_45e00(); return; } r8 = r8 + 8; case 0x45da0: r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; r3 = r3 + r17; writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r3; case 0x45db0: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45fa8; run_45e00(); 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; r5 = r0 + r0; r30 = r0 + -1; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; case 0x45de0: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r3 = r16 + 1; case 0x45de8: r2 = r18 + -32; r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x46a10; run_46a00(); return; } r4 = 7 << 16; r2 = r2 << 2; 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: r4 = r4 + 668; r2 = r4 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x45e18: r17 = r17 | 16; case 0x45e1c: r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x45e28: r4 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r7 >= 0) { /* Next insn is delay slot */ pc=0x46a00; run_46a00(); return; } r7 = r0 - r7; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; case 0x45e48: r17 = r17 | 4; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x45e58: r4 = r21 + r0; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x45e68; pc=0x48600; run_48600(); return; case 0x45e68: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45f48; 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 */ r3 = tmp; r4 = r0 + 10; r2 = r3 & 65535; r2 = r2 & 26; if(r2 != r4) { /* Next insn is delay slot */ pc=0x45cd8; run_45c00(); return; } case 0x45e88: addr=r22+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x45cd8; run_45c00(); 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]; r4 = r0 + -3; writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r2; r2 = readPages[(r22+36)>>>12][((r22+36)>>>2)&0x3ff]; r3 = r3 & r4; addr=r29+1076; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r2; r3 = readPages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff]; 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; r4 = r21 + r0; r2 = r0 + 1024; r5 = r29 + 1064; writePages[(r29+1164)>>>12][((r29+1164)>>>2)&0x3ff] = r3; writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r2; writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r2; writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x45ef4; pc=0x45c00; run_45c00(); return; case 0x45ef4: r16 = r2 + r0; if(r2 < 0) { /* Next insn is delay slot */ pc=0x45f18; continue; } r4 = r21 + r0; r5 = r29 + 1064; /* Next insn is delay slot */ r31=0x45f10; pc=0x39800; run_39800(); return; case 0x45f10: if(r2 != r0) { /* Next insn is delay slot */ pc=0x47f78; run_47e00(); return; } case 0x45f18: addr=r29+1076; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45f3c; continue; } addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 64; addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x45f3c: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x45f4c; continue; case 0x45f48: r2 = r0 + -1; case 0x45f4c: r31 = readPages[(r29+1324)>>>12][((r29+1324)>>>2)&0x3ff]; r30 = readPages[(r29+1320)>>>12][((r29+1320)>>>2)&0x3ff]; r23 = readPages[(r29+1316)>>>12][((r29+1316)>>>2)&0x3ff]; r22 = readPages[(r29+1312)>>>12][((r29+1312)>>>2)&0x3ff]; r21 = readPages[(r29+1308)>>>12][((r29+1308)>>>2)&0x3ff]; r20 = readPages[(r29+1304)>>>12][((r29+1304)>>>2)&0x3ff]; r19 = readPages[(r29+1300)>>>12][((r29+1300)>>>2)&0x3ff]; r18 = readPages[(r29+1296)>>>12][((r29+1296)>>>2)&0x3ff]; r17 = readPages[(r29+1292)>>>12][((r29+1292)>>>2)&0x3ff]; r16 = readPages[(r29+1288)>>>12][((r29+1288)>>>2)&0x3ff]; r29 = r29 + 1328; /* Next insn is delay slot */ pc=r31; return; case 0x45f80: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x45f94; pc=0x63400; run_63400(); return; case 0x45f94: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; continue; } r8 = r29 + 40; /* Next insn is delay slot */ pc=0x45da0; run_45c00(); return; case 0x45fa8: r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x45fcc; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x45fcc; pc=0x63400; run_63400(); return; case 0x45fcc: addr=r22+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45f48; continue; } r2 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x45f4c; continue; case 0x45fec: r4 = r21 + r0; /* Next insn is delay slot */ r31=0x45ff8; pc=0x3a600; run_3a600(); return; case 0x45ff8: /* Next insn is delay slot */ pc=0x45c78; run_45c00(); return; case 0x46000: pc=0x46000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_46000() throws ExecutionException { /* 0x46000 - 0x46200 */ int addr, tmp; for(;;) { switch(pc) { case 0x46000: r5 = r0 + 43; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x46010: writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r20 = r3 + 4; if(r16 == r0) { /* Next insn is delay slot */ pc=0x47aa4; run_47a00(); return; } r4 = r16 + r0; if(r30 < 0) { /* Next insn is delay slot */ pc=0x47984; run_47800(); return; } r5 = r0 + r0; r6 = r30 + r0; writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x46050; pc=0x5b400; run_5b400(); return; case 0x46050: r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47c38; run_47c00(); return; } r2 = r2 - r16; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; r2 = r30 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4787c; run_47800(); return; } case 0x46070: r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x479a0; run_47800(); return; } case 0x46080: addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; case 0x46094: if(r3 == r0) { /* Next insn is delay slot */ pc=0x460ac; continue; } case 0x4609c: r2 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; case 0x460ac: r4 = r17 & 2; writePages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff] = r4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x460cc; continue; } r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r5 = r5 + 2; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; case 0x460cc: r2 = r17 & 132; writePages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46a64; run_46a00(); return; } r4 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r20 = r4 - r5; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x46a64; run_46a00(); return; } r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x479ac; run_47800(); 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; r23 = r0 + 16; /* Next insn is delay slot */ pc=0x4612c; continue; case 0x46118: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46188; continue; } case 0x4612c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r23; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46118; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46164; pc=0x63400; run_63400(); return; case 0x46164: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } 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]; r8 = r29 + 40; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4612c; continue; } case 0x46188: r3 = r3 + 1; r4 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; r2 = r20 + r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x470e4; run_47000(); return; } addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r8 = r8 + 8; case 0x461b8: if(r3 == r0) { /* Next insn is delay slot */ pc=0x461f4; continue; } r3 = r29 + 1206; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46f60; run_46e00(); return; } r8 = r8 + 8; case 0x461f4: r3 = readPages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46238; run_46200(); return; } case 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: r3 = r29 + 1204; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 2; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + 2; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46f34; run_46e00(); return; } r8 = r8 + 8; case 0x46238: r4 = readPages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff]; r3 = r0 + 128; if(r4 == r3) { /* Next insn is delay slot */ pc=0x46dcc; run_46c00(); return; } case 0x46248: r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; r20 = r30 - r3; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x46318; continue; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x4770c; run_47600(); return; } r5 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r5 + 1024; r30 = r0 + 16; /* Next insn is delay slot */ pc=0x46294; continue; case 0x46280: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x462f0; continue; } case 0x46294: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46280; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x462cc; pc=0x63400; run_63400(); return; case 0x462cc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } 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]; r8 = r29 + 40; if(r4 == r0) { /* Next insn is delay slot */ pc=0x46294; continue; } case 0x462f0: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46f08; run_46e00(); return; } r8 = r8 + 8; case 0x46318: r3 = r17 & 256; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46c64; run_46c00(); return; } r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; r2 = r2 + r3; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46b68; run_46a00(); return; } case 0x46350: r8 = r8 + 8; case 0x46354: r17 = r17 & 4; if(r17 == r0) { /* Next insn is delay slot */ pc=0x46450; run_46400(); return; } r3 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; r4 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r16 = r3 - r4; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x46450; run_46400(); return; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x47ae8; run_47a00(); return; } r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; r17 = r0 + 16; /* Next insn is delay slot */ pc=0x463ac; continue; case 0x46398: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46408; run_46400(); return; } case 0x463ac: r3 = r3 + 1; r2 = r2 + 16; r6 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r6 != r0) { /* Next insn is delay slot */ pc=0x46398; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x463e4; pc=0x63400; run_63400(); return; case 0x463e4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } 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]; r8 = r29 + 40; 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: if(r4 == r0) { /* Next insn is delay slot */ pc=0x463ac; run_46200(); return; } case 0x46408: r3 = r3 + 1; r5 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; r2 = r2 + r16; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46450; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46444; pc=0x63400; run_63400(); return; case 0x46444: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; case 0x46450: r3 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r5 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; r4 = r3 < r5 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4646c; continue; } r3 = r5 + r0; case 0x4646c: r4 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; r4 = r4 + r3; writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46b94; run_46a00(); return; } writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; r8 = r29 + 40; case 0x4648c: r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45d24; run_45c00(); return; } case 0x464a4: r16 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x45db0; run_45c00(); return; case 0x464b0: if(r5 != r0) { /* Next insn is delay slot */ pc=0x45e1c; run_45e00(); return; } r5 = r0 + 32; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x464c8: r17 = r17 | 1; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x464d8: addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r4 = r3 + 1; if(r18 == r6) { /* Next insn is delay slot */ pc=0x47efc; run_47e00(); return; } r2 = r18 + -48; r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r30 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x4652c; continue; } case 0x464fc: 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 */ r18 = tmp; r30 = r30 << 3; r30 = r3 + r30; r30 = r2 + r30; r2 = r18 + -48; r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x464fc; continue; } if(r30 < 0) { /* Next insn is delay slot */ pc=0x478d8; run_47800(); return; } case 0x4652c: r3 = r4 + r0; /* Next insn is delay slot */ pc=0x45de8; run_45c00(); return; case 0x46538: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x4698c; run_46800(); return; } case 0x46550: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r4 = r0 + r0; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; case 0x4656c: if(r30 < 0) { /* Next insn is delay slot */ pc=0x4657c; continue; } r5 = r0 + -129; r17 = r17 & r5; case 0x4657c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x46bc0; run_46a00(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x46bc0; run_46a00(); return; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x46fb4; run_46e00(); return; } r2 = r17 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x46fb4; run_46e00(); 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; r2 = r0 + 1; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; r16 = r29 + 1103; case 0x465b4: r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; r4 = r2 < r30 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x465cc; continue; } r2 = r30 + r0; case 0x465cc: writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x46094; run_46000(); return; case 0x465dc: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x469d0; run_46800(); return; } case 0x465f4: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r4 = r0 + 1; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; case 0x46600: pc=0x46600; 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: 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46618: r7 = r0 + r0; r2 = r18 + -48; case 0x46620: 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 */ r18 = tmp; r7 = r7 << 3; r7 = r4 + r7; r7 = r7 + r2; r2 = r18 + -48; r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46620; continue; } /* Next insn is delay slot */ pc=0x45de8; run_45c00(); return; case 0x46650: r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x468bc; run_46800(); return; } case 0x46668: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; case 0x4667c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x47434; run_47400(); return; } addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46694: r17 = r17 | 64; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x466a4: r17 = r17 | 128; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x466b4: writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; 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; 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]; r17 = r17 | 2; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + 248; writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r3; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46708: r2 = r17 & 8; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47668; run_47600(); return; } r4 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r3 = r4 + 7; case 0x4672c: r2 = r0 + -8; r2 = r3 & r2; r3 = r2 + 8; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; writePages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff] = f0; f12 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; writePages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff] = f1; f13 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x46764; pc=0x37a00; run_37a00(); return; case 0x46764: r3 = r0 + 1; r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; if(r2 != r3) { /* Next insn is delay slot */ pc=0x47450; run_47400(); return; } f0 = r0; f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x47b44; run_47a00(); return; } addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; case 0x4679c: r2 = r18 < 72 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x478c8; run_47800(); return; } r16 = 7 << 16; r16 = r16 + 212; case 0x467b0: 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; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x46094; run_46000(); return; case 0x467d8: r17 = r17 | 8; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x467e8: r2 = 7 << 16; r2 = r2 + 228; writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r2; r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; case 0x46800: pc=0x46800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_46800() throws ExecutionException { /* 0x46800 - 0x46a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x46800: addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x46904; continue; } case 0x4680c: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; case 0x46820: r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46fc4; run_46e00(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x46fc4; run_46e00(); 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; 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46858: writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; addr=r29+1064; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; case 0x46878: 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; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; r16 = r29 + 1064; /* Next insn is delay slot */ pc=0x460ac; run_46000(); return; case 0x468a0: r17 = r17 | 16; r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46668; run_46600(); return; } case 0x468bc: r2 = r17 & 64; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x4769c; run_47600(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x4667c; run_46600(); return; case 0x468e0: writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; r3 = 7 << 16; r3 = r3 + 248; r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4680c; continue; } case 0x46904: r2 = r17 & 64; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47654; run_47600(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x46820; continue; case 0x46928: r2 = r17 & 16; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46a34; run_46a00(); return; } r17 = r17 & 64; if(r17 == r0) { /* Next insn is delay slot */ pc=0x46a34; run_46a00(); return; } r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x45d0c; run_45c00(); return; case 0x46978: r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46550; run_46400(); return; } case 0x4698c: r2 = r17 & 64; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x4767c; run_47600(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; r4 = r0 + r0; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x469bc: r2 = r17 & 16; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x465f4; run_46400(); return; } case 0x469d0: r2 = r17 & 64; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x476b0; run_47600(); return; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; r4 = r0 + 1; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46a00: pc=0x46a00; 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: writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x46a10: writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r18 == r0) { /* Next insn is delay slot */ pc=0x45fa8; run_45e00(); return; } addr=r29+1064; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x46878; run_46800(); return; case 0x46a34: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x45d0c; run_45c00(); return; case 0x46a64: r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x461b8; run_46000(); return; case 0x46a70: r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r2 = r2 + 1; r3 = r4 < 2 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46eb0; run_46e00(); return; } case 0x46a94: r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4738c; run_47200(); return; } r8 = r8 + 8; case 0x46ab4: r4 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; r3 = r3 + 1; r5 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; r2 = r2 + r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x473bc; run_47200(); return; } r8 = r8 + 8; case 0x46ae4: f0 = r0; f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x47114; run_47000(); return; } r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r16 = r16 + 1; r4 = r5 + -1; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r2 = r2 + r4; case 0x46b20: r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x46ed8; run_46e00(); return; } case 0x46b38: r8 = r8 + 8; case 0x46b3c: r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r4 = r29 + 1188; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; r2 = r5 + r2; case 0x46b50: r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46350; run_46200(); return; } case 0x46b68: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46b7c; pc=0x63400; run_63400(); return; case 0x46b7c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46354; run_46200(); return; case 0x46b94: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46ba8; pc=0x63400; run_63400(); return; case 0x46ba8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x4648c; run_46400(); return; case 0x46bc0: r5 = r0 + 1; if(r4 == r5) { /* Next insn is delay slot */ pc=0x46f8c; run_46e00(); return; } r6 = r29 + 1104; r5 = r0 + 2; r16 = r6 + r0; if(r4 != r5) { /* Next insn is delay slot */ pc=0x46c14; run_46c00(); return; } r5 = readPages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff]; case 0x46be4: r4 = r2 & 15; r4 = r5 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r16 = r16 + -1; r2 = r2 >>> 4; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46be4; continue; } 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: case 0x46c04: r6 = r6 - r16; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x465b4; run_46400(); return; case 0x46c14: r4 = r2 & 7; r16 = r16 + -1; r4 = r4 + 48; r2 = r2 >>> 3; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x46c14; continue; } r2 = r17 & 1; r5 = r16 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x46c04; continue; } r2 = r0 + 48; if(r4 == r2) { /* Next insn is delay slot */ pc=0x46c04; continue; } r16 = r16 + -1; r6 = r6 - r16; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x465b4; run_46400(); return; case 0x46c64: r18 = r18 < 102 ? 1 : 0; if(r18 != r0) { /* Next insn is delay slot */ pc=0x46a70; run_46a00(); return; } f0 = r0; f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x46fd8; run_46e00(); return; } r3 = 7 << 16; r3 = r3 + 276; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47720; run_47600(); return; } r8 = r8 + 8; case 0x46ccc: r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r3 = r3 < r4 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46cf0; continue; } r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46354; run_46200(); return; } case 0x46cf0: r3 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; 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; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47918; run_47800(); return; } r8 = r8 + 8; case 0x46d2c: r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r16 = r3 + -1; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x46354; run_46200(); return; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x471b0; run_47000(); return; } r5 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r5 + 1024; r18 = r0 + 16; /* Next insn is delay slot */ pc=0x46d78; continue; case 0x46d64: r8 = r8 + 8; case 0x46d68: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x471bc; run_47000(); return; } case 0x46d78: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46d64; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46db0; pc=0x63400; run_63400(); return; case 0x46db0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46d68; continue; case 0x46dcc: r3 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; r4 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r20 = r3 - r4; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x46248; run_46200(); return; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x47bb8; run_47a00(); return; } r4 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r4 + 1024; r7 = r0 + 16; 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: /* Next insn is delay slot */ pc=0x46e1c; continue; case 0x46e08: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46e80; continue; } case 0x46e1c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r7; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46e08; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; writePages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x46e58; pc=0x63400; run_63400(); return; case 0x46e58: r7 = readPages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } 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]; r8 = r29 + 40; if(r4 == r0) { /* Next insn is delay slot */ pc=0x46e1c; continue; } case 0x46e80: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47408; run_47400(); return; } r8 = r8 + 8; /* Next insn is delay slot */ pc=0x46248; run_46200(); return; case 0x46eb0: r3 = r17 & 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x46a94; run_46a00(); return; } r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x46b38; run_46a00(); return; } case 0x46ed8: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46eec; pc=0x63400; run_63400(); return; case 0x46eec: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46b3c; run_46a00(); return; case 0x46f08: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46f1c; pc=0x63400; run_63400(); return; case 0x46f1c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46318; run_46200(); return; case 0x46f34: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46f48; pc=0x63400; run_63400(); return; case 0x46f48: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46238; run_46200(); return; case 0x46f60: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x46f74; pc=0x63400; run_63400(); return; case 0x46f74: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x461f4; run_46000(); return; case 0x46f8c: r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x471d0; run_47000(); return; } 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; r16 = r29 + 1103; /* Next insn is delay slot */ pc=0x465b4; run_46400(); return; case 0x46fb4: writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r0; r16 = r29 + 1104; /* Next insn is delay slot */ pc=0x465b4; run_46400(); return; case 0x46fc4: 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; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x46fd8: r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x4774c; run_47600(); return; } r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r4 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47008; run_47000(); return; } case 0x47000: pc=0x47000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_47000() throws ExecutionException { /* 0x47000 - 0x47200 */ int addr, tmp; for(;;) { switch(pc) { case 0x47000: r20 = r4 + r0; case 0x47008: if(r20 <= 0) { /* Next insn is delay slot */ pc=0x4703c; continue; } r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + r20; r3 = r3 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x479cc; run_47800(); return; } r8 = r8 + 8; case 0x4703c: if(r20 < 0) { /* Next insn is delay slot */ pc=0x479c0; run_47800(); return; } case 0x47044: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r20 = r3 - r20; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x47238; run_47200(); return; } r3 = r20 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x476d0; run_47600(); return; } r5 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r5 + 1024; r30 = r0 + 16; /* Next insn is delay slot */ pc=0x47090; continue; case 0x4707c: r8 = r8 + 8; case 0x47080: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x476dc; run_47600(); return; } case 0x47090: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x4707c; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x470c8; pc=0x63400; run_63400(); return; case 0x470c8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x47080; continue; case 0x470e4: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x470f8; pc=0x63400; run_63400(); return; case 0x470f8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x461b8; run_46000(); return; case 0x47114: r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r16 = r4 + -1; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x46b3c; run_46a00(); return; } r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x473ec; run_47200(); return; } r4 = 7 << 16; r23 = r4 + 1024; r18 = r0 + 16; /* Next insn is delay slot */ pc=0x4715c; continue; case 0x47148: r8 = r8 + 8; case 0x4714c: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x473f4; run_47200(); return; } case 0x4715c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47148; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47194; pc=0x63400; run_63400(); return; case 0x47194: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x4714c; continue; case 0x471b0: r4 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r4 + 1024; case 0x471bc: writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; r2 = r2 + r16; /* Next insn is delay slot */ pc=0x46b50; run_46a00(); return; case 0x471d0: r6 = r29 + 1104; r16 = r6 + r0; r4 = r0 + 10; case 0x471dc: if(r4 != r0) { /* Next insn is delay slot */ if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } pc=0x471e8; continue; } if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x471e8: 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; r2 = lo; if(r2 != r0) { /* Next insn is delay slot */ pc=0x471dc; continue; } 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: r6 = r6 - r16; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x465b4; run_46400(); return; case 0x47214: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47228; pc=0x63400; run_63400(); return; case 0x47228: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; case 0x47238: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r16 = r16 + r3; r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r4 = r3 < r5 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47264; continue; } r4 = r17 & 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x47298; continue; } case 0x47264: r4 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; r5 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + r5; r4 = r4 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x479f8; run_47800(); return; } r8 = r8 + 8; case 0x47298: r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x472b8; continue; } r20 = r18 + r0; case 0x472b8: if(r20 <= 0) { /* Next insn is delay slot */ pc=0x472ec; continue; } r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + r20; r4 = r4 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x47a6c; run_47a00(); return; } r8 = r8 + 8; case 0x472ec: if(r20 < 0) { /* Next insn is delay slot */ pc=0x47a60; run_47a00(); return; } case 0x472f4: r16 = r3 - r20; if(r16 <= 0) { /* Next insn is delay slot */ pc=0x46354; run_46200(); return; } r3 = r16 < 17 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x471b0; run_47000(); return; } r5 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r5 + 1024; r18 = r0 + 16; /* Next insn is delay slot */ pc=0x47338; continue; case 0x47324: r8 = r8 + 8; case 0x47328: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x471bc; run_47000(); return; } case 0x47338: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47324; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47370; pc=0x63400; run_63400(); return; case 0x47370: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x47328; continue; case 0x4738c: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x473a0; pc=0x63400; run_63400(); return; case 0x473a0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46ab4; run_46a00(); return; case 0x473bc: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x473d0; pc=0x63400; run_63400(); return; case 0x473d0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46ae4; run_46a00(); return; case 0x473ec: r5 = 7 << 16; r23 = r5 + 1024; case 0x473f4: writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; r2 = r2 + r16; case 0x47400: pc=0x47400; 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: /* Next insn is delay slot */ pc=0x46b20; run_46a00(); return; case 0x47408: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x4741c; pc=0x63400; run_63400(); return; case 0x4741c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46248; run_46200(); return; case 0x47434: 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; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x47450: f12 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; f13 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x47464; pc=0x37a00; run_37a00(); return; case 0x47464: r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47888; run_47800(); return; } r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; if(r30 == r2) { /* Next insn is delay slot */ pc=0x47df4; run_47c00(); return; } r2 = r0 + 71; if(r20 == r2) { /* Next insn is delay slot */ pc=0x47d14; run_47c00(); return; } case 0x47490: r2 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; r23 = r17 | 256; if(r2 < 0) { /* Next insn is delay slot */ pc=0x47d68; run_47c00(); return; } f0 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r0; f1 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; writePages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff] = f0; writePages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff] = f1; case 0x474b8: r2 = r0 + 102; if(r18 == r2) { /* Next insn is delay slot */ pc=0x47b68; run_47a00(); return; } r2 = r0 + 70; if(r18 == r2) { /* Next insn is delay slot */ pc=0x47b68; run_47a00(); return; } r2 = r0 + 69; if(r20 == r2) { /* Next insn is delay slot */ pc=0x47d5c; run_47c00(); return; } r5 = r30 + r0; case 0x474e0: r2 = r0 + 2; 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] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r4 = r21 + r0; writePages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff] = r5; writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x47520; pc=0x57400; run_57400(); return; case 0x47520: r16 = r2 + r0; r2 = r0 + 103; r5 = readPages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff]; r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; if(r18 == r2) { /* Next insn is delay slot */ pc=0x47544; continue; } r2 = r0 + 71; if(r18 != r2) { /* Next insn is delay slot */ pc=0x47550; continue; } case 0x47544: r2 = r17 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47e00; run_47e00(); return; } case 0x47550: r2 = r0 + 70; r4 = r16 + r5; if(r20 == r2) { /* Next insn is delay slot */ pc=0x47bd8; run_47a00(); return; } case 0x47560: f0 = r0; f2 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x47bcc; run_47a00(); return; } r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x475bc; continue; } r5 = r0 + 48; case 0x4759c: 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]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x4759c; continue; } case 0x475bc: r2 = r2 - r16; writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r2; r2 = r0 + 71; if(r20 == r2) { /* Next insn is delay slot */ pc=0x47b18; run_47a00(); return; } r2 = r18 < 102 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x47fa0; run_47e00(); return; } r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r2 = r0 + 102; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r3; if(r18 == r2) { /* Next insn is delay slot */ pc=0x47e0c; run_47e00(); return; } case 0x475f0: r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r4 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r2 = r4 < r3 ? 1 : 0; case 0x47600: pc=0x47600; 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: if(r2 != r0) { /* Next insn is delay slot */ pc=0x47d90; run_47c00(); return; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x47dc8; run_47c00(); return; } r2 = r4 + r0; if(r4 < 0) { /* Next insn is delay slot */ pc=0x47fbc; run_47e00(); return; } case 0x47620: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r18 = r0 + 103; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; case 0x4762c: r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; if(r5 != r0) { /* Next insn is delay slot */ pc=0x47af8; run_47a00(); return; } addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; r17 = r23 + r0; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x46094; run_46000(); return; case 0x47654: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x46820; run_46800(); return; case 0x47668: r2 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r3 = r2 + 7; /* Next insn is delay slot */ pc=0x4672c; run_46600(); return; case 0x4767c: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; r4 = r0 + r0; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x4769c: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x4667c; run_46600(); return; case 0x476b0: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; r4 = r0 + 1; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x4656c; run_46400(); return; case 0x476d0: r4 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r4 + 1024; case 0x476dc: r3 = r3 + 1; r2 = r2 + r20; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47214; run_47200(); return; } r8 = r8 + 8; /* Next insn is delay slot */ pc=0x47238; run_47200(); return; case 0x4770c: r4 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r4 + 1024; /* Next insn is delay slot */ pc=0x462f0; run_46200(); return; case 0x47720: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47734; pc=0x63400; run_63400(); return; case 0x47734: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46ccc; run_46c00(); return; case 0x4774c: r4 = 7 << 16; r4 = r4 + 276; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; r4 = r0 + 1; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + 1; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x478e8; run_47800(); return; } r8 = r8 + 8; r18 = r3 + r0; case 0x47788: if(r18 != r0) { /* Next insn is delay slot */ pc=0x477ac; continue; } r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x477ac; continue; } r3 = r17 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x46354; run_46200(); return; } case 0x477ac: r3 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; 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; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x47d28; run_47c00(); return; } r8 = r8 + 8; case 0x477e8: r18 = r0 - r18; if(r18 <= 0) { /* Next insn is delay slot */ pc=0x4796c; run_47800(); return; } r4 = r18 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47a28; run_47a00(); return; } case 0x47800: pc=0x47800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_47800() throws ExecutionException { /* 0x47800 - 0x47a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x47800: r5 = 7 << 16; r23 = r5 + 1024; r20 = r0 + 16; /* Next insn is delay slot */ pc=0x47828; continue; case 0x47814: r8 = r8 + 8; case 0x47818: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47a30; run_47a00(); return; } case 0x47828: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x47814; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47860; pc=0x63400; run_63400(); return; case 0x47860: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x47818; continue; case 0x4787c: writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; /* Next insn is delay slot */ pc=0x46070; run_46000(); return; case 0x47888: r2 = r18 < 72 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x47b58; run_47a00(); return; } r16 = 7 << 16; r16 = r16 + 220; case 0x4789c: 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 */ r3 = tmp; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x46094; run_46000(); return; case 0x478c8: r16 = 7 << 16; r16 = r16 + 216; /* Next insn is delay slot */ pc=0x467b0; run_46600(); return; case 0x478d8: r30 = r0 + -1; r3 = r4 + r0; /* Next insn is delay slot */ pc=0x45de8; run_45c00(); return; case 0x478e8: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x478fc; pc=0x63400; run_63400(); return; case 0x478fc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r18 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x47788; run_47600(); return; case 0x47918: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x4792c; pc=0x63400; run_63400(); return; case 0x4792c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x46d2c; run_46c00(); return; case 0x47944: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47958; pc=0x63400; run_63400(); return; case 0x47958: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; case 0x4796c: r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; r2 = r4 + r2; /* Next insn is delay slot */ pc=0x46b50; run_46a00(); return; case 0x47984: writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x47990; pc=0x10268; run_10200(); return; case 0x47990: writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x46080; run_46000(); return; } case 0x479a0: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x46080; run_46000(); return; case 0x479ac: r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x46188; run_46000(); return; case 0x479c0: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x47044; run_47000(); return; case 0x479cc: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x479e0; pc=0x63400; run_63400(); return; case 0x479e0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x4703c; run_47000(); return; case 0x479f8: r4 = r21 + r0; r5 = r22 + r0; case 0x47a00: pc=0x47a00; 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: r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47a0c; pc=0x63400; run_63400(); return; case 0x47a0c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x47298; run_47200(); return; case 0x47a28: r4 = 7 << 16; r23 = r4 + 1024; case 0x47a30: r3 = r3 + 1; r2 = r2 + r18; r4 = r3 < 8 ? 1 : 0; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; if(r4 == r0) { /* Next insn is delay slot */ pc=0x47944; run_47800(); return; } r8 = r8 + 8; /* Next insn is delay slot */ pc=0x4796c; run_47800(); return; case 0x47a60: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x472f4; run_47200(); return; case 0x47a6c: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47a80; pc=0x63400; run_63400(); return; case 0x47a80: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = r5 - r3; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x472ec; run_47200(); return; case 0x47aa4: r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r2 = r30 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x47ab8; continue; } r2 = r0 + 6; case 0x47ab8: writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x47ef0; run_47e00(); return; } case 0x47ac4: r16 = 7 << 16; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; r3 = r0 + r0; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; r16 = r16 + 268; /* Next insn is delay slot */ pc=0x460ac; run_46000(); return; case 0x47ae8: r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x46408; run_46400(); return; case 0x47af8: 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; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x4609c; run_46000(); return; case 0x47b18: r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r3 = r2 < -3 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x47c58; run_47c00(); return; } r3 = r30 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x47c58; run_47c00(); return; } writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x475f0; run_47400(); return; case 0x47b44: 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=0x4679c; run_46600(); return; case 0x47b58: r16 = 7 << 16; r16 = r16 + 224; /* Next insn is delay slot */ pc=0x4789c; run_47800(); return; case 0x47b68: 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=0x47ba4; pc=0x57400; run_57400(); return; case 0x47ba4: r16 = r2 + r0; r5 = r30 + r0; r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x47550; run_47400(); return; case 0x47bb8: r5 = 7 << 16; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r23 = r5 + 1024; /* Next insn is delay slot */ pc=0x46e80; run_46e00(); return; case 0x47bcc: r2 = r4 + r0; /* Next insn is delay slot */ pc=0x475bc; run_47400(); return; case 0x47bd8: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 48; if(r3 == r2) { /* Next insn is delay slot */ pc=0x47bfc; continue; } case 0x47be8: r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r4 = r4 + r2; /* Next insn is delay slot */ pc=0x47560; run_47400(); return; case 0x47bfc: f0 = r0; case 0x47c00: pc=0x47c00; 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: f2 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; f1 = r0; f3 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x47be8; run_47a00(); return; } r2 = r0 + 1; r2 = r2 - r5; writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r2; r4 = r4 + r2; /* Next insn is delay slot */ pc=0x47560; run_47400(); return; case 0x47c38: writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r30; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; addr=r29+1206; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; r30 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x46094; run_46000(); return; case 0x47c58: r18 = r18 + -2; case 0x47c5c: r2 = r2 + -1; writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r2; addr=r29+1188; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x47f3c; run_47e00(); return; } r3 = r0 + 43; addr=r29+1189; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x47c78: r3 = r2 < 10 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x47e38; run_47e00(); 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; r2 = r29 + 1192; r4 = r29 + 1188; case 0x47c9c: r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r4 = r2 - r4; r3 = r3 + r4; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; r2 = r3 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x47ce8; continue; } case 0x47cc0: r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; r2 = r3 + r0; if(r3 < 0) { /* Next insn is delay slot */ pc=0x47d04; continue; } case 0x47cdc: writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47ce8: r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x47cc0; continue; } r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x47cdc; continue; } case 0x47d04: r2 = r0 + r0; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47d14: if(r30 != r0) { /* Next insn is delay slot */ pc=0x47490; run_47400(); return; } r30 = r0 + 1; /* Next insn is delay slot */ pc=0x47490; run_47400(); return; case 0x47d28: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; /* Next insn is delay slot */ r31=0x47d3c; pc=0x63400; run_63400(); return; case 0x47d3c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x45fcc; run_45e00(); return; } r18 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r8 = r29 + 40; /* Next insn is delay slot */ pc=0x477e8; run_47600(); return; case 0x47d5c: r5 = r30 + 1; /* Next insn is delay slot */ pc=0x474e0; run_47400(); return; case 0x47d68: r3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; r2 = 32768 << 16; r4 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; r2 = r3 ^ r2; r5 = r0 + 45; writePages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff] = r2; writePages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff] = r4; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x474b8; run_47400(); return; case 0x47d90: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x47f2c; run_47e00(); return; } r2 = r0 + 1; case 0x47da4: r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r2 = r2 + r3; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; if(r2 < 0) { /* Next insn is delay slot */ pc=0x47de4; continue; } case 0x47dbc: r18 = r0 + 103; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47dc8: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; r2 = r3 + r0; if(r3 >= 0) { /* Next insn is delay slot */ pc=0x47dbc; continue; } case 0x47de4: r2 = r0 + r0; r18 = r0 + 103; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47df4: r30 = r0 + 6; /* Next insn is delay slot */ pc=0x47490; run_47400(); return; case 0x47e00: pc=0x47e00; 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: r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x475bc; run_47400(); return; case 0x47e0c: if(r3 <= 0) { /* Next insn is delay slot */ pc=0x47f50; continue; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x47ecc; continue; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x47ecc; continue; } r2 = r3 + r0; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47e38: r6 = r29 + 1187; r3 = r6 + r0; r4 = r0 + 10; case 0x47e44: if(r4 != r0) { /* Next insn is delay slot */ hi = r2%r4; lo = r2/r4; pc=0x47e50; continue; } hi = r2%r4; lo = r2/r4; throw new ExecutionException("Break"); case 0x47e50: 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; r2 = lo; r5 = r2 < 10 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x47e44; 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=0x47fac; continue; } r2 = r29 + 1190; /* Next insn is delay slot */ pc=0x47ea0; continue; case 0x47e9c: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; case 0x47ea0: r2 = r2 + 1; r4 = r4 + 1; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 != r6) { /* Next insn is delay slot */ pc=0x47e9c; continue; } r4 = r29 + 1188; r2 = r4 - r3; r3 = r29 + 1190; r2 = r3 + r2; /* Next insn is delay slot */ pc=0x47c9c; run_47c00(); return; case 0x47ecc: r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r2 = r30 + 1; r2 = r3 + r2; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; } case 0x47ee4: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47ef0: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x47ac4; run_47a00(); return; case 0x47efc: r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; r30 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r2 = r3 + 4; r3 = r4 + r0; if(r30 >= 0) { /* Next insn is delay slot */ pc=0x46a00; run_46a00(); return; } writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; r30 = r0 + -1; r16 = r3 + r0; /* Next insn is delay slot */ pc=0x45de0; run_45c00(); return; case 0x47f2c: r2 = r0 + 2; r2 = r2 - r3; /* Next insn is delay slot */ pc=0x47da4; run_47c00(); return; case 0x47f3c: r3 = r0 + 45; r2 = r0 - r2; addr=r29+1189; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x47c78; run_47c00(); return; case 0x47f50: if(r30 != r0) { /* Next insn is delay slot */ pc=0x47f84; continue; } r17 = r17 & 1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x47f84; continue; } r3 = r0 + 1; r2 = r0 + 1; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; case 0x47f78: r16 = r0 + -1; /* Next insn is delay slot */ pc=0x45f18; run_45e00(); return; case 0x47f84: r30 = r30 + 2; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; r2 = r30 + r0; if(r30 >= 0) { /* Next insn is delay slot */ pc=0x4762c; run_47600(); return; } /* Next insn is delay slot */ pc=0x47ee4; continue; case 0x47fa0: r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x47c5c; run_47c00(); return; case 0x47fac: r2 = r29 + 1190; r4 = r29 + 1188; /* Next insn is delay slot */ pc=0x47c9c; run_47c00(); return; case 0x47fbc: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x47620; run_47600(); return; case 0x48000: pc=0x48000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48000() throws ExecutionException { /* 0x48000 - 0x48200 */ int addr, tmp; for(;;) { switch(pc) { case 0x48000: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x45c00; run_45c00(); return; case 0x48200: pc=0x48200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48200() throws ExecutionException { /* 0x48200 - 0x48400 */ int addr, tmp; for(;;) { switch(pc) { case 0x48200: 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; r17 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x48238; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x483e4; continue; } case 0x48238: r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 65535; r4 = r3 & 8; if(r4 == r0) { /* Next insn is delay slot */ pc=0x483b8; continue; } r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x483b8; continue; } case 0x4826c: r3 = r3 & 8192; r18 = r18 & 255; if(r3 == r0) { /* Next insn is delay slot */ pc=0x482f4; continue; } r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x48324; continue; } case 0x48294: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r4 = r4 + 1; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; r2 = r3 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; if(r2 == r4) { /* Next insn is delay slot */ pc=0x48368; continue; } case 0x482c0: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x4838c; continue; } case 0x482d4: r2 = r18 + r0; case 0x482d8: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x482f4: r3 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; r2 = r2 | 8192; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; 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]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x48294; continue; } case 0x48324: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x48334; pc=0x39800; run_39800(); return; case 0x48334: if(r2 != r0) { /* Next insn is delay slot */ pc=0x48380; continue; } r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; 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]; r4 = r0 + 1; if(r2 != r4) { /* Next insn is delay slot */ pc=0x482c0; continue; } case 0x48368: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x48378; pc=0x39800; run_39800(); return; case 0x48378: if(r2 == r0) { /* Next insn is delay slot */ pc=0x482d4; continue; } case 0x48380: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x482d8; continue; case 0x4838c: r2 = r0 + 10; if(r18 != r2) { /* Next insn is delay slot */ pc=0x482d4; continue; } r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x483a8; pc=0x39800; run_39800(); return; case 0x483a8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x482d4; continue; } /* Next insn is delay slot */ pc=0x48380; continue; case 0x483b8: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x483c8; pc=0x48600; run_48600(); return; case 0x483c8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x48380; 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 */ r2 = tmp; r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r3 = r2 & 65535; /* Next insn is delay slot */ pc=0x4826c; continue; case 0x483e4: /* Next insn is delay slot */ r31=0x483ec; pc=0x3a600; run_3a600(); return; case 0x483ec: /* Next insn is delay slot */ pc=0x48238; continue; case 0x48400: pc=0x48400; 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: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48200; run_48200(); return; case 0x48600: pc=0x48600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48600() throws ExecutionException { /* 0x48600 - 0x48800 */ int addr, tmp; for(;;) { switch(pc) { case 0x48600: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x48634; continue; } r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x48744; continue; } case 0x48634: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r6 = tmp; r2 = r6 & 65535; r3 = r2 & 8; if(r3 == r0) { /* Next insn is delay slot */ pc=0x486a4; continue; } r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x486d4; continue; } case 0x4865c: r4 = r2 & 1; if(r4 != r0) { /* Next insn is delay slot */ pc=0x48704; continue; } r2 = r2 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x48754; continue; } r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; case 0x48680: if(r3 == r0) { /* Next insn is delay slot */ pc=0x4871c; continue; } case 0x48688: r2 = r0 + r0; case 0x4868c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x486a4: r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x487b0; continue; } r2 = r2 & 4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x48764; continue; } r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; case 0x486c0: 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; r2 = r2 & 65535; if(r3 != r0) { /* Next insn is delay slot */ pc=0x4865c; continue; } case 0x486d4: r5 = r2 & 640; r4 = r0 + 512; if(r5 == r4) { /* Next insn is delay slot */ pc=0x4865c; continue; } r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x486f4; pc=0x3e600; run_3e600(); return; case 0x486f4: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x4865c; continue; case 0x48704: r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; r2 = r0 - r2; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x48688; continue; } case 0x4871c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r0 + r0; r4 = r3 & 128; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4868c; 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; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x4868c; continue; case 0x48744: /* Next insn is delay slot */ r31=0x4874c; pc=0x3a600; run_3a600(); return; case 0x4874c: /* Next insn is delay slot */ pc=0x48634; continue; case 0x48754: r2 = r0 + r0; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x48680; continue; case 0x48764: r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x48794; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x48790; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x4878c; pc=0x3ca00; run_3ca00(); return; case 0x4878c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r6 = tmp; case 0x48790: writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; case 0x48794: r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r2 = r0 + -37; r6 = r6 & r2; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x486c0; continue; case 0x487b0: 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; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x4868c; continue; case 0x48800: pc=0x48800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48800() throws ExecutionException { /* 0x48800 - 0x48a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x48800: r2 = r0 + 1; pc = 0x48804; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48808; return; } case 0x48808: /* Next insn is delay slot */ pc=r31; return; case 0x48810: r2 = r0 + 2; pc = 0x48814; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48818; return; } case 0x48818: /* Next insn is delay slot */ pc=r31; return; case 0x48820: r2 = r0 + 3; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48834; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48838; return; } case 0x48838: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48850; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48850: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48860: r2 = r0 + 4; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48874; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48878; return; } case 0x48878: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48890; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48890: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x488a0: r2 = r0 + 5; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x488b4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x488b8; return; } case 0x488b8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x488d0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x488d0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x488e0: r2 = r0 + 6; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x488f4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x488f8; return; } case 0x488f8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48910; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48910: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48920: r2 = r0 + 7; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48934; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48938; return; } case 0x48938: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48950; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48950: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48960: r2 = r0 + 8; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48974; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48978; return; } case 0x48978: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48990; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48990: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x489a0: r2 = r0 + 10; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x489b4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x489b8; return; } case 0x489b8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x489d0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x489d0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x489e0: r2 = r0 + 11; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x489f4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x489f8; return; } case 0x489f8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; case 0x48a00: pc=0x48a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48a00() throws ExecutionException { /* 0x48a00 - 0x48c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x48a00: if(r11 != r0) { /* Next insn is delay slot */ pc=0x48a10; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48a10: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48a20: r2 = r0 + 12; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48a34; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48a38; return; } case 0x48a38: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48a50; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48a50: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48a60: r2 = r0 + 13; pc = 0x48a64; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48a68; return; } case 0x48a68: /* Next insn is delay slot */ pc=r31; return; case 0x48a70: r2 = r0 + 14; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48a84; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48a88; return; } case 0x48a88: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48aa0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48aa0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48ab0: r2 = r0 + 15; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ac4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ac8; return; } case 0x48ac8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48ae0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48ae0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48af0: r2 = r0 + 16; pc = 0x48af4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48af8; return; } case 0x48af8: /* Next insn is delay slot */ pc=r31; return; case 0x48b00: r2 = r0 + 17; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48b14; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48b18; return; } case 0x48b18: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48b30; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48b30: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48b40: r2 = r0 + 18; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48b54; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48b58; return; } case 0x48b58: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48b70; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48b70: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48b80: r2 = r0 + 19; pc = 0x48b84; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48b88; return; } case 0x48b88: /* Next insn is delay slot */ pc=r31; return; case 0x48b90: r2 = r0 + 20; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ba4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ba8; return; } case 0x48ba8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48bc0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48bc0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48bd0: r2 = r0 + 21; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48be4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48be8; return; } case 0x48be8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48c00; run_48c00(); return; } /* Next insn is delay slot */ pc=r31; return; case 0x48c00: pc=0x48c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48c00() throws ExecutionException { /* 0x48c00 - 0x48e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x48c00: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48c10: r2 = r0 + 22; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48c24; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48c28; return; } case 0x48c28: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48c40; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48c40: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48c50: r2 = r0 + 23; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48c64; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48c68; return; } case 0x48c68: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48c80; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48c80: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48c90: r2 = r0 + 24; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ca4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ca8; return; } case 0x48ca8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48cc0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48cc0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48cd0: r2 = r0 + 25; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ce4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ce8; return; } case 0x48ce8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48d00; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48d00: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48d10: r2 = r0 + 26; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48d24; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48d28; return; } case 0x48d28: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48d40; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48d40: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48d50: r2 = r0 + 27; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48d64; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48d68; return; } case 0x48d68: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48d80; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48d80: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48d90: r2 = r0 + 28; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48da4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48da8; return; } case 0x48da8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48dc0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48dc0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48dd0: r2 = r0 + 29; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48de4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48de8; return; } case 0x48de8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48e00; run_48e00(); return; } /* Next insn is delay slot */ pc=r31; return; case 0x48e00: pc=0x48e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_48e00() throws ExecutionException { /* 0x48e00 - 0x49000 */ int addr, tmp; for(;;) { switch(pc) { case 0x48e00: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48e10: r2 = r0 + 30; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48e24; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48e28; return; } case 0x48e28: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48e40; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48e40: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48e50: r2 = r0 + 31; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48e64; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48e68; return; } case 0x48e68: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48e80; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48e80: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48e90: r2 = r0 + 32; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ea4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ea8; return; } case 0x48ea8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48ec0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48ec0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48ed0: r2 = r0 + 33; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48ee4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ee8; return; } case 0x48ee8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48f00; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48f00: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48f10: r2 = r0 + 34; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48f24; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48f28; return; } case 0x48f28: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48f40; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48f40: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48f50: r2 = r0 + 35; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x48f64; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48f68; return; } case 0x48f68: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48f80; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48f80: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48f90: r2 = r0 + 36; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x48fb0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48fb4; return; } case 0x48fb4: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x48fcc; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x48fcc: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x48fdc: r2 = r0 + 37; pc = 0x48fe0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48fe4; return; } case 0x48fe4: /* Next insn is delay slot */ pc=r31; return; case 0x48fec: r2 = r0 + 38; pc = 0x48ff0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x48ff4; return; } case 0x48ff4: /* Next insn is delay slot */ pc=r31; return; case 0x48ffc: r2 = r0 + 39; case 0x49000: pc=0x49000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49000() throws ExecutionException { /* 0x49000 - 0x49200 */ int addr, tmp; for(;;) { switch(pc) { case 0x49000: r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49010; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49014; return; } case 0x49014: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4902c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4902c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4903c: r2 = r0 + 40; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49050; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49054; return; } case 0x49054: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4906c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4906c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4907c: r2 = r0 + 41; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49090; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49094; return; } case 0x49094: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x490ac; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x490ac: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x490bc: r2 = r0 + 42; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x490d0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x490d4; return; } case 0x490d4: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x490ec; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x490ec: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x490fc: r2 = r0 + 43; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49110; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49114; return; } case 0x49114: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4912c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4912c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4913c: r2 = r0 + 44; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49150; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49154; return; } case 0x49154: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4916c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4916c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4917c: r2 = r0 + 45; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49190; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49194; return; } case 0x49194: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x491ac; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x491ac: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x491bc: r2 = r0 + 46; pc = 0x491c0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x491c4; return; } case 0x491c4: /* Next insn is delay slot */ pc=r31; return; case 0x491cc: r2 = r0 + 47; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x491e0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x491e4; return; } case 0x491e4: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x491fc; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x491fc: r4 = r10 + r0; case 0x49200: pc=0x49200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49200() throws ExecutionException { /* 0x49200 - 0x49400 */ int addr, tmp; for(;;) { switch(pc) { case 0x49200: r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4920c: r2 = r0 + 51; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49220; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49224; return; } case 0x49224: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4923c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4923c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4924c: r2 = r0 + 52; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49260; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49264; return; } case 0x49264: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x4927c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x4927c: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x4928c: r2 = r0 + 53; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x492ac; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x492b0; return; } case 0x492b0: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x492c8; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x492c8: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x492d8: r2 = r0 + 55; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x492ec; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x492f0; return; } case 0x492f0: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49308; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49308: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49318: r2 = r0 + 54; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x4932c; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49330; return; } case 0x49330: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49348; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49348: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49358: r2 = r0 + 56; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x4936c; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49370; return; } case 0x49370: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49388; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49388: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49398: r2 = r0 + 57; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x493ac; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x493b0; return; } case 0x493b0: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x493c8; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x493c8: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x493d8: r2 = r0 + 58; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x493ec; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x493f0; return; } case 0x493f0: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49408; run_49400(); return; } case 0x49400: pc=0x49400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49400() throws ExecutionException { /* 0x49400 - 0x49600 */ int addr, tmp; for(;;) { switch(pc) { case 0x49400: /* Next insn is delay slot */ pc=r31; return; case 0x49408: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49418: r2 = r0 + 59; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x4942c; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49430; return; } case 0x49430: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49448; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49448: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49458: r2 = r0 + 60; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x49478; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4947c; return; } case 0x4947c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49494; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49494: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x494a4: r2 = r0 + 61; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x494c4; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x494c8; return; } case 0x494c8: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x494e0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x494e0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x494f0: r2 = r0 + 62; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49504; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49508; return; } case 0x49508: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49520; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49520: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49530: r2 = r0 + 63; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49544; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49548; return; } case 0x49548: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49560; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49560: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49570: r2 = r0 + 64; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49584; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49588; return; } case 0x49588: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x495a0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x495a0: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x495b0: r2 = r0 + 65; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x495d0; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x495d4; return; } case 0x495d4: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x495ec; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x495ec: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x495fc: r2 = r0 + 66; case 0x49600: pc=0x49600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49600() throws ExecutionException { /* 0x49600 - 0x49800 */ int addr, tmp; for(;;) { switch(pc) { case 0x49600: r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x4961c; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49620; return; } case 0x49620: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49638; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49638: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49648: r2 = r0 + 67; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; pc = 0x49668; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4966c; return; } case 0x4966c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49684; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49684: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49694: r2 = r0 + 73; pc = 0x49698; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4969c; return; } case 0x4969c: /* Next insn is delay slot */ pc=r31; return; case 0x496a4: r2 = r0 + 68; pc = 0x496a8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x496ac; return; } case 0x496ac: /* Next insn is delay slot */ pc=r31; return; case 0x496b4: r2 = r0 + 70; pc = 0x496b8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x496bc; return; } case 0x496bc: /* Next insn is delay slot */ pc=r31; return; case 0x496c4: r2 = r0 + 69; pc = 0x496c8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x496cc; return; } case 0x496cc: /* Next insn is delay slot */ pc=r31; return; case 0x496d4: r2 = r0 + 71; pc = 0x496d8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x496dc; return; } case 0x496dc: /* Next insn is delay slot */ pc=r31; return; case 0x496e4: r2 = r0 + 82; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x496f8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x496fc; return; } case 0x496fc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49714; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49714: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49724: r2 = r0 + 83; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49738; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4973c; return; } case 0x4973c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49754; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49754: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49764: r2 = r0 + 84; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49778; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4977c; return; } case 0x4977c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49794; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49794: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x497a4: r2 = r0 + 85; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x497b8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x497bc; return; } case 0x497bc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x497d4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x497d4: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x497e4: r2 = r0 + 80; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x497f8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x497fc; return; } case 0x497fc: r11 = r2 + 255; case 0x49800: pc=0x49800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49800() throws ExecutionException { /* 0x49800 - 0x49a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x49800: r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49814; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49814: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49824: r2 = r0 + 86; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49838; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4983c; return; } case 0x4983c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49854; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49854: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49864: r2 = r0 + 81; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49878; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4987c; return; } case 0x4987c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49894; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49894: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x498a4: r2 = r0 + 87; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x498b8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x498bc; return; } case 0x498bc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x498d4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x498d4: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x498e4: r2 = r0 + 88; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x498f8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x498fc; return; } case 0x498fc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49914; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49914: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49924: r2 = r0 + 78; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49938; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4993c; return; } case 0x4993c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49954; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49954: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49964: r2 = r0 + 76; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49978; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x4997c; return; } case 0x4997c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49994; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49994: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x499a4: r2 = r0 + 77; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x499b8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x499bc; return; } case 0x499bc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x499d4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x499d4: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x499e4: r2 = r0 + 74; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x499f8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x499fc; return; } case 0x499fc: r11 = r2 + 255; case 0x49a00: pc=0x49a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49a00() throws ExecutionException { /* 0x49a00 - 0x49c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x49a00: r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49a14; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49a14: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49a24: r2 = r0 + 75; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49a38; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49a3c; return; } case 0x49a3c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49a54; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49a54: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49a64: r2 = r0 + 79; pc = 0x49a68; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49a6c; return; } case 0x49a6c: /* Next insn is delay slot */ pc=r31; return; case 0x49a74: r2 = r0 + 72; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49a88; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49a8c; return; } case 0x49a8c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49aa4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49aa4: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49ab4: r2 = r0 + 90; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49ac8; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49acc; return; } case 0x49acc: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49ae4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49ae4: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49af4: r2 = r0 + 89; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49b08; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49b0c; return; } case 0x49b0c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49b24; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49b24: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49b34: r2 = r0 + 91; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; pc = 0x49b48; r2 = syscall(r2,r4,r5,r6,r7,r8,r9); if (state != RUNNING) { pc = 0x49b4c; return; } case 0x49b4c: r11 = r2 + 255; r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r11 != r0) { /* Next insn is delay slot */ pc=0x49b64; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x49b64: r4 = r10 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49c00; run_49c00(); return; case 0x49c00: pc=0x49c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49c00() throws ExecutionException { /* 0x49c00 - 0x49e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x49c00: r5 = r0 - r5; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; r2 = r0 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x49e00: pc=0x49e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_49e00() throws ExecutionException { /* 0x49e00 - 0x4a000 */ int addr, tmp; for(;;) { switch(pc) { case 0x49e00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48b40; run_48a00(); return; case 0x4a000: pc=0x4a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4a000() throws ExecutionException { /* 0x4a000 - 0x4a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4a000: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49924; run_49800(); return; case 0x4a200: pc=0x4a200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4a200() throws ExecutionException { /* 0x4a200 - 0x4a400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4a200: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48e10; run_48e00(); return; case 0x4a400: pc=0x4a400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4a400() throws ExecutionException { /* 0x4a400 - 0x4a600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4a400: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48e50; run_48e00(); return; case 0x4a600: pc=0x4a600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4a600() throws ExecutionException { /* 0x4a600 - 0x4a800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4a600: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48c10; run_48c00(); return; case 0x4a800: pc=0x4a800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4a800() throws ExecutionException { /* 0x4a800 - 0x4aa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4a800: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48bd0; run_48a00(); return; case 0x4aa00: pc=0x4aa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4aa00() throws ExecutionException { /* 0x4aa00 - 0x4ac00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4aa00: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48c50; run_48c00(); return; case 0x4ac00: pc=0x4ac00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ac00() throws ExecutionException { /* 0x4ac00 - 0x4ae00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ac00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48c90; run_48c00(); return; case 0x4ae00: pc=0x4ae00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ae00() throws ExecutionException { /* 0x4ae00 - 0x4b000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ae00: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x48d10; run_48c00(); return; case 0x4b000: pc=0x4b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4b000() throws ExecutionException { /* 0x4b000 - 0x4b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4b000: r29 = r29 + -40; r2 = r4 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x4b070; continue; } r6 = r5 + r0; r4 = r18 + r0; r5 = r2 + r0; /* Next insn is delay slot */ r31=0x4b040; pc=0x48d50; run_48c00(); return; case 0x4b040: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x4b0c4; continue; } case 0x4b04c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4b070: r16 = r0 + 256; r19 = r0 + -1; r20 = r0 + 34; case 0x4b07c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x4b088; pc=0x3e800; run_3e800(); return; case 0x4b088: r5 = r2 + r0; r4 = r18 + r0; r6 = r16 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x4b0a0; pc=0x48d50; run_48c00(); return; case 0x4b0a0: if(r2 != r19) { /* Next insn is delay slot */ pc=0x4b04c; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x4b0b4; pc=0x3ea00; run_3ea00(); return; case 0x4b0b4: r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; r16 = r16 << 1; if(r2 == r20) { /* Next insn is delay slot */ pc=0x4b07c; continue; } case 0x4b0c4: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4b200: pc=0x4b200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4b200() throws ExecutionException { /* 0x4b200 - 0x4b400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4b200: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48d50; run_48c00(); return; case 0x4b400: pc=0x4b400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4b400() throws ExecutionException { /* 0x4b400 - 0x4b600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4b400: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48f10; run_48e00(); return; case 0x4b600: pc=0x4b600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4b600() throws ExecutionException { /* 0x4b600 - 0x4b800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4b600: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x48e90; run_48e00(); return; case 0x4b800: pc=0x4b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4b800() throws ExecutionException { /* 0x4b800 - 0x4ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4b800: r3 = r4 + r0; r2 = r5 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 & 65535; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49964; run_49800(); return; case 0x4ba00: pc=0x4ba00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ba00() throws ExecutionException { /* 0x4ba00 - 0x4bc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ba00: r3 = r4 + r0; r2 = r5 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 & 65535; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x499a4; run_49800(); return; case 0x4bc00: pc=0x4bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4bc00() throws ExecutionException { /* 0x4bc00 - 0x4be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4bc00: r3 = r4 + r0; r2 = r5 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 & 65535; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x490fc; run_49000(); return; case 0x4be00: pc=0x4be00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4be00() throws ExecutionException { /* 0x4be00 - 0x4c000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4be00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x499e4; run_49800(); return; case 0x4c000: pc=0x4c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4c000() throws ExecutionException { /* 0x4c000 - 0x4c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4c000: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49a24; run_49a00(); return; case 0x4c200: pc=0x4c200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4c200() throws ExecutionException { /* 0x4c200 - 0x4c400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4c200: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48ed0; run_48e00(); return; case 0x4c400: pc=0x4c400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4c400() throws ExecutionException { /* 0x4c400 - 0x4c600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4c400: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4c430; pc=0x48f90; run_48e00(); return; case 0x4c430: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x4c600: pc=0x4c600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4c600() throws ExecutionException { /* 0x4c600 - 0x4c800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4c600: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48ffc; run_48e00(); return; case 0x4c800: pc=0x4c800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4c800() throws ExecutionException { /* 0x4c800 - 0x4ca00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4c800: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r5 = r5 + 1056; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4c828; pc=0x3bc00; run_3bc00(); return; case 0x4c828: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x4ca00: pc=0x4ca00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ca00() throws ExecutionException { /* 0x4ca00 - 0x4cc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ca00: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x4903c; run_49000(); return; case 0x4cc00: pc=0x4cc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4cc00() throws ExecutionException { /* 0x4cc00 - 0x4ce00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4cc00: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x4907c; run_49000(); return; case 0x4ce00: pc=0x4ce00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ce00() throws ExecutionException { /* 0x4ce00 - 0x4d000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ce00: r3 = r4 + r0; r2 = r5 + r0; r7 = r6 << 16; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r7 >> 16; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x490bc; run_49000(); return; case 0x4d000: pc=0x4d000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4d000() throws ExecutionException { /* 0x4d000 - 0x4d200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4d000: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x4913c; run_49000(); return; case 0x4d200: pc=0x4d200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4d200() throws ExecutionException { /* 0x4d200 - 0x4d400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4d200: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x4917c; run_49000(); return; case 0x4d400: pc=0x4d400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4d400() throws ExecutionException { /* 0x4d400 - 0x4d600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4d400: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x491cc; run_49000(); return; case 0x4d600: pc=0x4d600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4d600() throws ExecutionException { /* 0x4d600 - 0x4d800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4d600: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x4920c; run_49200(); return; case 0x4d800: pc=0x4d800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4d800() throws ExecutionException { /* 0x4d800 - 0x4da00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4d800: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x4924c; run_49200(); return; case 0x4da00: pc=0x4da00; 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: r29 = r29 + -40; r8 = r4 + r0; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r5 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r6 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4da40; pc=0x4928c; run_49200(); return; case 0x4da40: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; 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: r2 = r4 + r0; r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r29 = r29 + -40; r3 = r0 + 8; r8 = r5 + r0; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r4 != r3) { /* Next insn is delay slot */ pc=0x4dc64; continue; } r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x4dca8; continue; } r3 = r0 + 2; if(r5 == r3) { /* Next insn is delay slot */ pc=0x4dcc8; continue; } case 0x4dc44: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4dc64: r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r9 = r6 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; r4 = r16 + r0; r5 = r2 + r0; r6 = r8 + r0; r7 = r9 + r0; /* Next insn is delay slot */ r31=0x4dc94; pc=0x4928c; run_49200(); return; case 0x4dc94: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4dca8: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4dcc8: r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x4dce0; pc=0x3bc00; run_3bc00(); return; case 0x4dce0: /* Next insn is delay slot */ pc=0x4dc44; continue; case 0x4de00: pc=0x4de00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4de00() throws ExecutionException { /* 0x4de00 - 0x4e000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4de00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x492d8; run_49200(); return; case 0x4e000: pc=0x4e000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4e000() throws ExecutionException { /* 0x4e000 - 0x4e200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4e000: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49318; run_49200(); return; case 0x4e200: pc=0x4e200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4e200() throws ExecutionException { /* 0x4e200 - 0x4e400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4e200: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49398; run_49200(); return; case 0x4e400: pc=0x4e400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4e400() throws ExecutionException { /* 0x4e400 - 0x4e600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4e400: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49358; run_49200(); return; case 0x4e600: pc=0x4e600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4e600() throws ExecutionException { /* 0x4e600 - 0x4e800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4e600: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x493d8; run_49200(); return; case 0x4e800: pc=0x4e800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4e800() throws ExecutionException { /* 0x4e800 - 0x4ea00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4e800: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49af4; run_49a00(); return; case 0x4ea00: pc=0x4ea00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ea00() throws ExecutionException { /* 0x4ea00 - 0x4ec00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ea00: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49418; run_49400(); return; case 0x4ec00: pc=0x4ec00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ec00() throws ExecutionException { /* 0x4ec00 - 0x4ee00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ec00: r29 = r29 + -32; r8 = r4 + r0; r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r5 + r0; r2 = r6 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4ec38; pc=0x494a4; run_49400(); return; case 0x4ec38: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x4ee00: pc=0x4ee00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4ee00() throws ExecutionException { /* 0x4ee00 - 0x4f000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4ee00: r29 = r29 + -32; r8 = r4 + r0; r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r5 + r0; r2 = r6 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4ee38; pc=0x49458; run_49400(); return; case 0x4ee38: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x4f000: pc=0x4f000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4f000() throws ExecutionException { /* 0x4f000 - 0x4f200 */ int addr, tmp; for(;;) { switch(pc) { case 0x4f000: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49530; run_49400(); return; case 0x4f200: pc=0x4f200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4f200() throws ExecutionException { /* 0x4f200 - 0x4f400 */ int addr, tmp; for(;;) { switch(pc) { case 0x4f200: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x494f0; run_49400(); return; case 0x4f400: pc=0x4f400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4f400() throws ExecutionException { /* 0x4f400 - 0x4f600 */ int addr, tmp; for(;;) { switch(pc) { case 0x4f400: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49570; run_49400(); return; case 0x4f600: pc=0x4f600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4f600() throws ExecutionException { /* 0x4f600 - 0x4f800 */ int addr, tmp; for(;;) { switch(pc) { case 0x4f600: r29 = r29 + -40; r8 = r4 + r0; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r5 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r6 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4f640; pc=0x495b0; run_49400(); return; case 0x4f640: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4f800: pc=0x4f800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4f800() throws ExecutionException { /* 0x4f800 - 0x4fa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4f800: r29 = r29 + -40; r8 = r4 + r0; r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r5 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r6 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4f840; pc=0x495fc; run_49400(); return; case 0x4f840: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x4fa00: pc=0x4fa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4fa00() throws ExecutionException { /* 0x4fa00 - 0x4fc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4fa00: r29 = r29 + -32; r8 = r4 + r0; r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r5 + r0; r2 = r6 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r5 = r8 + r0; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4fa38; pc=0x49648; run_49600(); return; case 0x4fa38: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x4fc00: pc=0x4fc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4fc00() throws ExecutionException { /* 0x4fc00 - 0x4fe00 */ int addr, tmp; for(;;) { switch(pc) { case 0x4fc00: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4fc30; pc=0x496e4; run_49600(); return; case 0x4fc30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x4fe00: pc=0x4fe00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_4fe00() throws ExecutionException { /* 0x4fe00 - 0x50000 */ int addr, tmp; for(;;) { switch(pc) { case 0x4fe00: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x4fe30; pc=0x49724; run_49600(); return; case 0x4fe30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x50000: pc=0x50000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50000() throws ExecutionException { /* 0x50000 - 0x50200 */ int addr, tmp; for(;;) { switch(pc) { case 0x50000: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x49a74; run_49a00(); return; case 0x50200: pc=0x50200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50200() throws ExecutionException { /* 0x50200 - 0x50400 */ int addr, tmp; for(;;) { switch(pc) { case 0x50200: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x49764; run_49600(); return; case 0x50400: pc=0x50400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50400() throws ExecutionException { /* 0x50400 - 0x50600 */ int addr, tmp; for(;;) { switch(pc) { case 0x50400: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x497a4; run_49600(); return; case 0x50600: pc=0x50600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50600() throws ExecutionException { /* 0x50600 - 0x50800 */ int addr, tmp; for(;;) { switch(pc) { case 0x50600: r5 = r4 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x497e4; run_49600(); return; case 0x50800: pc=0x50800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50800() throws ExecutionException { /* 0x50800 - 0x50a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x50800: r5 = r4 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x49824; run_49800(); return; case 0x50a00: pc=0x50a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50a00() throws ExecutionException { /* 0x50a00 - 0x50c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x50a00: r5 = r4 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x49864; run_49800(); return; case 0x50c00: pc=0x50c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50c00() throws ExecutionException { /* 0x50c00 - 0x50e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x50c00: r5 = r4 & 65535; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x498a4; run_49800(); return; case 0x50e00: pc=0x50e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_50e00() throws ExecutionException { /* 0x50e00 - 0x51000 */ int addr, tmp; for(;;) { switch(pc) { case 0x50e00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x498e4; run_49800(); return; case 0x51000: pc=0x51000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51000() throws ExecutionException { /* 0x51000 - 0x51200 */ int addr, tmp; for(;;) { switch(pc) { case 0x51000: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x49ab4; run_49a00(); return; case 0x51200: pc=0x51200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51200() throws ExecutionException { /* 0x51200 - 0x51400 */ int addr, tmp; for(;;) { switch(pc) { case 0x51200: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x49b34; run_49a00(); return; case 0x51400: pc=0x51400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51400() throws ExecutionException { /* 0x51400 - 0x51600 */ int addr, tmp; for(;;) { switch(pc) { case 0x51400: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x48d90; run_48c00(); return; case 0x51600: pc=0x51600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51600() throws ExecutionException { /* 0x51600 - 0x51800 */ int addr, tmp; for(;;) { switch(pc) { case 0x51600: r29 = r29 + -40; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; if(r5 == r0) { /* Next insn is delay slot */ pc=0x5165c; continue; } /* Next insn is delay slot */ r31=0x5162c; pc=0x48d50; run_48c00(); return; case 0x5162c: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x516b4; continue; } case 0x51638: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5165c: r18 = r4 + r0; r16 = r0 + 256; r19 = r0 + -1; r20 = r0 + 34; case 0x5166c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x51678; pc=0x3e800; run_3e800(); return; case 0x51678: r5 = r2 + r0; r4 = r18 + r0; r6 = r16 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x51690; pc=0x48d50; run_48c00(); return; case 0x51690: if(r2 != r19) { /* Next insn is delay slot */ pc=0x51638; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x516a4; pc=0x3ea00; run_3ea00(); return; case 0x516a4: r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; r16 = r16 << 1; if(r2 == r20) { /* Next insn is delay slot */ pc=0x5166c; continue; } case 0x516b4: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x51800: pc=0x51800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51800() throws ExecutionException { /* 0x51800 - 0x51a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x51800: r6 = r5 + r0; r7 = r0 + r0; r5 = r0 + -1; /* Next insn is delay slot */ pc=0x48d10; run_48c00(); return; case 0x51a00: pc=0x51a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51a00() throws ExecutionException { /* 0x51a00 - 0x51c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x51a00: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r29 = r29 + -24; r5 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r5 = r5 + 1056; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x51a28; pc=0x3bc00; run_3bc00(); return; case 0x51a28: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x51c00: pc=0x51c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51c00() throws ExecutionException { /* 0x51c00 - 0x51e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x51c00: r8 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r29 = r29 + -24; r3 = r0 + 8; r2 = r5 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; if(r8 != r3) { /* Next insn is delay slot */ pc=0x51c5c; continue; } r16 = r4 + r0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x51c74; continue; } r3 = r0 + 2; if(r6 == r3) { /* Next insn is delay slot */ pc=0x51c94; continue; } case 0x51c3c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x51c5c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=0x4928c; run_49200(); return; case 0x51c74: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 1; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x51c94: r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = 7 << 16; r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x51cb0; pc=0x3bc00; run_3bc00(); return; case 0x51cb0: /* Next insn is delay slot */ pc=0x51c3c; continue; case 0x51e00: pc=0x51e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_51e00() throws ExecutionException { /* 0x51e00 - 0x52000 */ int addr, tmp; for(;;) { switch(pc) { case 0x51e00: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x52000: pc=0x52000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52000() throws ExecutionException { /* 0x52000 - 0x52200 */ int addr, tmp; for(;;) { switch(pc) { case 0x52000: r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x52010; pc=0x5a200; run_5a200(); return; case 0x52010: if(r2 == r0) { /* Next insn is delay slot */ pc=0x52030; continue; } r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = 7 << 16; r2 = r2 + 1132; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x52030: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x52200: pc=0x52200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52200() throws ExecutionException { /* 0x52200 - 0x52400 */ int addr, tmp; for(;;) { switch(pc) { case 0x52200: r29 = r29 + -32; r2 = r5 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r16 = r6 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x522b8; continue; } r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x52288; continue; } r5 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r3 = r0 + -1; if(r5 != r3) { /* Next insn is delay slot */ pc=0x52288; continue; } r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x52250; pc=0x5ea00; run_5ea00(); return; case 0x52250: r17 = r2 + r0; if(r16 == r0) { /* Next insn is delay slot */ pc=0x52268; continue; } case 0x5225c: r2 = r0 + -1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r17; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; case 0x52268: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x52288: /* Next insn is delay slot */ r31=0x52290; pc=0x38c00; run_38c00(); return; case 0x52290: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r3 = r0 + 22; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x522b8: if(r6 == r0) { /* Next insn is delay slot */ pc=0x52268; continue; } r18 = r4 + r0; /* Next insn is delay slot */ r31=0x522cc; pc=0x5ea00; run_5ea00(); return; case 0x522cc: r5 = r2 + r0; r4 = r18 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x522e0; pc=0x5ea00; run_5ea00(); return; case 0x522e0: /* Next insn is delay slot */ pc=0x5225c; continue; case 0x52400: pc=0x52400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52400() throws ExecutionException { /* 0x52400 - 0x52600 */ int addr, tmp; for(;;) { switch(pc) { case 0x52400: r29 = r29 + -96; r5 = r0 + r0; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x5241c; pc=0x63000; run_63000(); return; case 0x5241c: r17 = r2 + r0; if(r2 < 0) { /* Next insn is delay slot */ pc=0x524ec; continue; } r4 = r2 + r0; r5 = r29 + 16; /* Next insn is delay slot */ r31=0x52438; pc=0x62e00; run_62e00(); return; case 0x52438: if(r2 < 0) { /* Next insn is delay slot */ pc=0x524b4; continue; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 16384; r3 = r3 & 61440; if(r3 != r2) { /* Next insn is delay slot */ pc=0x524b4; continue; } r4 = r0 + 20; /* Next insn is delay slot */ r31=0x52460; pc=0x3e800; run_3e800(); return; case 0x52460: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x524f8; continue; } writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r17; r4 = r0 + 4096; /* Next insn is delay slot */ r31=0x5247c; pc=0x3e800; run_3e800(); return; case 0x5247c: r3 = r0 + 4096; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r3; if(r2 == r0) { /* Next insn is delay slot */ pc=0x52520; continue; } writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; r2 = r16 + r0; case 0x5249c: r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r29 = r29 + 96; /* Next insn is delay slot */ pc=r31; return; case 0x524b4: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x524c0; pc=0x62a00; run_62a00(); return; case 0x524c0: /* Next insn is delay slot */ r31=0x524c8; pc=0x38c00; run_38c00(); return; case 0x524c8: r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r3 = r0 + 20; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 96; /* Next insn is delay slot */ pc=r31; return; case 0x524ec: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5249c; continue; case 0x524f8: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x52504; pc=0x62a00; run_62a00(); return; case 0x52504: /* Next insn is delay slot */ r31=0x5250c; pc=0x38c00; run_38c00(); return; case 0x5250c: r3 = r0 + 12; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5249c; continue; case 0x52520: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x5252c; pc=0x62a00; run_62a00(); return; case 0x5252c: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x52538; pc=0x3ea00; run_3ea00(); return; case 0x52538: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5249c; continue; case 0x52600: pc=0x52600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52600() throws ExecutionException { /* 0x52600 - 0x52800 */ int addr, tmp; for(;;) { switch(pc) { case 0x52600: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r16 = r4 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x52618; pc=0x38c00; run_38c00(); return; case 0x52618: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x52684; continue; } r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; if(r3 == r5) { /* Next insn is delay slot */ pc=0x52684; continue; } r6 = r3 + r0; case 0x5263c: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 + r6; r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x526c4; continue; } r3 = r5 - r3; r3 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x526c4; continue; } r4 = r6 + r4; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r4; case 0x52670: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x52684: r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r6 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r7 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x526a0; pc=0x48f90; run_48e00(); return; case 0x526a0: writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x526dc; continue; } r5 = r2 + r0; r6 = r0 + r0; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x5263c; continue; case 0x526c4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x526dc: writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x52670; continue; case 0x52800: pc=0x52800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52800() throws ExecutionException { /* 0x52800 - 0x52a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x52800: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r16 = r4 + r0; r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x52824; pc=0x3ea00; run_3ea00(); return; case 0x52824: r4 = r16 + r0; /* Next insn is delay slot */ r31=0x52830; pc=0x3ea00; run_3ea00(); return; case 0x52830: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r17 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x62a00; run_62a00(); return; case 0x52a00: pc=0x52a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52a00() throws ExecutionException { /* 0x52a00 - 0x52c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x52a00: r2 = r4 >>> 16; r29 = r29 + -40; r2 = r2 & 255; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = r4 >>> 8; r2 = r2 & 255; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; r16 = 7 << 16; r2 = r4 & 255; r7 = r4 + r0; r6 = 7 << 16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; r4 = r16 + 23428; r5 = r0 + 18; r6 = r6 + 1148; r7 = r7 >>> 24; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x52a50; pc=0x41c00; run_41c00(); return; case 0x52a50: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r16 + 23428; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x52c00: pc=0x52c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52c00() throws ExecutionException { /* 0x52c00 - 0x52e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x52c00: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x52e00: pc=0x52e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_52e00() throws ExecutionException { /* 0x52e00 - 0x53000 */ int addr, tmp; for(;;) { switch(pc) { case 0x52e00: r2 = (r4&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x52e28; continue; } r2 = 7 << 16; r2 = r2 + 1396; r4 = r4 << 2; r4 = r4 + r2; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x52e28: r2 = 7 << 16; r2 = r2 + 1160; /* Next insn is delay slot */ pc=r31; return; case 0x53000: pc=0x53000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53000() throws ExecutionException { /* 0x53000 - 0x53200 */ int addr, tmp; for(;;) { switch(pc) { case 0x53000: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r4 + r0; r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r2 = readPages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff]; r3 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x53044; continue; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + 1396; r2 = r2 + r3; r5 = 7 << 16; r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r5 = r5 + 1176; /* Next insn is delay slot */ pc=0x3bc00; run_3bc00(); return; case 0x53044: r7 = 7 << 16; r5 = 7 << 16; r7 = r7 + 1160; r5 = r5 + 1176; /* Next insn is delay slot */ pc=0x3bc00; run_3bc00(); return; case 0x53200: pc=0x53200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53200() throws ExecutionException { /* 0x53200 - 0x53400 */ int addr, tmp; for(;;) { switch(pc) { case 0x53200: r29 = r29 + -40; r2 = r0 + 2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; r16 = r6 + r0; if(r6 != r2) { /* Next insn is delay slot */ pc=0x532d4; continue; } r2 = r0 + 4; r17 = r5 + r0; if(r5 != r2) { /* Next insn is delay slot */ pc=0x532d4; continue; } r18 = r4 + r0; r5 = r18 + r0; r4 = r29 + 16; r6 = r0 + 4; /* Next insn is delay slot */ r31=0x5324c; pc=0x48fdc; run_48e00(); return; case 0x5324c: r5 = r18 + r0; r4 = r28 + -30624; r6 = r0 + 4; /* Next insn is delay slot */ r31=0x53260; pc=0x48fdc; run_48e00(); return; case 0x53260: r18 = 7 << 16; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r6 = r18 + 23300; r7 = r0 + 128; /* Next insn is delay slot */ r31=0x5327c; pc=0x49af4; run_49a00(); return; case 0x5327c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x532f4; continue; } r2 = 7 << 16; r18 = r18 + 23300; writePages[(r2+23280)>>>12][((r2+23280)>>>2)&0x3ff] = r18; r3 = r28 + -30628; r2 = r2 + 23280; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r3 = r28 + -30632; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; r3 = r28 + -30624; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r17; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r28+-30628)>>>12][((r28+-30628)>>>2)&0x3ff] = r0; writePages[(r28+-30632)>>>12][((r28+-30632)>>>2)&0x3ff] = r3; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x532d4: r2 = r0 + r0; case 0x532d8: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x532f4: writePages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x532d8; continue; case 0x53400: pc=0x53400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53400() throws ExecutionException { /* 0x53400 - 0x53600 */ int addr, tmp; for(;;) { switch(pc) { case 0x53400: r29 = r29 + -1064; writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; r18 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r2 = r0 + 1024; r5 = r18 + r0; r6 = r29 + 16; r7 = r29 + 1040; writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r31; writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; writePages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x53438; pc=0x493d8; run_49200(); return; case 0x53438: if(r2 != r0) { /* Next insn is delay slot */ pc=0x5351c; continue; } r17 = readPages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff]; r9 = 7 << 16; r9 = r9 + 22256; r4 = r9 + r0; r5 = r29 + 16; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x53460; pc=0x48fdc; run_48e00(); return; case 0x53460: r9 = r2 + r0; if(r17 == r0) { /* Next insn is delay slot */ pc=0x53540; continue; } r16 = 7 << 16; r3 = r0 + r0; r7 = r0 + r0; r2 = r0 + r0; r16 = r16 + 21228; /* Next insn is delay slot */ pc=0x5348c; continue; case 0x53488: r3 = r2 + r0; case 0x5348c: r8 = r16 + r3; r2 = r9 + r2; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r2; r2 = r3 + 4; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; r7 = r7 + 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x53488; continue; } case 0x534ac: r2 = r7 << 2; r17 = 7 << 16; r2 = r16 + r2; r4 = r17 + 21100; r5 = r18 + r0; r6 = r0 + 128; r17 = r17 + 21100; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x534d4; pc=0x5f400; run_5f400(); return; case 0x534d4: r2 = 7 << 16; writePages[(r2+21080)>>>12][((r2+21080)>>>2)&0x3ff] = r17; r3 = r28 + -30636; r2 = r2 + 21080; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; r31 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; r3 = r0 + 2; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; r3 = r0 + 4; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; writePages[(r28+-30636)>>>12][((r28+-30636)>>>2)&0x3ff] = r0; r29 = r29 + 1064; /* Next insn is delay slot */ pc=r31; return; case 0x5351c: r31 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; writePages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff] = r2; r2 = r0 + r0; r29 = r29 + 1064; /* Next insn is delay slot */ pc=r31; return; case 0x53540: r16 = 7 << 16; r7 = r0 + r0; r16 = r16 + 21228; /* Next insn is delay slot */ pc=0x534ac; continue; case 0x53600: pc=0x53600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53600() throws ExecutionException { /* 0x53600 - 0x53800 */ int addr, tmp; for(;;) { switch(pc) { case 0x53600: r29 = r29 + -1088; r5 = 7 << 16; writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r30; r30 = r4 + r0; r4 = 7 << 16; r4 = r4 + 1184; r5 = r5 + -632; writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r31; writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r23; writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r22; writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r21; writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r20; writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r19; writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x53648; pc=0x3b800; run_3b800(); return; case 0x53648: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x53728; continue; } r21 = 7 << 16; r22 = 7 << 16; r21 = r21 + 24472; r23 = 7 << 16; r22 = r22 + 1196; r18 = 7 << 16; r20 = 7 << 16; r19 = r21 + r0; case 0x53674: r16 = r0 + 35; case 0x53678: r4 = r29 + 24; r5 = r0 + 1024; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x5368c; pc=0x59400; run_59400(); return; case 0x5368c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x5371c; continue; } addr=r29+24; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x53678; continue; } r2 = r23 + 30624; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r29 + 24; r5 = r22 + r0; r6 = r21 + r0; r7 = r18 + 23448; /* Next insn is delay slot */ r31=0x536c4; pc=0x5f000; run_5f000(); return; case 0x536c4: r2 = r2 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5371c; continue; } r16 = r20 + 30616; r2 = r18 + 23448; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r4 = r30 + r0; r2 = r28 + -30620; r5 = r19 + r0; writePages[(r20+30616)>>>12][((r20+30616)>>>2)&0x3ff] = r19; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x536fc; pc=0x42c00; run_42c00(); return; case 0x536fc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x53674; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x53710; pc=0x39200; run_39200(); return; case 0x53710: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x5372c; continue; case 0x5371c: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x53728; pc=0x39200; run_39200(); return; case 0x53728: r2 = r0 + r0; case 0x5372c: r31 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; r30 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; r23 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; r22 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; r21 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; r20 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; r19 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; r29 = r29 + 1088; /* Next insn is delay slot */ pc=r31; return; case 0x53800: pc=0x53800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53800() throws ExecutionException { /* 0x53800 - 0x53a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x53800: r29 = r29 + -1088; r5 = 7 << 16; writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r23; r23 = r4 & 65535; r4 = 7 << 16; r4 = r4 + 1184; r5 = r5 + -632; writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r31; writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r30; writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r22; writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r21; writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r20; writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r19; writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x53848; pc=0x3b800; run_3b800(); return; case 0x53848: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5391c; continue; } r20 = 7 << 16; r21 = 7 << 16; r20 = r20 + 24472; r22 = 7 << 16; r21 = r21 + 1196; r18 = 7 << 16; r19 = 7 << 16; r30 = r20 + r0; case 0x53874: r16 = r0 + 35; case 0x53878: r4 = r29 + 24; r5 = r0 + 1024; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x5388c; pc=0x59400; run_59400(); return; case 0x5388c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x53910; continue; } addr=r29+24; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x53878; continue; } r2 = r22 + 30624; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r29 + 24; r5 = r21 + r0; r6 = r20 + r0; r7 = r18 + 23448; /* Next insn is delay slot */ r31=0x538c4; pc=0x5f000; run_5f000(); return; case 0x538c4: r2 = r2 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x53910; continue; } r16 = r19 + 30616; r2 = r18 + 23448; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = r28 + -30620; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; addr=r16+8; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; writePages[(r19+30616)>>>12][((r19+30616)>>>2)&0x3ff] = r30; writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; if(r2 != r23) { /* Next insn is delay slot */ pc=0x53874; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x53904; pc=0x39200; run_39200(); return; case 0x53904: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x53920; continue; case 0x53910: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x5391c; pc=0x39200; run_39200(); return; case 0x5391c: r2 = r0 + r0; case 0x53920: r31 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; r30 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; r23 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; r22 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; r21 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; r20 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; r19 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; r29 = r29 + 1088; /* Next insn is delay slot */ pc=r31; return; case 0x53a00: pc=0x53a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53a00() throws ExecutionException { /* 0x53a00 - 0x53c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x53a00: r6 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; r29 = r29 + -2088; writePages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff] = r31; writePages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff] = r17; writePages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff] = r16; if(r6 == r0) { /* Next insn is delay slot */ pc=0x53b0c; continue; } r4 = r29 + 1048; r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x53a2c; pc=0x59400; run_59400(); return; case 0x53a2c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x53b0c; continue; } addr=r29+1048; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r16 = tmp; r2 = r0 + 35; if(r16 == r2) { /* Next insn is delay slot */ pc=0x53abc; continue; } r2 = 7 << 16; r2 = r2 + 30624; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r29 + 1048; case 0x53a54: r5 = 7 << 16; r17 = 7 << 16; r16 = 7 << 16; r5 = r5 + 1196; r6 = r17 + 24472; r7 = r16 + 23448; /* Next insn is delay slot */ r31=0x53a74; pc=0x5f000; run_5f000(); return; case 0x53a74: r2 = r2 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x53b0c; continue; } r2 = 7 << 16; r17 = r17 + 24472; writePages[(r2+30616)>>>12][((r2+30616)>>>2)&0x3ff] = r17; r16 = r16 + 23448; r2 = r2 + 30616; r3 = r28 + -30620; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r16; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; case 0x53aa4: r31 = readPages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff]; r17 = readPages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff]; r16 = readPages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff]; r29 = r29 + 2088; /* Next insn is delay slot */ pc=r31; return; case 0x53abc: r6 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x53b0c; continue; } r4 = r29 + 24; r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x53adc; pc=0x59400; run_59400(); return; case 0x53adc: if(r2 == r0) { /* Next insn is delay slot */ pc=0x53b0c; continue; } addr=r29+24; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x53b28; continue; } r2 = 7 << 16; r2 = r2 + 30624; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r29 + 24; /* Next insn is delay slot */ pc=0x53a54; continue; case 0x53b0c: r31 = readPages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff]; r17 = readPages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff]; r16 = readPages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 2088; /* Next insn is delay slot */ pc=r31; return; case 0x53b28: /* Next insn is delay slot */ r31=0x53b30; pc=0x53a00; continue; case 0x53b30: /* Next insn is delay slot */ pc=0x53aa4; continue; case 0x53c00: pc=0x53c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53c00() throws ExecutionException { /* 0x53c00 - 0x53e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x53c00: r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x53c1c; continue; } /* Next insn is delay slot */ r31=0x53c1c; pc=0x39200; run_39200(); return; case 0x53c1c: r4 = 7 << 16; r5 = 7 << 16; r4 = r4 + 1184; r5 = r5 + -632; /* Next insn is delay slot */ r31=0x53c34; pc=0x3b800; run_3b800(); return; case 0x53c34: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r2; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x53e00: pc=0x53e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_53e00() throws ExecutionException { /* 0x53e00 - 0x54000 */ int addr, tmp; for(;;) { switch(pc) { case 0x53e00: r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x53e1c; continue; } /* Next insn is delay slot */ r31=0x53e1c; pc=0x39200; run_39200(); return; case 0x53e1c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x54000: pc=0x54000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54000() throws ExecutionException { /* 0x54000 - 0x54200 */ int addr, tmp; for(;;) { switch(pc) { case 0x54000: r29 = r29 + -1104; r5 = 7 << 16; writePages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff] = r4; r4 = 7 << 16; r4 = r4 + 1212; r5 = r5 + -632; writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r17; writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r31; writePages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff] = r30; writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r23; writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r22; writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r21; writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r20; writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r19; writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r18; writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x54048; pc=0x3b800; run_3b800(); return; case 0x54048: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x54160; continue; } r20 = 7 << 16; r20 = r20 + 29592; r19 = 7 << 16; r18 = r20 + r0; case 0x54064: r16 = r0 + 35; case 0x54068: r4 = r29 + 40; r5 = r0 + 1024; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x5407c; pc=0x59400; run_59400(); return; case 0x5407c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54154; continue; } addr=r29+40; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x54068; continue; } r3 = 7 << 16; r2 = r3 + 30640; r3 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r22 = r3 + 27544; r8 = 7 << 16; r3 = 7 << 16; r2 = 7 << 16; r2 = r2 + 30642; r21 = r8 + 26520; r30 = r3 + 25496; r5 = 7 << 16; r23 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r22; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r30; r4 = r29 + 40; r5 = r5 + 1224; r6 = r20 + r0; r7 = r23 + 28568; /* Next insn is delay slot */ r31=0x540f0; pc=0x5f000; run_5f000(); return; case 0x540f0: r2 = r2 < 7 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x54154; continue; } r2 = 7 << 16; r4 = readPages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff]; r16 = r19 + 30632; r10 = r23 + 28568; r2 = r2 + -12264; r5 = r18 + r0; writePages[(r19+30632)>>>12][((r19+30632)>>>2)&0x3ff] = r18; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r10; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r22; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r21; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r30; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x54134; pc=0x42c00; run_42c00(); return; case 0x54134: if(r2 != r0) { /* Next insn is delay slot */ pc=0x54064; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x54148; pc=0x39200; run_39200(); return; case 0x54148: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x54164; continue; case 0x54154: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x54160; pc=0x39200; run_39200(); return; case 0x54160: r2 = r0 + r0; case 0x54164: r31 = readPages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff]; r30 = readPages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff]; r23 = readPages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff]; r22 = readPages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff]; r21 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; r20 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; r19 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; r18 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; r17 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; r16 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; r29 = r29 + 1104; /* Next insn is delay slot */ pc=r31; return; case 0x54200: pc=0x54200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54200() throws ExecutionException { /* 0x54200 - 0x54400 */ int addr, tmp; for(;;) { switch(pc) { case 0x54200: r29 = r29 + -1112; r4 = r4 & 65535; r5 = 7 << 16; writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r4; r4 = 7 << 16; r4 = r4 + 1212; r5 = r5 + -632; writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r17; writePages[(r29+1108)>>>12][((r29+1108)>>>2)&0x3ff] = r31; writePages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff] = r30; writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r23; writePages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff] = r22; writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r21; writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r20; writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r19; writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r18; writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x5424c; pc=0x3b800; run_3b800(); return; case 0x5424c: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x54360; continue; } r19 = 7 << 16; r22 = 7 << 16; r19 = r19 + 29592; r18 = 7 << 16; case 0x54268: r16 = r0 + 35; case 0x5426c: r4 = r29 + 40; r5 = r0 + 1024; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x54280; pc=0x59400; run_59400(); return; case 0x54280: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54354; continue; } addr=r29+40; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x5426c; continue; } r2 = r22 + 30640; r3 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r20 = r3 + 27544; r8 = 7 << 16; r3 = 7 << 16; r2 = 7 << 16; r2 = r2 + 30642; r23 = r8 + 26520; r30 = r3 + 25496; r5 = 7 << 16; r21 = 7 << 16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r30; r4 = r29 + 40; r5 = r5 + 1224; r6 = r19 + r0; r7 = r21 + 28568; /* Next insn is delay slot */ r31=0x542f0; pc=0x5f000; run_5f000(); return; case 0x542f0: r2 = r2 < 7 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x54354; continue; } r2 = 7 << 16; r2 = r2 + 29592; writePages[(r18+30632)>>>12][((r18+30632)>>>2)&0x3ff] = r2; r2 = 7 << 16; r16 = r18 + 30632; r2 = r2 + -12264; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; r3 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; addr=r16+8; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r10 = r21 + 28568; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r10; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r20; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r23; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r30; if(r2 != r3) { /* Next insn is delay slot */ pc=0x54268; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x54348; pc=0x39200; run_39200(); return; case 0x54348: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x54364; continue; case 0x54354: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x54360; pc=0x39200; run_39200(); return; case 0x54360: r2 = r0 + r0; case 0x54364: r31 = readPages[(r29+1108)>>>12][((r29+1108)>>>2)&0x3ff]; r30 = readPages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff]; r23 = readPages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff]; r22 = readPages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff]; r21 = readPages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff]; r20 = readPages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff]; r19 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; r18 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; r17 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; r16 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; r29 = r29 + 1112; /* Next insn is delay slot */ pc=r31; return; case 0x54400: pc=0x54400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54400() throws ExecutionException { /* 0x54400 - 0x54600 */ int addr, tmp; for(;;) { switch(pc) { case 0x54400: r6 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; r29 = r29 + -2112; writePages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff] = r31; writePages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff] = r20; writePages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff] = r19; writePages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff] = r18; writePages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff] = r17; writePages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff] = r16; if(r6 == r0) { /* Next insn is delay slot */ pc=0x54590; continue; } r4 = r29 + 1064; r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x54438; pc=0x59400; run_59400(); return; case 0x54438: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54590; continue; } addr=r29+1064; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r16 = tmp; r2 = r0 + 35; if(r16 == r2) { /* Next insn is delay slot */ pc=0x54510; continue; } r2 = 7 << 16; r2 = r2 + 30640; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r18 = 7 << 16; r2 = 7 << 16; r17 = 7 << 16; r16 = 7 << 16; r2 = r2 + 30642; r18 = r18 + 27544; r17 = r17 + 26520; r16 = r16 + 25496; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; r4 = r29 + 1064; case 0x54490: r5 = 7 << 16; r20 = 7 << 16; r19 = 7 << 16; r5 = r5 + 1224; r6 = r20 + 29592; r7 = r19 + 28568; /* Next insn is delay slot */ r31=0x544b0; pc=0x5f000; run_5f000(); return; case 0x544b0: r2 = r2 < 7 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x54590; continue; } r2 = 7 << 16; r20 = r20 + 29592; r3 = 7 << 16; writePages[(r2+30632)>>>12][((r2+30632)>>>2)&0x3ff] = r20; r19 = r19 + 28568; r2 = r2 + 30632; r3 = r3 + -12264; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r18; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r17; writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r16; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; case 0x544ec: r31 = readPages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff]; r20 = readPages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff]; r19 = readPages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff]; r18 = readPages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff]; r17 = readPages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff]; r16 = readPages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff]; r29 = r29 + 2112; /* Next insn is delay slot */ pc=r31; return; case 0x54510: r6 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x54590; continue; } r4 = r29 + 40; r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x54530; pc=0x59400; run_59400(); return; case 0x54530: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54590; continue; } addr=r29+40; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x545b8; continue; } r2 = 7 << 16; r2 = r2 + 30640; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r18 = 7 << 16; r2 = 7 << 16; r17 = 7 << 16; r16 = 7 << 16; r2 = r2 + 30642; r18 = r18 + 27544; r17 = r17 + 26520; r16 = r16 + 25496; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; r4 = r29 + 40; /* Next insn is delay slot */ pc=0x54490; continue; case 0x54590: r31 = readPages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff]; r20 = readPages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff]; r19 = readPages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff]; r18 = readPages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff]; r17 = readPages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff]; r16 = readPages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 2112; /* Next insn is delay slot */ pc=r31; return; case 0x545b8: /* Next insn is delay slot */ r31=0x545c0; pc=0x54400; continue; case 0x545c0: /* Next insn is delay slot */ pc=0x544ec; continue; case 0x54600: pc=0x54600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54600() throws ExecutionException { /* 0x54600 - 0x54800 */ int addr, tmp; for(;;) { switch(pc) { case 0x54600: r4 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5461c; continue; } /* Next insn is delay slot */ r31=0x5461c; pc=0x39200; run_39200(); return; case 0x5461c: r4 = 7 << 16; r5 = 7 << 16; r4 = r4 + 1184; r5 = r5 + -632; /* Next insn is delay slot */ r31=0x54634; pc=0x3b800; run_3b800(); return; case 0x54634: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff] = r2; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x54800: pc=0x54800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54800() throws ExecutionException { /* 0x54800 - 0x54a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x54800: r4 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5481c; continue; } /* Next insn is delay slot */ r31=0x5481c; pc=0x39200; run_39200(); return; case 0x5481c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff] = r0; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x54a00: pc=0x54a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54a00() throws ExecutionException { /* 0x54a00 - 0x54c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x54a00: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r29 = r29 + -32; r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; /* Next insn is delay slot */ r31=0x54a20; pc=0x59a00; run_59a00(); return; case 0x54a20: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r16 = 7 << 16; r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x54a34; pc=0x39a00; run_39a00(); return; case 0x54a34: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r4 = r16 + 20056; r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x54a4c; pc=0x59400; run_59400(); return; case 0x54a4c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54ab8; continue; } r4 = r16 + 20056; /* Next insn is delay slot */ r31=0x54a60; pc=0x10268; run_10200(); return; case 0x54a60: r17 = r2 + -1; r16 = r16 + 20056; r3 = r16 + r17; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r0 + 10; if(r4 == r3) { /* Next insn is delay slot */ pc=0x54a80; continue; } r17 = r2 + r0; case 0x54a80: r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r17 = r16 + r17; r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r0 + 10; /* Next insn is delay slot */ r31=0x54a98; pc=0x3c000; run_3c000(); return; case 0x54a98: addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x54ab8: r17 = r0 + r0; r16 = r16 + 20056; /* Next insn is delay slot */ pc=0x54a80; continue; case 0x54c00: pc=0x54c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54c00() throws ExecutionException { /* 0x54c00 - 0x54e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x54c00: r29 = r29 + -32; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = r0 + 128; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r18 = r5 + r0; r17 = r6 + r0; /* Next insn is delay slot */ r31=0x54c2c; pc=0x3e800; run_3e800(); return; case 0x54c2c: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x54cbc; continue; } r4 = r2 + r0; r5 = r0 + 128; r6 = r18 + r0; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x54c50; pc=0x64e00; run_64e00(); return; case 0x54c50: r3 = r2 < 128 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x54c78; continue; } case 0x54c5c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x54c78: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r5 = r2 + 1; /* Next insn is delay slot */ r31=0x54c88; pc=0x40600; run_40600(); return; case 0x54c88: if(r2 == r0) { /* Next insn is delay slot */ pc=0x54cc8; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r5 = r18 + r0; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r6 = r17 + r0; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = r2 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x65200; run_65200(); return; case 0x54cbc: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x54c5c; continue; case 0x54cc8: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x54cd4; pc=0x3ea00; run_3ea00(); return; case 0x54cd4: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x54c5c; continue; case 0x54e00: pc=0x54e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_54e00() throws ExecutionException { /* 0x54e00 - 0x55000 */ int addr, tmp; for(;;) { switch(pc) { case 0x54e00: r4 = 7 << 16; r4 = r4 + 1260; /* Next insn is delay slot */ pc=0x3e000; run_3e000(); return; case 0x55000: pc=0x55000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55000() throws ExecutionException { /* 0x55000 - 0x55200 */ int addr, tmp; for(;;) { switch(pc) { case 0x55000: r29 = r29 + -32; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r16 = r4 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x550b4; continue; } addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x550b4; continue; } /* Next insn is delay slot */ r31=0x55038; pc=0x10268; run_10200(); return; case 0x55038: r2 = r2 + -1; r2 = r16 + r2; r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5510c; continue; } addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r0 + 47; if(r4 != r3) { /* Next insn is delay slot */ pc=0x550e0; continue; } r4 = r0 + 47; /* Next insn is delay slot */ pc=0x55078; continue; case 0x55068: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r4) { /* Next insn is delay slot */ pc=0x550e0; continue; } case 0x55078: r2 = r2 + -1; if(r2 != r16) { /* Next insn is delay slot */ pc=0x55068; continue; } case 0x55084: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 47; if(r3 == r2) { /* Next insn is delay slot */ pc=0x551b4; continue; } r3 = 7 << 16; r3 = r3 + -9052; case 0x5509c: addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = 7 << 16; addr=r2+19032; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + 19032; /* Next insn is delay slot */ pc=0x550c4; continue; case 0x550b4: r2 = 7 << 16; r3 = r0 + 11776; addr=r2+19032; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + 19032; case 0x550c4: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x550e0: r4 = r0 + 47; /* Next insn is delay slot */ pc=0x550fc; continue; case 0x550ec: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r4) { /* Next insn is delay slot */ pc=0x5510c; continue; } case 0x550fc: r2 = r2 + -1; r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x550ec; continue; } case 0x5510c: r4 = r0 + 47; if(r2 != r16) { /* Next insn is delay slot */ pc=0x55130; continue; } /* Next insn is delay slot */ pc=0x55084; continue; case 0x55120: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r4) { /* Next insn is delay slot */ pc=0x55140; continue; } case 0x55130: r2 = r2 + -1; r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x55120; continue; } case 0x55140: r2 = r2 - r16; r3 = r2 + 2; r3 = (r3&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55198; continue; } r17 = r2 + 1; r18 = 7 << 16; r4 = r18 + 19032; r5 = r16 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x55170; pc=0x5f400; run_5f400(); return; case 0x55170: r2 = r18 + 19032; r17 = r17 + r2; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x55198: /* Next insn is delay slot */ r31=0x551a0; pc=0x38c00; run_38c00(); return; case 0x551a0: r3 = r0 + 91; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x550c4; continue; case 0x551b4: r3 = 7 << 16; r3 = r3 + 1268; /* Next insn is delay slot */ pc=0x5509c; continue; case 0x55200: pc=0x55200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55200() throws ExecutionException { /* 0x55200 - 0x55400 */ int addr, tmp; for(;;) { switch(pc) { case 0x55200: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r16 = r4 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5534c; continue; } addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5534c; continue; } /* Next insn is delay slot */ r31=0x55234; pc=0x10268; run_10200(); return; case 0x55234: r2 = r2 + -1; r2 = r16 + r2; r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5538c; continue; } addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r0 + 47; if(r4 != r3) { /* Next insn is delay slot */ pc=0x552e0; continue; } r4 = r0 + 47; /* Next insn is delay slot */ pc=0x55274; continue; case 0x55264: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r4) { /* Next insn is delay slot */ pc=0x552d4; continue; } case 0x55274: r2 = r2 + -1; if(r2 != r16) { /* Next insn is delay slot */ pc=0x55264; continue; } case 0x55280: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r0 + 47; if(r4 == r3) { /* Next insn is delay slot */ pc=0x55374; continue; } case 0x55290: r5 = r2 + r0; r2 = r0 + r0; case 0x55298: r16 = r2 + 1; r17 = 7 << 16; r6 = r16 + r0; r4 = r17 + 18008; /* Next insn is delay slot */ r31=0x552b0; pc=0x5f400; run_5f400(); return; case 0x552b0: r2 = r17 + 18008; r16 = r16 + r2; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x552bc: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x552d4: r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55290; continue; } case 0x552e0: addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r6 = tmp; r3 = r0 + 47; r5 = r2 + r0; r4 = r0 + 47; if(r6 != r3) { /* Next insn is delay slot */ pc=0x55310; continue; } /* Next insn is delay slot */ pc=0x55290; continue; case 0x55300: addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r4) { /* Next insn is delay slot */ pc=0x5531c; continue; } case 0x55310: r5 = r5 + -1; if(r5 != r16) { /* Next insn is delay slot */ pc=0x55300; continue; } case 0x5531c: r2 = r2 - r5; r3 = r2 + 2; r3 = (r3&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x55298; continue; } /* Next insn is delay slot */ r31=0x55338; pc=0x38c00; run_38c00(); return; case 0x55338: r3 = r0 + 91; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x552bc; continue; case 0x5534c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = 7 << 16; r3 = r0 + 11776; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; addr=r2+18008; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + 18008; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x55374: r2 = 7 << 16; r3 = r0 + 12032; addr=r2+18008; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + 18008; /* Next insn is delay slot */ pc=0x552bc; continue; case 0x5538c: if(r16 == r2) { /* Next insn is delay slot */ pc=0x55280; continue; } r5 = r2 + r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x55298; continue; case 0x55400: pc=0x55400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55400() throws ExecutionException { /* 0x55400 - 0x55600 */ int addr, tmp; for(;;) { switch(pc) { case 0x55400: r29 = r29 + -72; r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = r0 + 32; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r31; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r20; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r19; r17 = r4 + r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x5543c; pc=0x38c00; run_38c00(); return; case 0x5543c: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 8; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x55498; continue; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x5546c; pc=0x3bc00; run_3bc00(); return; case 0x5546c: r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x55474: /* Next insn is delay slot */ r31=0x5547c; pc=0x38c00; run_38c00(); return; case 0x5547c: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 12; if(r3 == r2) { /* Next insn is delay slot */ pc=0x5585c; run_55800(); return; } r18 = r0 + -1; /* Next insn is delay slot */ pc=0x554d0; continue; case 0x55498: r2 = r29 + 40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; r4 = r16 + r0; r5 = r29 + 32; r6 = r0 + 2; r7 = r17 + r0; /* Next insn is delay slot */ r31=0x554c0; pc=0x4928c; run_49200(); return; case 0x554c0: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x55474; continue; } case 0x554cc: r18 = r0 + r0; case 0x554d0: r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 10; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; addr=r17+31; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x554f4; pc=0x38c00; run_38c00(); return; case 0x554f4: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 8; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x55550; continue; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x55524; pc=0x3bc00; run_3bc00(); return; case 0x55524: r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x5552c: /* Next insn is delay slot */ r31=0x55534; pc=0x38c00; run_38c00(); return; case 0x55534: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 12; if(r3 == r2) { /* Next insn is delay slot */ pc=0x55870; run_55800(); return; } r18 = r0 + -1; /* Next insn is delay slot */ pc=0x55584; continue; case 0x55550: r2 = r29 + 40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; r4 = r16 + r0; r5 = r29 + 32; r6 = r0 + 2; r7 = r17 + 32; /* Next insn is delay slot */ r31=0x55578; pc=0x4928c; run_49200(); return; case 0x55578: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x5552c; continue; } case 0x55584: r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; addr=r17+63; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x555a8; pc=0x38c00; run_38c00(); return; case 0x555a8: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 8; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x55604; run_55600(); return; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x555d8; pc=0x3bc00; run_3bc00(); return; case 0x555d8: r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x555e0: /* Next insn is delay slot */ r31=0x555e8; pc=0x38c00; run_38c00(); return; case 0x555e8: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 12; if(r3 == r2) { /* Next insn is delay slot */ pc=0x55884; run_55800(); return; } r18 = r0 + -1; /* Next insn is delay slot */ pc=0x55638; run_55600(); return; case 0x55600: pc=0x55600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55600() throws ExecutionException { /* 0x55600 - 0x55800 */ int addr, tmp; for(;;) { switch(pc) { case 0x55600: case 0x55604: r2 = r29 + 40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; r4 = r16 + r0; r5 = r29 + 32; r6 = r0 + 2; r7 = r17 + 64; /* Next insn is delay slot */ r31=0x5562c; pc=0x4928c; run_49200(); return; case 0x5562c: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x555e0; run_55400(); return; } case 0x55638: r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 4; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; addr=r17+95; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x5565c; pc=0x38c00; run_38c00(); return; case 0x5565c: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r20 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 8; r16 = r17 + 96; r19 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x556bc; continue; } r4 = readPages[(r19+12)>>>12][((r19+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x55690; pc=0x3bc00; run_3bc00(); return; case 0x55690: r2 = r0 + 22; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; case 0x55698: /* Next insn is delay slot */ r31=0x556a0; pc=0x38c00; run_38c00(); return; case 0x556a0: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 12; if(r3 == r2) { /* Next insn is delay slot */ pc=0x55898; run_55800(); return; } r18 = r0 + -1; /* Next insn is delay slot */ pc=0x556f0; continue; case 0x556bc: r2 = r29 + 40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; r4 = r19 + r0; r5 = r29 + 32; r6 = r0 + 2; r7 = r16 + r0; /* Next insn is delay slot */ r31=0x556e4; pc=0x4928c; run_49200(); return; case 0x556e4: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x55698; continue; } case 0x556f0: r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; addr=r17+127; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r2 + -1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x55760; continue; } r4 = r0 + 32; r6 = r0 + -1; /* Next insn is delay slot */ pc=0x55724; continue; case 0x55714: r3 = r3 + -1; r16 = r16 + 1; if(r3 == r6) { /* Next insn is delay slot */ pc=0x55760; continue; } case 0x55724: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r5 = tmp; r5 = r5 + -9; r5 = r5 & 255; r5 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x55714; continue; } r2 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x557e4; continue; } r3 = r3 + -1; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r16 = r16 + 1; if(r3 != r6) { /* Next insn is delay slot */ pc=0x55724; continue; } case 0x55760: r2 = r0 + 6; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = r0 + 32; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x55780; pc=0x38c00; run_38c00(); return; case 0x55780: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 8; r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; if(r3 != r2) { /* Next insn is delay slot */ pc=0x557f0; continue; } r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; r5 = 7 << 16; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r5 = r5 + 1096; /* Next insn is delay slot */ r31=0x557b0; pc=0x3bc00; run_3bc00(); return; case 0x557b0: r2 = r0 + 22; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; case 0x557b8: /* Next insn is delay slot */ r31=0x557c0; pc=0x38c00; run_38c00(); return; case 0x557c0: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r0 + 12; if(r3 != r2) { /* Next insn is delay slot */ pc=0x55850; run_55800(); return; } /* Next insn is delay slot */ r31=0x557d8; pc=0x38c00; run_38c00(); return; case 0x557d8: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x55824; run_55800(); return; case 0x557e4: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x55714; continue; case 0x557f0: r2 = r29 + 40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; case 0x55800: pc=0x55800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55800() throws ExecutionException { /* 0x55800 - 0x55a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x55800: r4 = r16 + r0; r5 = r29 + 32; r6 = r0 + 2; r7 = r17 + 128; /* Next insn is delay slot */ r31=0x55818; pc=0x4928c; run_49200(); return; case 0x55818: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x557b8; run_55600(); return; } case 0x55824: r31 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r2 = r18 + r0; r20 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r19 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; addr=r17+159; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r29 = r29 + 72; /* Next insn is delay slot */ pc=r31; return; case 0x55850: r18 = r0 + -1; /* Next insn is delay slot */ pc=0x55824; continue; case 0x5585c: /* Next insn is delay slot */ r31=0x55864; pc=0x38c00; run_38c00(); return; case 0x55864: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ pc=0x554cc; run_55400(); return; case 0x55870: /* Next insn is delay slot */ r31=0x55878; pc=0x38c00; run_38c00(); return; case 0x55878: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x55584; run_55400(); return; case 0x55884: /* Next insn is delay slot */ r31=0x5588c; pc=0x38c00; run_38c00(); return; case 0x5588c: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; /* Next insn is delay slot */ pc=0x55638; run_55600(); return; case 0x55898: /* Next insn is delay slot */ r31=0x558a0; pc=0x38c00; run_38c00(); return; case 0x558a0: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r20; /* Next insn is delay slot */ pc=0x556f0; run_55600(); return; case 0x55a00: pc=0x55a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55a00() throws ExecutionException { /* 0x55a00 - 0x55c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x55a00: r29 = r29 + -56; r2 = r0 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 10; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r7 = r4 + r0; r2 = r29 + 40; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; r5 = r29 + 32; r6 = r0 + 2; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x55a44; pc=0x4928c; run_49200(); return; case 0x55a44: r2 = r2 + 1; r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r2 = r0 - r2; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x55c00: pc=0x55c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55c00() throws ExecutionException { /* 0x55c00 - 0x55e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x55c00: r29 = r29 + -40; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; r19 = r4 + r0; r18 = r5 + r0; r17 = r0 + -1; /* Next insn is delay slot */ r31=0x55c2c; pc=0x62c00; run_62c00(); return; case 0x55c2c: r16 = r2 + r0; if(r2 == r17) { /* Next insn is delay slot */ pc=0x55c64; continue; } if(r2 != r0) { /* Next insn is delay slot */ pc=0x55c88; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x55c4c; pc=0x49ab4; run_49a00(); return; case 0x55c4c: if(r2 == r17) { /* Next insn is delay slot */ pc=0x55d3c; continue; } if(r19 == r0) { /* Next insn is delay slot */ pc=0x55d18; continue; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x55c94; continue; } case 0x55c64: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r16 + r0; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x55c88: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x55c94; pc=0x48800; run_48800(); return; case 0x55c94: r4 = 7 << 16; r4 = r4 + 1272; r5 = r0 + 2; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x55cac; pc=0x63000; run_63000(); return; case 0x55cac: r17 = r2 + r0; r2 = r0 + -1; if(r17 == r2) { /* Next insn is delay slot */ pc=0x55c64; continue; } r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 + r0; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x55cd0; pc=0x48c90; run_48c00(); return; case 0x55cd0: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 + r0; r6 = r0 + 1; /* Next insn is delay slot */ r31=0x55ce4; pc=0x48c90; run_48c00(); return; case 0x55ce4: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r17 + r0; r6 = r0 + 2; /* Next insn is delay slot */ r31=0x55cf8; pc=0x48c90; run_48c00(); return; case 0x55cf8: r2 = r17 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x55c64; continue; } r4 = r17 + r0; /* Next insn is delay slot */ r31=0x55d10; pc=0x62a00; run_62a00(); return; case 0x55d10: /* Next insn is delay slot */ pc=0x55c64; continue; case 0x55d18: r5 = 7 << 16; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r5 + 1268; /* Next insn is delay slot */ r31=0x55d2c; pc=0x48c10; run_48c00(); return; case 0x55d2c: if(r18 != r0) { /* Next insn is delay slot */ pc=0x55c64; continue; } /* Next insn is delay slot */ pc=0x55c94; continue; case 0x55d3c: r16 = r0 + -1; /* Next insn is delay slot */ pc=0x55c64; continue; case 0x55e00: pc=0x55e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_55e00() throws ExecutionException { /* 0x55e00 - 0x56000 */ int addr, tmp; for(;;) { switch(pc) { case 0x55e00: r29 = r29 + -80; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r23; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r22; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r21; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r20; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; r23 = r4 + r0; r22 = r5 + r0; /* Next insn is delay slot */ r31=0x55e38; pc=0x38c00; run_38c00(); return; case 0x55e38: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r4 = r23 + r0; r5 = r29 + 32; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x55e50; pc=0x5fc00; run_5fc00(); return; case 0x55e50: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x55e5c; pc=0x38c00; run_38c00(); return; case 0x55e5c: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r18 = r0 + 34; r17 = r29 + 16; r19 = r0 + r0; r20 = r0 + 46; r21 = r0 + 3; if(r2 == r18) { /* Next insn is delay slot */ pc=0x55ef0; continue; } case 0x55e7c: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; if(r3 == r23) { /* Next insn is delay slot */ pc=0x55ef0; continue; } addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x55f44; continue; } if(r4 != r20) { /* Next insn is delay slot */ pc=0x55f24; continue; } r17 = r17 + 4; if(r19 == r21) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r23 = r3 + 1; /* Next insn is delay slot */ r31=0x55ebc; pc=0x38c00; run_38c00(); return; case 0x55ebc: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r4 = r23 + r0; r5 = r29 + 32; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x55ed4; pc=0x5fc00; run_5fc00(); return; case 0x55ed4: r16 = r2 + r0; /* Next insn is delay slot */ r31=0x55ee0; pc=0x38c00; run_38c00(); return; case 0x55ee0: r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r19 = r19 + 1; if(r2 != r18) { /* Next insn is delay slot */ pc=0x55e7c; continue; } case 0x55ef0: r2 = r0 + r0; case 0x55ef4: r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r22 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r20 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 80; /* Next insn is delay slot */ pc=r31; return; case 0x55f24: r2 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r4 = r4 & 255; r4 = r2 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } case 0x55f44: r2 = r0 + 2; if(r19 == r2) { /* Next insn is delay slot */ pc=0x55fe8; continue; } r2 = r0 + 3; if(r19 == r2) { /* Next insn is delay slot */ pc=0x55f80; continue; } r2 = r0 + 1; if(r19 == r2) { /* Next insn is delay slot */ pc=0x56038; run_56000(); return; } case 0x55f68: if(r22 == r0) { /* Next insn is delay slot */ pc=0x5606c; run_56000(); return; } writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; r2 = r0 + 1; /* Next insn is delay slot */ pc=0x55ef4; continue; case 0x55f80: r2 = (r16&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r4 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = (r4&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = (r3&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r4 = r4 << 16; r2 = r2 << 24; r2 = r4 | r2; r3 = r3 << 8; r2 = r2 | r3; r16 = r2 | r16; /* Next insn is delay slot */ pc=0x55f68; continue; case 0x55fe8: r2 = 1 << 16; r2 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x55ef0; continue; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x56000: pc=0x56000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56000() throws ExecutionException { /* 0x56000 - 0x56200 */ int addr, tmp; for(;;) { switch(pc) { case 0x56000: r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55ef0; run_55e00(); return; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = (r3&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x55ef0; run_55e00(); return; } r3 = r3 << 16; r2 = r2 << 24; r2 = r3 | r2; r16 = r2 | r16; /* Next insn is delay slot */ pc=0x55f68; run_55e00(); return; case 0x56038: r2 = 256 << 16; r2 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x55ef0; run_55e00(); return; } r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x55ef0; run_55e00(); return; } r2 = r2 << 24; r16 = r16 | r2; /* Next insn is delay slot */ pc=0x55f68; run_55e00(); return; case 0x5606c: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x55ef4; run_55e00(); return; case 0x56200: pc=0x56200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56200() throws ExecutionException { /* 0x56200 - 0x56400 */ int addr, tmp; for(;;) { switch(pc) { case 0x56200: r29 = r29 + -32; r5 = r29 + 16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x56214; pc=0x55e00; run_55e00(); return; case 0x56214: if(r2 != r0) { /* Next insn is delay slot */ pc=0x56230; continue; } r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x56230: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x56400: pc=0x56400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56400() throws ExecutionException { /* 0x56400 - 0x56600 */ int addr, tmp; for(;;) { switch(pc) { case 0x56400: r29 = r29 + -56; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; r20 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; r5 = r5 & 65535; r2 = r20 < 2 ? 1 : 0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r17 = r4 + r0; r19 = r6 + r0; r22 = r7 + r0; addr=r6+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r5&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x565cc; continue; } addr=r6+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r5&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r16 = r0 + 2; case 0x56454: r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5646c; continue; } /* Next insn is delay slot */ r31=0x5646c; pc=0x39200; run_39200(); return; case 0x5646c: r4 = 7 << 16; r5 = 7 << 16; r4 = r4 + 1184; r5 = r5 + -632; /* Next insn is delay slot */ r31=0x56484; pc=0x3b800; run_3b800(); return; case 0x56484: writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r2; r21 = r0 + r0; case 0x5648c: /* Next insn is delay slot */ r31=0x56494; pc=0x53a00; run_53a00(); return; case 0x56494: r18 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5656c; continue; } case 0x564a0: if(r16 <= 0) { /* Next insn is delay slot */ pc=0x564ec; continue; } addr=r2+8; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r4 = tmp; addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5648c; continue; } r8 = r19 + 2; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x564e0; continue; case 0x564cc: r8 = r8 + 2; addr=r8+-2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5648c; continue; } case 0x564e0: r3 = r3 + 1; if(r3 != r16) { /* Next insn is delay slot */ pc=0x564cc; continue; } case 0x564ec: r23 = readPages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff]; r4 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5648c; continue; } r23 = r23 + 4; /* Next insn is delay slot */ pc=0x56524; continue; case 0x56510: r23 = r23 + 4; r4 = readPages[(r23+-4)>>>12][((r23+-4)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5648c; continue; } case 0x56524: r5 = r17 + r0; /* Next insn is delay slot */ r31=0x56530; pc=0x42c00; run_42c00(); return; case 0x56530: if(r2 != r0) { /* Next insn is delay slot */ pc=0x56510; continue; } r2 = r16 < r20 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x565c0; continue; } addr=r18+8; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r3 = tmp; r2 = r16 << 1; r2 = r19 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x5655c; pc=0x53a00; run_53a00(); return; case 0x5655c: r16 = r16 + 1; r18 = r2 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x564a0; continue; } case 0x5656c: r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x56584; continue; } /* Next insn is delay slot */ r31=0x56584; pc=0x39200; run_39200(); return; case 0x56584: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; r2 = r21 + r0; r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r0; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x565c0: r21 = r0 + -1; /* Next insn is delay slot */ pc=0x5648c; continue; case 0x565cc: r16 = r0 + 1; /* Next insn is delay slot */ pc=0x56454; continue; case 0x56600: pc=0x56600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56600() throws ExecutionException { /* 0x56600 - 0x56800 */ int addr, tmp; for(;;) { switch(pc) { case 0x56600: r29 = r29 + -96; r6 = r29 + 16; r7 = r29 + 80; r2 = r0 + 32; r5 = r5 & 65535; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; addr=r29+80; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x56624; pc=0x56400; run_56400(); return; case 0x56624: addr=r29+80; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r5 = tmp; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r29 + 16; /* Next insn is delay slot */ r31=0x56638; pc=0x498e4; run_49800(); return; case 0x56638: r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r29 = r29 + 96; /* Next insn is delay slot */ pc=r31; return; case 0x56800: pc=0x56800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56800() throws ExecutionException { /* 0x56800 - 0x56a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x56800: r4 = r5 + r0; /* Next insn is delay slot */ pc=0x5a200; run_5a200(); return; case 0x56a00: pc=0x56a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56a00() throws ExecutionException { /* 0x56a00 - 0x56c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x56a00: r29 = r29 + -48; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; r16 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; r2 = readPages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff]; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; r17 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x56b30; continue; } case 0x56a24: r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r8 = r3 < 32 ? 1 : 0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x56aac; continue; } r2 = 4 << 16; r2 = r2 + -6144; if(r2 != r0) { /* Next insn is delay slot */ pc=0x56a64; continue; } case 0x56a48: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + -1; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x56a64: r4 = r0 + 400; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x56a7c; pc=0x3e800; run_3e800(); return; case 0x56a7c: r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r7 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x56a48; 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 = r0 + r0; writePages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff] = r0; writePages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff] = r0; case 0x56aac: if(r17 != r0) { /* Next insn is delay slot */ pc=0x56ae8; continue; } case 0x56ab4: r4 = r3 + 1; r3 = r3 + 2; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r3 = r3 << 2; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; r2 = r2 + r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x56ae8: r4 = r3 << 2; r4 = r2 + r4; writePages[(r4+136)>>>12][((r4+136)>>>2)&0x3ff] = r6; r8 = readPages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff]; r6 = r0 + 1; r6 = r6 << (r3&0x1f); r8 = r8 | r6; writePages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff] = r8; writePages[(r4+264)>>>12][((r4+264)>>>2)&0x3ff] = r7; r4 = r0 + 2; if(r17 != r4) { /* Next insn is delay slot */ pc=0x56ab4; continue; } r4 = readPages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff]; r6 = r4 | r6; writePages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x56ab4; continue; case 0x56b30: r2 = r16 + 332; writePages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x56a24; continue; case 0x56c00: pc=0x56c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56c00() throws ExecutionException { /* 0x56c00 - 0x56e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x56c00: r2 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r29 = r29 + -64; r2 = r2 + 328; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; r19 = r5 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r20 = r0 + 1; r21 = r0 + -1; case 0x56c48: r2 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; r23 = readPages[(r2+328)>>>12][((r2+328)>>>2)&0x3ff]; if(r23 == r0) { /* Next insn is delay slot */ pc=0x56ccc; continue; } r30 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x56c64: r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; r16 = r3 + -1; if(r16 < 0) { /* Next insn is delay slot */ pc=0x56cbc; continue; } r18 = r3 + 1; r17 = r23 + 136; r4 = r16 << 2; r18 = r18 << 2; r17 = r17 + r4; r18 = r23 + r18; case 0x56c90: if(r19 == r0) { /* Next insn is delay slot */ pc=0x56d00; continue; } r3 = readPages[(r17+128)>>>12][((r17+128)>>>2)&0x3ff]; if(r3 == r19) { /* Next insn is delay slot */ pc=0x56d00; continue; } case 0x56ca8: r16 = r16 + -1; r17 = r17 + -4; r18 = r18 + -4; if(r16 != r21) { /* Next insn is delay slot */ pc=0x56c90; continue; } case 0x56cbc: r2 = 4 << 16; r2 = r2 + -5632; if(r2 != r0) { /* Next insn is delay slot */ pc=0x56db4; continue; } case 0x56ccc: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x56d00: r4 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; r3 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; r4 = r4 + -1; if(r4 == r16) { /* Next insn is delay slot */ pc=0x56d94; continue; } writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r0; case 0x56d18: if(r3 == r0) { /* Next insn is delay slot */ pc=0x56ca8; continue; } r5 = readPages[(r23+392)>>>12][((r23+392)>>>2)&0x3ff]; r4 = r20 << (r16&0x1f); r5 = r4 & r5; r22 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x56d84; continue; } r5 = readPages[(r23+396)>>>12][((r23+396)>>>2)&0x3ff]; r4 = r4 & r5; if(r4 != r0) { /* Next insn is delay slot */ pc=0x56da0; continue; } r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r5 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; r31=0x56d5c; return; case 0x56d5c: r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; if(r3 != r22) { /* Next insn is delay slot */ pc=0x56c48; continue; } r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; if(r3 == r23) { /* Next insn is delay slot */ pc=0x56ca8; continue; } /* Next insn is delay slot */ pc=0x56c48; continue; case 0x56d84: /* Next insn is delay slot */ pc=r3; r31=0x56d8c; return; case 0x56d8c: /* Next insn is delay slot */ pc=0x56d5c; continue; case 0x56d94: writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x56d18; continue; case 0x56da0: r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; r31=0x56dac; return; case 0x56dac: /* Next insn is delay slot */ pc=0x56d5c; continue; case 0x56db4: r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x56dfc; continue; } r3 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x56e10; run_56e00(); return; } r4 = r23 + r0; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x56de4; pc=0x3ea00; run_3ea00(); return; case 0x56de4: r23 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; case 0x56dec: if(r23 != r0) { /* Next insn is delay slot */ pc=0x56c64; continue; } /* Next insn is delay slot */ pc=0x56ccc; continue; case 0x56dfc: r3 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; case 0x56e00: pc=0x56e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_56e00() throws ExecutionException { /* 0x56e00 - 0x57000 */ int addr, tmp; for(;;) { switch(pc) { case 0x56e00: r30 = r23 + r0; r23 = r3 + r0; /* Next insn is delay slot */ pc=0x56dec; run_56c00(); return; case 0x56e10: r3 = r0 + r0; /* Next insn is delay slot */ pc=0x56e00; continue; case 0x57000: pc=0x57000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57000() throws ExecutionException { /* 0x57000 - 0x57200 */ int addr, tmp; for(;;) { switch(pc) { case 0x57000: 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 = 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; r20 = r4 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x57274; run_57200(); return; } r17 = r17 + -1; r12 = r17 << 2; r16 = r5 + 20; 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 = 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)); } pc=0x5706c; continue; } if(r22!=0) { hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x5706c: r22 = lo; r21 = lo; if(r22 == r0) { /* Next insn is delay slot */ pc=0x57168; continue; } r6 = r16 + r0; r3 = r19 + r0; r4 = r0 + r0; r2 = r0 + r0; case 0x5708c: r6 = r6 + 4; r11 = readPages[(r6+-4)>>>12][((r6+-4)>>>2)&0x3ff]; r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r10 = r11 & 65535; { long hilo = (r22) * r10; hi = (int) (hilo >>> 32); lo = (int) hilo; } r11 = r11 >>> 16; r3 = r3 + 4; r10 = lo; r10 = r4 + r10; r4 = r10 >>> 16; { long hilo = (r22) * r11; hi = (int) (hilo >>> 32); lo = (int) hilo; } r7 = r10 & 65535; r7 = r2 - r7; r11 = lo; r9 = r4 + r11; r11 = r8 & 65535; r7 = r7 + r11; r4 = r9 >>> 16; r8 = r8 >>> 16; r9 = r9 & 65535; r2 = r7 >> 16; r8 = r8 - r9; r8 = r8 + r2; r2 = r8 >> 16; r7 = r7 & 65535; r8 = r8 << 16; r7 = r8 | r7; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r7; r7 = ((r18 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x5708c; continue; } r2 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x57168; continue; } r2 = r12 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x57164; continue; } r3 = readPages[(r12+-4)>>>12][((r12+-4)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x57150; continue; } /* Next insn is delay slot */ pc=0x57164; continue; case 0x57140: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x57164; continue; } case 0x57150: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x57140; continue; } case 0x57164: writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r17; case 0x57168: r4 = r20 + r0; /* Next insn is delay slot */ r31=0x57174; pc=0x5ce00; run_5ce00(); return; case 0x57174: if(r2 < 0) { /* Next insn is delay slot */ pc=0x57244; run_57200(); return; } r21 = r22 + 1; r3 = r19 + r0; r8 = r0 + r0; case 0x57188: r16 = r16 + 4; r7 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r5 = r7 & 65535; r2 = r6 & 65535; r5 = r8 - r5; r5 = r5 + r2; r6 = r6 >>> 16; r7 = r7 >>> 16; r2 = r5 >> 16; r6 = r6 - r7; r6 = r6 + r2; r8 = r6 >> 16; r5 = r5 & 65535; r6 = r6 << 16; r5 = r6 | r5; r3 = r3 + 4; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; r5 = ((r18 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x57188; continue; } r3 = r17 << 2; r3 = r19 + r3; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x57244; run_57200(); return; } r2 = r3 + -4; r4 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x57240; run_57200(); return; } case 0x57200: pc=0x57200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57200() throws ExecutionException { /* 0x57200 - 0x57400 */ int addr, tmp; for(;;) { switch(pc) { case 0x57200: r3 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5722c; continue; } /* Next insn is delay slot */ pc=0x57240; continue; case 0x5721c: r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x57240; continue; } case 0x5722c: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5721c; continue; } case 0x57240: writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r17; case 0x57244: r2 = r21 + r0; case 0x57248: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x57274: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x57248; continue; case 0x57400: pc=0x57400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57400() throws ExecutionException { /* 0x57400 - 0x57600 */ int addr, tmp; for(;;) { switch(pc) { case 0x57400: r5 = readPages[(r4+64)>>>12][((r4+64)>>>2)&0x3ff]; r29 = r29 + -128; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r17; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r16; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r31; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r30; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r23; writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r22; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r21; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r20; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r19; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r18; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = f20; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = f21; r16 = r4 + r0; r17 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r7; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; if(r5 == r0) { /* Next insn is delay slot */ pc=0x57470; continue; } r2 = readPages[(r4+68)>>>12][((r4+68)>>>2)&0x3ff]; r3 = r0 + 1; writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r2; r2 = r3 << (r2&0x1f); writePages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x5746c; pc=0x5ba00; run_5ba00(); return; case 0x5746c: writePages[(r16+64)>>>12][((r16+64)>>>2)&0x3ff] = r0; case 0x57470: r2 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x5757c; continue; } r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; case 0x57488: r2 = 32752 << 16; r3 = r18 & r2; if(r3 == r2) { /* Next insn is delay slot */ pc=0x57524; continue; } f20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f0 = r0; f21 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x575a0; continue; } r9 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r3 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; r2 = r0 + 1; writePages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff] = r2; if(r3 == r0) { /* Next insn is delay slot */ pc=0x57b6c; run_57a00(); return; } r2 = 7 << 16; r2 = r2 + 277; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = 7 << 16; r2 = r2 + 276; case 0x574e8: f20 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r31 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r30 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; r23 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; r22 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r21 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r20 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r19 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r18 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r17 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; f21 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r29 = r29 + 128; /* Next insn is delay slot */ pc=r31; return; case 0x57524: r8 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r9 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r0 + 9999; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r2; if(r9 == r0) { /* Next insn is delay slot */ pc=0x57b0c; run_57a00(); return; } case 0x5753c: r2 = 7 << 16; r2 = r2 + 2072; case 0x57544: r3 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x574e8; 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 */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x57b30; run_57a00(); return; } r3 = r2 + 3; case 0x57568: r8 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x574e8; continue; case 0x5757c: r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = 32767 << 16; r18 = r18 | 65535; r2 = r0 + 1; r18 = r18 & r3; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ pc=0x57488; continue; case 0x575a0: r2 = r29 + 24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r7 = f20; r2 = r29 + 28; r6 = f21; r4 = r16 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x575c4; pc=0x5d600; run_5d600(); return; case 0x575c4: r4 = r18 >>> 20; r17 = r2 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x57b3c; run_57a00(); return; } r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r5 + r4; r2 = r4 < -1041 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x581f0; run_58000(); return; } r2 = r0 + -1010; r2 = r2 - r4; r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = r18 << (r2&0x1f); case 0x57600: pc=0x57600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57600() throws ExecutionException { /* 0x57600 - 0x57800 */ int addr, tmp; for(;;) { switch(pc) { case 0x57600: r2 = r4 + 1042; r2 = r6 >>> (r2&0x1f); r18 = r18 | r2; case 0x5760c: f0 = r18; { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } if(r18 < 0) { /* Next insn is delay slot */ pc=0x58798; run_58600(); return; } case 0x57620: r2 = f3; r6 = 65040 << 16; r3 = f2; r2 = r6 + r2; r4 = r4 + -1; r19 = r0 + 1; case 0x57638: f4 = r3; f0 = readPages[(r28+-31044)>>>12][((r28+-31044)>>>2)&0x3ff]; f5 = r2; f1 = readPages[(r28+-31048)>>>12][((r28+-31048)>>>2)&0x3ff]; f6 = r4; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31036)>>>12][((r28+-31036)>>>2)&0x3ff]; f1 = readPages[(r28+-31040)>>>12][((r28+-31040)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r28+-31028)>>>12][((r28+-31028)>>>2)&0x3ff]; f1 = readPages[(r28+-31032)>>>12][((r28+-31032)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f0 = readPages[(r28+-31020)>>>12][((r28+-31020)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f6)); f3 = (int)(l >>> 32); f2 = (int)l; } f1 = readPages[(r28+-31024)>>>12][((r28+-31024)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } 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 } fcsr = r2; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; f0 = r0; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x58184; run_58000(); return; } case 0x576dc: r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = (r8&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5814c; run_58000(); return; } r3 = 7 << 16; r2 = r8 << 3; r3 = r3 + 2176; r2 = r2 + r3; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f2 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; f3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x58208; run_58200(); return; } r8 = r8 + -1; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; case 0x57730: r4 = r5 - r4; r23 = r4 + -1; if(r23 < 0) { /* Next insn is delay slot */ pc=0x58174; run_58000(); return; } r18 = r0 + r0; case 0x57744: r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; if(r8 < 0) { /* Next insn is delay slot */ pc=0x5815c; run_58000(); return; } r23 = r23 + r8; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r8; r22 = r0 + r0; case 0x57760: r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r2 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x57b7c; run_57a00(); return; } r2 = r3 < 6 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x58bf8; run_58a00(); return; } r3 = r3 + -4; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r3; r8 = r0 + r0; case 0x5778c: r9 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r2 = r0 + 3; if(r9 == r2) { /* Next insn is delay slot */ pc=0x587b4; run_58600(); return; } r2 = r9 < 4 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5862c; run_58600(); return; } r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r2 = r0 + 4; if(r3 == r2) { /* Next insn is delay slot */ pc=0x583fc; run_58200(); return; } r2 = r0 + 5; if(r3 != r2) { /* Next insn is delay slot */ pc=0x57b80; run_57a00(); return; } r3 = r0 + 1; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r3; case 0x577cc: r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r3 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r9 = r9 + r3; r30 = r9 + 1; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r9; if(r30 <= 0) { /* Next insn is delay slot */ pc=0x58818; run_58800(); return; } r6 = r30 + r0; case 0x577f0: r2 = (r6&0xffffffffL) < (24&0xffffffffL) ? 1 : 0; writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x58c04; run_58c00(); return; } case 0x57800: pc=0x57800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57800() throws ExecutionException { /* 0x57800 - 0x57a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x57800: r3 = r0 + 1; r2 = r0 + 4; case 0x57808: r2 = r2 << 1; r4 = r2 + 20; r4 = ((r6 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r5 = r3 + r0; r3 = r3 + 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x57808; continue; } writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r5; r21 = r6 + r0; case 0x5782c: r4 = r16 + r0; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r8; r21 = (r21&0xffffffffL) < (15&0xffffffffL) ? 1 : 0; /* Next insn is delay slot */ r31=0x57840; pc=0x5b800; run_5b800(); return; case 0x57840: r20 = r2 + r0; writePages[(r16+64)>>>12][((r16+64)>>>2)&0x3ff] = r2; r8 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; if(r21 == r0) { /* Next insn is delay slot */ pc=0x57bb4; run_57a00(); return; } if(r8 == r0) { /* Next insn is delay slot */ pc=0x57bb4; run_57a00(); return; } f8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; if(r8 <= 0) { /* Next insn is delay slot */ pc=0x5882c; run_58800(); return; } r3 = r8 & 15; r2 = 7 << 16; r3 = r3 << 3; r2 = r2 + 2176; r2 = r3 + r2; f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r2 = r8 >> 4; r3 = r2 & 16; if(r3 == r0) { /* Next insn is delay slot */ pc=0x587e0; run_58600(); return; } r3 = 7 << 16; f0 = readPages[(r3+2172)>>>12][((r3+2172)>>>2)&0x3ff]; r2 = r2 & 15; f1 = readPages[(r3+2168)>>>12][((r3+2168)>>>2)&0x3ff]; r8 = r0 + 3; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x578b8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x578f8; continue; } r3 = 7 << 16; r3 = r3 + 2136; case 0x578c8: r4 = r2 & 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x578e8; continue; } f4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r8 = r8 + 1; f5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } case 0x578e8: r2 = r2 >> 1; r3 = r3 + 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x578c8; continue; } case 0x578f8: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x578fc: r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5792c; continue; } f2 = readPages[(r28+-31012)>>>12][((r28+-31012)>>>2)&0x3ff]; f3 = readPages[(r28+-31016)>>>12][((r28+-31016)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x58ab4; run_58a00(); return; } case 0x5792c: f4 = r8; r2 = 64704 << 16; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } r8 = f7; r9 = f6; r8 = r2 + r8; if(r30 == r0) { /* Next insn is delay slot */ pc=0x58700; run_58600(); return; } r2 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r4 = r30 + r0; case 0x5796c: r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r5 = r4 + -1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x58974; run_58800(); return; } r3 = 7 << 16; r5 = r5 << 3; r3 = r3 + 2176; r3 = r5 + r3; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f4 = readPages[(r28+-30980)>>>12][((r28+-30980)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; f5 = readPages[(r28+-30984)>>>12][((r28+-30984)>>>2)&0x3ff]; 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 } 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; r5 = r7 + 48; r5 = r5 << 24; r5 = r5 >> 24; r3 = r20 + 1; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits(((double)f6)); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x57ac0; run_57a00(); return; } case 0x57a00: pc=0x57a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57a00() throws ExecutionException { /* 0x57a00 - 0x57c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x57a00: f10 = readPages[(r28+-31012)>>>12][((r28+-31012)>>>2)&0x3ff]; f11 = readPages[(r28+-31016)>>>12][((r28+-31016)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x58b80; run_58a00(); return; } r5 = r4 < 2 ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x58768; run_58600(); return; } f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; r4 = r20 + r4; f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x57a64; continue; case 0x57a48: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x58b80; run_58a00(); return; } if(r3 == r4) { /* Next insn is delay slot */ pc=0x58768; run_58600(); return; } case 0x57a64: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } 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 } 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); r5 = r5 >> 24; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x57a48; continue; } case 0x57ac0: writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; case 0x57ac4: r4 = r16 + r0; r5 = r17 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x57ad8; pc=0x5ba00; run_5ba00(); return; case 0x57ad8: r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r2 = r8 + 1; r9 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r8 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff] = r2; if(r8 == r0) { /* Next insn is delay slot */ pc=0x58620; run_58600(); return; } writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; r2 = r20 + r0; /* Next insn is delay slot */ pc=0x574e8; run_57400(); return; case 0x57b0c: r2 = 15 << 16; r2 = r2 | 65535; r18 = r18 & r2; if(r18 != r0) { /* Next insn is delay slot */ pc=0x5753c; run_57400(); return; } r2 = 7 << 16; r2 = r2 + 2060; /* Next insn is delay slot */ pc=0x57544; run_57400(); return; case 0x57b30: r3 = r2 + 8; /* Next insn is delay slot */ pc=0x57568; run_57400(); return; case 0x57b3c: r2 = f21; r6 = 15 << 16; r6 = r6 | 65535; r5 = 16368 << 16; r6 = r2 & r6; r2 = r6 | r5; r3 = f20; r4 = r4 + -1023; r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r19 = r0 + r0; /* Next insn is delay slot */ pc=0x57638; run_57600(); return; case 0x57b6c: r2 = 7 << 16; r2 = r2 + 276; /* Next insn is delay slot */ pc=0x574e8; run_57400(); return; case 0x57b7c: writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r0; case 0x57b80: writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; r4 = r16 + r0; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x57b94; pc=0x5b800; run_5b800(); return; case 0x57b94: 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; r30 = r0 + -1; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r9; case 0x57bb4: r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x57d7c; run_57c00(); return; } r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r3 = r8 < 15 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x57d7c; run_57c00(); return; } r3 = 7 << 16; r2 = r8 << 3; r3 = r3 + 2176; r2 = r2 + r3; f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r9 < 0) { /* Next insn is delay slot */ pc=0x58428; run_58400(); return; } case 0x57bfc: f6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; case 0x57c00: pc=0x57c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57c00() throws ExecutionException { /* 0x57c00 - 0x57e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x57c00: f7 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } 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 } fcsr = r2; { long l = Double.doubleToLongBits(((double)f10)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r4 = f10; r3 = r20 + 1; r2 = r4 + 48; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r30 == r2) { /* Next insn is delay slot */ pc=0x57d00; continue; } f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; f8 = r0; f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; f9 = r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; } r2 = r20 + 2; r30 = r20 + r30; /* Next insn is delay slot */ pc=0x57cac; continue; case 0x57c94: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r2 = r2 + 1; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; } case 0x57cac: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } 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 } fcsr = r4; { long l = Double.doubleToLongBits(((double)f10)); f5 = (int)(l >>> 32); f4 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } r5 = f10; r4 = r5 + 48; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r2 != r30) { /* Next insn is delay slot */ pc=0x57c94; continue; } case 0x57d00: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x57d38; continue; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; } r4 = f10; r2 = r4 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; } case 0x57d38: addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; case 0x57d3c: r4 = r0 + 57; /* Next insn is delay slot */ pc=0x57d58; continue; case 0x57d48: if(r20 == r2) { /* Next insn is delay slot */ pc=0x588b4; run_58800(); 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 */ r5 = tmp; r3 = r2 + r0; case 0x57d58: r2 = r3 + -1; if(r5 == r4) { /* Next insn is delay slot */ pc=0x57d48; continue; } r4 = r5 + 1; r4 = r4 << 24; r4 = r4 >> 24; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; case 0x57d7c: r8 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; if(r8 == r0) { /* Next insn is delay slot */ pc=0x581b8; run_58000(); return; } r9 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r9 = r9 < 2 ? 1 : 0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r9; if(r9 != r0) { /* Next insn is delay slot */ pc=0x584fc; run_58400(); return; } r3 = r30 + -1; r2 = r22 < r3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x587c0; run_58600(); return; } r3 = r22 - r3; case 0x57db8: if(r30 < 0) { /* Next insn is delay slot */ pc=0x58a78; run_58a00(); return; } r21 = r18 + r0; r2 = r30 + r0; case 0x57dc8: r4 = r16 + r0; r5 = r0 + 1; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; r18 = r18 + r2; r23 = r23 + r2; /* Next insn is delay slot */ r31=0x57de4; pc=0x5c400; run_5c400(); return; case 0x57de4: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r19 = r2 + r0; case 0x57dec: if(r21 == r0) { /* Next insn is delay slot */ pc=0x57e18; run_57e00(); return; } if(r23 <= 0) { /* Next insn is delay slot */ pc=0x57e18; run_57e00(); return; } r4 = r21 < r23 ? 1 : 0; case 0x57e00: pc=0x57e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_57e00() throws ExecutionException { /* 0x57e00 - 0x58000 */ int addr, tmp; for(;;) { switch(pc) { case 0x57e00: r2 = r23 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x583f0; run_58200(); return; } case 0x57e0c: r18 = r18 - r2; r21 = r21 - r2; r23 = r23 - r2; case 0x57e18: if(r22 <= 0) { /* Next insn is delay slot */ pc=0x57e94; continue; } r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; if(r9 == r0) { /* Next insn is delay slot */ pc=0x58778; run_58600(); return; } if(r3 <= 0) { /* Next insn is delay slot */ pc=0x57e88; continue; } r6 = r3 + r0; r5 = r19 + r0; r4 = r16 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x57e50; pc=0x5ca00; run_5ca00(); return; case 0x57e50: r5 = r2 + r0; r6 = r17 + r0; r4 = r16 + r0; r19 = r2 + r0; /* Next insn is delay slot */ r31=0x57e68; pc=0x5c600; run_5c600(); return; case 0x57e68: r5 = r17 + r0; r4 = r16 + r0; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x57e7c; pc=0x5ba00; run_5ba00(); return; case 0x57e7c: r2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r17 = r2 + r0; case 0x57e88: r6 = r22 - r3; if(r6 != r0) { /* Next insn is delay slot */ pc=0x584a4; run_58400(); return; } case 0x57e94: r4 = r16 + r0; r5 = r0 + 1; /* Next insn is delay slot */ r31=0x57ea4; pc=0x5c400; run_5c400(); return; case 0x57ea4: r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r22 = r2 + r0; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x57ecc; continue; } r4 = r16 + r0; r5 = r2 + r0; r6 = r3 + r0; /* Next insn is delay slot */ r31=0x57ec8; pc=0x5ca00; run_5ca00(); return; case 0x57ec8: r22 = r2 + r0; case 0x57ecc: r7 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r7 != r0) { /* Next insn is delay slot */ pc=0x583a0; run_58200(); return; } case 0x57edc: writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; case 0x57ee0: r7 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; if(r7 != r0) { /* Next insn is delay slot */ pc=0x585f0; run_58400(); return; } r2 = r0 + 1; case 0x57ef4: r2 = r2 + r23; r2 = r2 & 31; if(r2 == r0) { /* Next insn is delay slot */ pc=0x581d8; run_58000(); return; } r3 = r0 + 32; r3 = r3 - r2; r4 = r3 < 5 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x58bdc; run_58a00(); return; } r3 = r0 + 28; r2 = r3 - r2; r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; case 0x57f2c: if(r18 <= 0) { /* Next insn is delay slot */ pc=0x57f4c; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x57f48; pc=0x5cc00; run_5cc00(); return; case 0x57f48: r17 = r2 + r0; case 0x57f4c: if(r23 <= 0) { /* Next insn is delay slot */ pc=0x57f6c; continue; } r5 = r22 + r0; r4 = r16 + r0; r6 = r23 + r0; /* Next insn is delay slot */ r31=0x57f68; pc=0x5cc00; run_5cc00(); return; case 0x57f68: r22 = r2 + r0; case 0x57f6c: r8 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r8 != r0) { /* Next insn is delay slot */ pc=0x58348; run_58200(); return; } case 0x57f7c: if(r30 <= 0) { /* Next insn is delay slot */ pc=0x58644; run_58600(); return; } case 0x57f84: r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; if(r9 == r0) { /* Next insn is delay slot */ pc=0x58214; run_58200(); return; } if(r21 <= 0) { /* Next insn is delay slot */ pc=0x57fb4; continue; } r5 = r19 + r0; r4 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x57fb0; pc=0x5cc00; run_5cc00(); return; case 0x57fb0: r19 = r2 + r0; case 0x57fb4: r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x588d8; run_58800(); return; } r21 = r19 + r0; case 0x57fc8: r8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r30 = r20 + r30; r8 = r8 & 1; r18 = r20 + 1; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r8; case 0x57fe0: r9 = r18 + -1; r4 = r17 + r0; r5 = r22 + r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x57ff8; pc=0x57000; run_57000(); return; case 0x57ff8: r4 = r17 + r0; r5 = r19 + r0; case 0x58000: pc=0x58000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58000() throws ExecutionException { /* 0x58000 - 0x58200 */ int addr, tmp; for(;;) { switch(pc) { case 0x58000: writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r23 = r2 + 48; /* Next insn is delay slot */ r31=0x58010; pc=0x5ce00; run_5ce00(); return; case 0x58010: r4 = r16 + r0; r5 = r22 + r0; r6 = r21 + r0; r30 = r2 + r0; /* Next insn is delay slot */ r31=0x58028; pc=0x5d000; run_5d000(); return; case 0x58028: r3 = r2 + r0; r2 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x585d4; run_58400(); return; } r5 = r3 + r0; r4 = r17 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x58050; pc=0x5ce00; run_5ce00(); return; case 0x58050: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r4 = r16 + r0; r5 = r3 + r0; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x58068; pc=0x5ba00; run_5ba00(); return; case 0x58068: r2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x58098; continue; } r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x58098; continue; } r8 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; if(r8 == r0) { /* Next insn is delay slot */ pc=0x58590; run_58400(); return; } case 0x58098: if(r30 < 0) { /* Next insn is delay slot */ pc=0x58524; run_58400(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x580c8; continue; } r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; if(r8 != r0) { /* Next insn is delay slot */ pc=0x580c8; continue; } r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; if(r9 == r0) { /* Next insn is delay slot */ pc=0x58524; run_58400(); return; } case 0x580c8: if(r2 > 0) { /* Next insn is delay slot */ pc=0x58928; run_58800(); return; } r8 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r3 = r18 + r0; addr=r18+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r18 == r8) { /* Next insn is delay slot */ pc=0x58954; run_58800(); return; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x580fc; pc=0x5bc00; run_5bc00(); return; case 0x580fc: r17 = r2 + r0; r4 = r16 + r0; r5 = r19 + r0; r6 = r0 + 10; r7 = r0 + r0; if(r19 == r21) { /* Next insn is delay slot */ pc=0x585b8; run_58400(); return; } /* Next insn is delay slot */ r31=0x58120; pc=0x5bc00; run_5bc00(); return; case 0x58120: r5 = r21 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; r19 = r2 + r0; /* Next insn is delay slot */ r31=0x5813c; pc=0x5bc00; run_5bc00(); return; case 0x5813c: r21 = r2 + r0; r18 = r18 + 1; /* Next insn is delay slot */ pc=0x57fe0; run_57e00(); return; case 0x5814c: r3 = r0 + 1; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x57730; run_57600(); return; case 0x5815c: r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; r18 = r18 - r9; r22 = r0 - r9; /* Next insn is delay slot */ pc=0x57760; run_57600(); return; case 0x58174: r18 = r0 - r23; r23 = r0 + r0; /* Next insn is delay slot */ pc=0x57744; run_57600(); return; case 0x58184: f4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; { long l = Double.doubleToLongBits(((double)f4)); f1 = (int)(l >>> 32); f0 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x576dc; run_57600(); return; } r3 = f4; r3 = r3 + -1; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x576dc; run_57600(); return; case 0x581b8: r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r3 = r22 + r0; r8 = r8 < 2 ? 1 : 0; r21 = r18 + r0; r19 = r0 + r0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ pc=0x57dec; run_57c00(); return; case 0x581d8: r2 = r0 + 28; case 0x581dc: r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; /* Next insn is delay slot */ pc=0x57f2c; run_57e00(); return; case 0x581f0: r18 = r0 + -1042; r7 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = r18 - r4; r18 = r7 << (r18&0x1f); case 0x58200: pc=0x58200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58200() throws ExecutionException { /* 0x58200 - 0x58400 */ int addr, tmp; for(;;) { switch(pc) { case 0x58200: /* Next insn is delay slot */ pc=0x5760c; run_57600(); return; case 0x58208: writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x57730; run_57600(); return; case 0x58214: r18 = r20 + r0; /* Next insn is delay slot */ pc=0x5823c; continue; case 0x58220: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x58238; pc=0x5bc00; run_5bc00(); return; case 0x58238: r17 = r2 + r0; case 0x5823c: r4 = r17 + r0; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x5824c; pc=0x57000; run_57000(); return; case 0x5824c: r18 = r18 + 1; r23 = r2 + 48; r2 = r18 - r20; r2 = r2 < r30 ? 1 : 0; addr=r18+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x58220; continue; } if(r30 <= 0) { /* Next insn is delay slot */ pc=0x58518; run_58400(); return; } case 0x58270: r3 = r20 + r30; r18 = r0 + r0; case 0x58278: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x58290; pc=0x5cc00; run_5cc00(); return; case 0x58290: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x582a4; pc=0x5ce00; run_5ce00(); return; case 0x582a4: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x584c0; run_58400(); return; } case 0x582b0: addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; case 0x582b4: r5 = r0 + 57; /* Next insn is delay slot */ pc=0x582d0; continue; case 0x582c0: if(r20 == r2) { /* Next insn is delay slot */ pc=0x586b4; run_58600(); return; } addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r2 + r0; case 0x582d0: r2 = r3 + -1; if(r4 == r5) { /* Next insn is delay slot */ pc=0x582c0; continue; } r4 = r4 + 1; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x582e4: r4 = r16 + r0; r5 = r22 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x582f8; pc=0x5ba00; run_5ba00(); return; case 0x582f8: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; if(r19 == r0) { /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; } if(r18 == r0) { /* Next insn is delay slot */ pc=0x58328; continue; } if(r18 == r19) { /* Next insn is delay slot */ pc=0x58328; continue; } r4 = r16 + r0; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x58324; pc=0x5ba00; run_5ba00(); return; case 0x58324: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; case 0x58328: r4 = r16 + r0; r5 = r19 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x5833c; pc=0x5ba00; run_5ba00(); return; case 0x5833c: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; case 0x58348: r4 = r17 + r0; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x58358; pc=0x5ce00; run_5ce00(); return; case 0x58358: if(r2 >= 0) { /* Next insn is delay slot */ pc=0x57f7c; run_57e00(); return; } r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r5 = r17 + r0; r9 = r9 + -1; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x58384; pc=0x5bc00; run_5bc00(); return; case 0x58384: r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = r2 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x58ba8; run_58a00(); return; } r30 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x57f7c; run_57e00(); return; case 0x583a0: r8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; if(r8 != r0) { /* Next insn is delay slot */ pc=0x57edc; run_57e00(); return; } r2 = 15 << 16; r9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r2 | 65535; r2 = r2 & r9; if(r2 != r0) { /* Next insn is delay slot */ pc=0x57edc; run_57e00(); return; } r2 = 32752 << 16; r2 = r2 & r9; if(r2 == r0) { /* Next insn is delay slot */ pc=0x57edc; run_57e00(); return; } r3 = r0 + 1; r18 = r18 + 1; r23 = r23 + 1; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x57ee0; run_57e00(); return; case 0x583f0: r2 = r21 + r0; /* Next insn is delay slot */ pc=0x57e0c; run_57e00(); return; case 0x583fc: r9 = r0 + 1; case 0x58400: pc=0x58400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58400() throws ExecutionException { /* 0x58400 - 0x58600 */ int addr, tmp; for(;;) { switch(pc) { case 0x58400: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r9; case 0x58404: r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; if(r4 <= 0) { /* Next insn is delay slot */ pc=0x587f0; run_58600(); return; } r6 = r4 + r0; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; r30 = r4 + r0; /* Next insn is delay slot */ pc=0x577f0; run_57600(); return; case 0x58428: if(r30 > 0) { /* Next insn is delay slot */ pc=0x57bfc; run_57a00(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x58758; run_58600(); return; } f0 = readPages[(r28+-30988)>>>12][((r28+-30988)>>>2)&0x3ff]; r22 = r0 + r0; f1 = readPages[(r28+-30992)>>>12][((r28+-30992)>>>2)&0x3ff]; r19 = r0 + r0; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } f0 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f1 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x58694; run_58600(); return; } case 0x5846c: r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r3 = r20 + r0; r9 = ~(r0 | r9); writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; case 0x5847c: r4 = r16 + r0; r5 = r22 + r0; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x58490; pc=0x5ba00; run_5ba00(); return; case 0x58490: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; if(r19 != r0) { /* Next insn is delay slot */ pc=0x58328; run_58200(); return; } /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; case 0x584a4: r5 = r17 + r0; r4 = r16 + r0; /* Next insn is delay slot */ r31=0x584b4; pc=0x5ca00; run_5ca00(); return; case 0x584b4: r17 = r2 + r0; /* Next insn is delay slot */ pc=0x57e94; run_57e00(); return; case 0x584c0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x584d4; continue; } r23 = r23 & 1; if(r23 != r0) { /* Next insn is delay slot */ pc=0x582b0; run_58200(); return; } case 0x584d4: r5 = r0 + 48; /* Next insn is delay slot */ pc=0x584e4; continue; case 0x584e0: r3 = r4 + r0; case 0x584e4: addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = r3 + -1; if(r2 == r5) { /* Next insn is delay slot */ pc=0x584e0; continue; } /* Next insn is delay slot */ pc=0x582e4; run_58200(); return; case 0x584fc: if(r19 == r0) { /* Next insn is delay slot */ pc=0x58a88; run_58a00(); return; } r2 = r2 + 1075; r3 = r22 + r0; r21 = r18 + r0; /* Next insn is delay slot */ pc=0x57dc8; run_57c00(); return; case 0x58518: r30 = r0 + 1; /* Next insn is delay slot */ pc=0x58270; run_58200(); return; case 0x58524: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x58574; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; /* Next insn is delay slot */ r31=0x58540; pc=0x5cc00; run_5cc00(); return; case 0x58540: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; /* Next insn is delay slot */ r31=0x58554; pc=0x5ce00; run_5ce00(); return; case 0x58554: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x58b8c; run_58a00(); return; } case 0x5855c: r2 = r0 + 57; if(r23 == r2) { /* Next insn is delay slot */ pc=0x58b1c; run_58a00(); return; } r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r23 = r3 + 49; case 0x58574: r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = r19 + r0; r3 = r7 + 1; addr=r7+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = r21 + r0; /* Next insn is delay slot */ pc=0x582e4; run_58200(); return; case 0x58590: r2 = r0 + 57; if(r23 == r2) { /* Next insn is delay slot */ pc=0x58b1c; run_58a00(); return; } if(r30 <= 0) { /* Next insn is delay slot */ pc=0x58574; continue; } r9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r23 = r9 + 49; /* Next insn is delay slot */ pc=0x58574; continue; case 0x585b8: /* Next insn is delay slot */ r31=0x585c0; pc=0x5bc00; run_5bc00(); return; case 0x585c0: r19 = r2 + r0; r21 = r2 + r0; r18 = r18 + 1; /* Next insn is delay slot */ pc=0x57fe0; run_57e00(); return; case 0x585d4: r4 = r16 + r0; r5 = r3 + r0; /* Next insn is delay slot */ r31=0x585e4; pc=0x5ba00; run_5ba00(); return; case 0x585e4: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x58098; run_58000(); return; case 0x585f0: r2 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; r2 = r2 + 3; r2 = r2 << 2; case 0x58600: pc=0x58600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58600() throws ExecutionException { /* 0x58600 - 0x58800 */ int addr, tmp; for(;;) { switch(pc) { case 0x58600: r2 = r22 + r2; r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x58610; pc=0x5c000; run_5c000(); return; case 0x58610: r3 = r0 + 32; r2 = r3 - r2; /* Next insn is delay slot */ pc=0x57ef4; run_57e00(); return; case 0x58620: r2 = r20 + r0; /* Next insn is delay slot */ pc=0x574e8; run_57400(); return; case 0x5862c: r2 = r0 + 2; if(r9 != r2) { /* Next insn is delay slot */ pc=0x57b80; run_57a00(); return; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x58404; run_58400(); return; case 0x58644: r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r2 = r8 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x57f84; run_57e00(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x5846c; run_58400(); return; } r5 = r22 + r0; r4 = r16 + r0; r6 = r0 + 5; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x58678; pc=0x5bc00; run_5bc00(); return; case 0x58678: r5 = r2 + r0; r4 = r17 + r0; r22 = r2 + r0; /* Next insn is delay slot */ r31=0x5868c; pc=0x5ce00; run_5ce00(); return; case 0x5868c: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x5846c; run_58400(); return; } case 0x58694: r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 49; r8 = r8 + 1; r3 = r20 + 1; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ pc=0x5847c; run_58400(); return; case 0x586b4: r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 49; r9 = r9 + 1; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x582e4; run_58200(); return; case 0x586d0: f4 = r8; r2 = 64704 << 16; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } r8 = f7; r9 = f6; r8 = r2 + r8; case 0x58700: f2 = readPages[(r28+-30988)>>>12][((r28+-30988)>>>2)&0x3ff]; f3 = readPages[(r28+-30992)>>>12][((r28+-30992)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = r9; f3 = r8; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x58964; run_58800(); return; } r4 = 32768 << 16; f2 = r9; r2 = r4 ^ r8; f3 = r2; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x58768; continue; } case 0x58758: r22 = r0 + r0; r19 = r0 + r0; /* Next insn is delay slot */ pc=0x5846c; run_58400(); return; case 0x58768: writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f8; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f9; /* Next insn is delay slot */ pc=0x57bb4; run_57a00(); return; case 0x58778: r5 = r17 + r0; r4 = r16 + r0; r6 = r22 + r0; /* Next insn is delay slot */ r31=0x5878c; pc=0x5ca00; run_5ca00(); return; case 0x5878c: r17 = r2 + r0; /* Next insn is delay slot */ pc=0x57e94; run_57e00(); return; case 0x58798: f0 = readPages[(r28+-31052)>>>12][((r28+-31052)>>>2)&0x3ff]; f1 = readPages[(r28+-31056)>>>12][((r28+-31056)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } /* Next insn is delay slot */ pc=0x57620; run_57600(); return; case 0x587b4: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x577cc; run_57600(); return; case 0x587c0: r7 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r22 = r3 - r22; r7 = r7 + r22; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r7; r22 = r3 + r0; r3 = r0 + r0; /* Next insn is delay slot */ pc=0x57db8; run_57c00(); return; case 0x587e0: f0 = f8; f1 = f9; r8 = r0 + 2; /* Next insn is delay slot */ pc=0x578b8; run_57800(); return; case 0x587f0: r3 = r0 + 1; r4 = r0 + 1; r21 = r0 + 1; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r3; case 0x58800: pc=0x58800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58800() throws ExecutionException { /* 0x58800 - 0x58a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x58800: r30 = r0 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; r5 = r0 + r0; /* Next insn is delay slot */ pc=0x5782c; run_57800(); return; case 0x58818: r21 = r30 + r0; writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; r5 = r0 + r0; /* Next insn is delay slot */ pc=0x5782c; run_57800(); return; case 0x5882c: r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 - r9; if(r2 == r0) { /* Next insn is delay slot */ pc=0x58aa4; run_58a00(); return; } r4 = r2 & 15; r3 = 7 << 16; r4 = r4 << 3; r3 = r3 + 2176; r3 = r4 + r3; f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r2 = r2 >> 4; f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x58bd0; run_58a00(); return; } r3 = 7 << 16; r3 = r3 + 2136; r8 = r0 + 2; case 0x5887c: r4 = r2 & 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5889c; continue; } f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r8 = r8 + 1; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x5889c: r2 = r2 >> 1; r3 = r3 + 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5887c; continue; } /* Next insn is delay slot */ pc=0x578fc; run_57800(); return; case 0x588b4: r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r4 = r0 + 48; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r8 = r8 + 1; r4 = r0 + 49; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; case 0x588d8: r5 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; r4 = r16 + r0; /* Next insn is delay slot */ r31=0x588e8; pc=0x5b800; run_5b800(); return; case 0x588e8: r6 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; r18 = r2 + r0; r6 = r6 + 2; r4 = r2 + 12; r5 = r19 + 12; r6 = r6 << 2; /* Next insn is delay slot */ r31=0x58908; pc=0x48fdc; run_48e00(); return; case 0x58908: r4 = r16 + r0; r5 = r18 + r0; r6 = r0 + 1; /* Next insn is delay slot */ r31=0x5891c; pc=0x5cc00; run_5cc00(); return; case 0x5891c: r21 = r2 + r0; /* Next insn is delay slot */ pc=0x57fc8; run_57e00(); return; case 0x58928: r2 = r0 + 57; if(r23 == r2) { /* Next insn is delay slot */ pc=0x58b1c; run_58a00(); return; } r9 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r23 = r23 + 1; r18 = r19 + r0; r3 = r9 + 1; addr=r9+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = r21 + r0; /* Next insn is delay slot */ pc=0x582e4; run_58200(); return; case 0x58954: r18 = r19 + r0; r19 = r21 + r0; /* Next insn is delay slot */ pc=0x58278; run_58200(); return; case 0x58964: r22 = r0 + r0; r19 = r0 + r0; /* Next insn is delay slot */ pc=0x58694; run_58600(); return; case 0x58974: r3 = 7 << 16; r6 = r5 << 3; r3 = r3 + 2176; r3 = r6 + r3; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f4 = r9; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; f5 = r8; r3 = r20 + 1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } 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 } fcsr = r6; r7 = f4; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } r6 = r7 + 48; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r6 = r0 + 1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r4 == r6) { /* Next insn is delay slot */ pc=0x58a44; run_58a00(); return; } f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; r4 = r20 + r4; f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; r6 = r3 + r0; case 0x589f4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r6 = r6 + 1; r8 = fcsr; case 0x58a00: pc=0x58a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58a00() throws ExecutionException { /* 0x58a00 - 0x58c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x58a00: 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 } fcsr = r8; r9 = f4; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } r10 = r9 + 48; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } addr=r6+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r10&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r6 != r4) { /* Next insn is delay slot */ pc=0x589f4; run_58800(); return; } r3 = r3 + r5; case 0x58a44: f2 = readPages[(r28+-30980)>>>12][((r28+-30980)>>>2)&0x3ff]; f3 = readPages[(r28+-30984)>>>12][((r28+-30984)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x58b40; 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 */ r5 = tmp; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x57d3c; run_57c00(); return; case 0x58a78: r21 = r18 - r30; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x57dc8; run_57c00(); return; case 0x58a88: r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r3 = r0 + 54; r2 = r3 - r2; r21 = r18 + r0; r3 = r22 + r0; /* Next insn is delay slot */ pc=0x57dc8; run_57c00(); return; case 0x58aa4: f0 = f8; f1 = f9; r8 = r0 + 2; /* Next insn is delay slot */ pc=0x578fc; run_57800(); return; case 0x58ab4: if(r30 == r0) { /* Next insn is delay slot */ pc=0x586d0; run_58600(); return; } r9 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; if(r9 <= 0) { /* Next insn is delay slot */ pc=0x58768; run_58600(); return; } f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; r8 = r8 + 1; f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; f4 = r8; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } r3 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = r3 + -1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; r3 = 64704 << 16; f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } r8 = f7; r9 = f6; r8 = r3 + r8; /* Next insn is delay slot */ pc=0x5796c; run_57800(); return; case 0x58b1c: r8 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; 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; r19 = r21 + r0; r4 = r0 + 57; /* Next insn is delay slot */ pc=0x582b4; run_58200(); return; case 0x58b40: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x58768; run_58600(); return; } r6 = r0 + 48; /* Next insn is delay slot */ pc=0x58b64; continue; case 0x58b60: r3 = r5 + r0; case 0x58b64: addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r5 = r3 + -1; if(r4 == r6) { /* Next insn is delay slot */ pc=0x58b60; continue; } writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x57ac4; run_57a00(); return; case 0x58b80: writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x57d3c; run_57c00(); return; case 0x58b8c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x58574; run_58400(); return; } r2 = r23 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x58574; run_58400(); return; } /* Next insn is delay slot */ pc=0x5855c; run_58400(); return; case 0x58ba8: r5 = r19 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x58bc0; pc=0x5bc00; run_5bc00(); return; case 0x58bc0: r19 = r2 + r0; r30 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x57f7c; run_57e00(); return; case 0x58bd0: r8 = r0 + 2; /* Next insn is delay slot */ pc=0x578fc; run_57800(); return; case 0x58bdc: r4 = r0 + 4; if(r3 == r4) { /* Next insn is delay slot */ pc=0x57f2c; run_57e00(); return; } r3 = r0 + 60; r2 = r3 - r2; /* Next insn is delay slot */ pc=0x581dc; run_58000(); return; case 0x58bf8: r8 = r0 + 1; /* Next insn is delay slot */ pc=0x5778c; run_57600(); return; case 0x58c00: pc=0x58c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58c00() throws ExecutionException { /* 0x58c00 - 0x58e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x58c00: case 0x58c04: r21 = r6 + r0; r5 = r0 + r0; /* Next insn is delay slot */ pc=0x5782c; run_57800(); return; case 0x58e00: pc=0x58e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_58e00() throws ExecutionException { /* 0x58e00 - 0x59000 */ int addr, tmp; for(;;) { switch(pc) { case 0x58e00: /* Next insn is delay slot */ pc=r31; return; case 0x59000: pc=0x59000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59000() throws ExecutionException { /* 0x59000 - 0x59200 */ int addr, tmp; for(;;) { switch(pc) { case 0x59000: /* Next insn is delay slot */ pc=r31; return; case 0x59200: pc=0x59200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59200() throws ExecutionException { /* 0x59200 - 0x59400 */ int addr, tmp; for(;;) { switch(pc) { case 0x59200: r2 = r6 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x593a4; continue; } r29 = r29 + -56; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r21 = r4 + r0; r22 = r5 + r0; r17 = r7 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x59254; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59340; continue; } case 0x59254: r18 = r6 + -1; r19 = r22 + r0; /* Next insn is delay slot */ pc=0x592d0; continue; case 0x59264: r2 = ((r18 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; r20 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59278; continue; } r16 = r18 + r0; case 0x59278: r4 = r20 + r0; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x5928c; pc=0x5b400; run_5b400(); return; case 0x5928c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x59358; continue; } r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r4 = r19 + r0; r2 = r2 - r16; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r5 = r20 + r0; r2 = r2 + r16; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r6 = r16 + r0; r18 = r18 - r16; /* Next insn is delay slot */ r31=0x592c4; pc=0x48fdc; run_48e00(); return; case 0x592c4: r19 = r19 + r16; if(r18 == r0) { /* Next insn is delay slot */ pc=0x5930c; continue; } case 0x592d0: r16 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; if(r16 != r0) { /* Next insn is delay slot */ pc=0x59264; continue; } r4 = r21 + r0; r5 = r17 + r0; /* Next insn is delay slot */ r31=0x592f0; pc=0x41200; run_41200(); return; case 0x592f0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x59304; continue; } r16 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x59264; continue; case 0x59304: if(r19 == r22) { /* Next insn is delay slot */ pc=0x59398; continue; } case 0x5930c: addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r22 + r0; case 0x59314: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x59340: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x5934c; pc=0x3a600; run_3a600(); return; case 0x5934c: r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x59254; continue; case 0x59358: r2 = r2 + 1; r3 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r16 = r2 - r20; r3 = r3 - r16; r6 = r16 + r0; writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r3; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r4 = r19 + r0; r5 = r20 + r0; r16 = r19 + r16; /* Next insn is delay slot */ r31=0x59388; pc=0x48fdc; run_48e00(); return; case 0x59388: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r22 + r0; /* Next insn is delay slot */ pc=0x59314; continue; case 0x59398: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x59314; continue; case 0x593a4: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x59400: pc=0x59400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59400() throws ExecutionException { /* 0x59400 - 0x59600 */ int addr, tmp; for(;;) { switch(pc) { case 0x59400: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x59200; run_59200(); return; case 0x59600: pc=0x59600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59600() throws ExecutionException { /* 0x59600 - 0x59800 */ int addr, tmp; for(;;) { switch(pc) { case 0x59600: addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 114; if(r2 == r3) { /* Next insn is delay slot */ pc=0x59698; continue; } r3 = r0 + 119; if(r2 == r3) { /* Next insn is delay slot */ pc=0x59684; continue; } r3 = r0 + 97; if(r2 == r3) { /* Next insn is delay slot */ pc=0x5963c; continue; } r2 = r0 + 22; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5963c: r7 = r0 + 520; r4 = r0 + 1; r2 = r0 + 264; case 0x59648: addr=r5+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x59674; continue; } r8 = r0 + 43; if(r3 == r8) { /* Next insn is delay slot */ pc=0x596ac; 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 */ r3 = tmp; if(r3 == r8) { /* Next insn is delay slot */ pc=0x596ac; continue; } case 0x59674: r4 = r4 | r7; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=r31; return; case 0x59684: r7 = r0 + 1536; r4 = r0 + 1; r2 = r0 + 8; /* Next insn is delay slot */ pc=0x59648; continue; case 0x59698: r7 = r0 + r0; r4 = r0 + r0; r2 = r0 + 4; /* Next insn is delay slot */ pc=0x59648; continue; case 0x596ac: 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; return; case 0x59800: pc=0x59800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59800() throws ExecutionException { /* 0x59800 - 0x59a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x59800: r29 = r29 + -56; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r5 + r0; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; r16 = r6 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x59828; pc=0x10268; run_10200(); return; case 0x59828: writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r29 + 28; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; if(r17 == r0) { /* Next insn is delay slot */ pc=0x59858; continue; } r2 = readPages[(r17+56)>>>12][((r17+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x598b0; continue; } case 0x59858: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 8192; if(r3 != r0) { /* Next insn is delay slot */ pc=0x59884; continue; } r2 = r2 | 8192; r3 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + -8193; r2 = r3 & r2; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; case 0x59884: r4 = r17 + r0; r5 = r16 + r0; r6 = r29 + 16; /* Next insn is delay slot */ r31=0x59898; pc=0x59c00; run_59c00(); return; case 0x59898: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x598b0: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x598bc; pc=0x3a600; run_3a600(); return; case 0x598bc: /* Next insn is delay slot */ pc=0x59858; continue; case 0x59a00: pc=0x59a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59a00() throws ExecutionException { /* 0x59a00 - 0x59c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x59a00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x59800; run_59800(); return; case 0x59c00: pc=0x59c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59c00() throws ExecutionException { /* 0x59c00 - 0x59e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x59c00: r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; 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; r19 = r6 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59cd4; continue; } addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r21 = r4 + r0; r3 = r2 & 8; r16 = r5 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x59d0c; continue; } r3 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x59d0c; continue; } r3 = r2 & 2; r17 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x59d38; continue; } case 0x59c74: r20 = r0 + r0; r18 = r0 + r0; case 0x59c7c: if(r18 == r0) { /* Next insn is delay slot */ pc=0x59dfc; continue; } r2 = (r18&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r7 = r18 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x59c9c; continue; } r7 = r0 + 1024; case 0x59c9c: r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; r4 = r21 + r0; r6 = r20 + r0; /* Next insn is delay slot */ pc=r2; r31=0x59cb0; return; case 0x59cb0: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x59e3c; run_59e00(); return; } r3 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; r20 = r20 + r2; r18 = r18 - r2; r2 = r3 - r2; writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x59c7c; continue; } case 0x59cd4: r2 = r0 + r0; case 0x59cd8: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x59d0c: r4 = r21 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x59d1c; pc=0x48600; run_48600(); return; case 0x59d1c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a1ec; run_5a000(); return; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r17 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; r3 = r2 & 2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x59c74; continue; } case 0x59d38: r3 = r2 & 1; r22 = r0 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x59e58; run_59e00(); return; } r18 = r0 + r0; case 0x59d4c: if(r18 == r0) { /* Next insn is delay slot */ pc=0x59de8; continue; } case 0x59d54: r3 = r2 & 512; r20 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x59f38; run_59e00(); return; } r3 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5a000; run_5a000(); return; } r3 = r2 & 1152; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5a084; run_5a000(); return; } r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r23 = r20 + r0; r30 = r20 + r0; r20 = r18 + r0; case 0x59d8c: r5 = r22 + r0; r6 = r23 + r0; /* Next insn is delay slot */ r31=0x59d9c; pc=0x5b600; run_5b600(); return; case 0x59d9c: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r30 = r2 - r30; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r30; r3 = r2 + r23; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; r2 = r18 + r0; case 0x59dbc: r22 = r22 + r2; r18 = r18 - r2; r2 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; r20 = r2 - r20; writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r20; if(r20 == r0) { /* Next insn is delay slot */ pc=0x59cd4; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; if(r18 != r0) { /* Next insn is delay slot */ pc=0x59d54; continue; } case 0x59de8: r22 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r17 = r17 + 8; /* Next insn is delay slot */ pc=0x59d4c; continue; case 0x59dfc: r20 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; case 0x59e00: pc=0x59e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_59e00() throws ExecutionException { /* 0x59e00 - 0x5a000 */ int addr, tmp; for(;;) { switch(pc) { case 0x59e00: r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r17 = r17 + 8; /* Next insn is delay slot */ pc=0x59c7c; run_59c00(); return; case 0x59e10: /* Next insn is delay slot */ r31=0x59e18; pc=0x40800; run_40800(); return; case 0x59e18: r30 = r2 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a110; run_5a000(); return; } r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r4 = r21 + r0; /* Next insn is delay slot */ r31=0x59e34; pc=0x3ca00; run_3ca00(); return; case 0x59e34: r2 = r0 + 12; writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; case 0x59e3c: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; 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; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x59cd8; run_59c00(); return; case 0x59e58: r3 = r0 + r0; r30 = r0 + r0; r18 = r0 + r0; case 0x59e64: if(r18 == r0) { /* Next insn is delay slot */ pc=0x59f20; continue; } case 0x59e6c: if(r3 == r0) { /* Next insn is delay slot */ pc=0x5a054; run_5a000(); return; } case 0x59e74: r2 = ((r18 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59e88; continue; } r23 = r18 + r0; case 0x59e88: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r20 = r23 + r0; r2 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59eb8; continue; } r8 = r6 + r7; r2 = r8 < r23 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a13c; run_5a000(); return; } case 0x59eb8: r2 = r23 < r7 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x59fa0; continue; } r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r21 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r6 = r30 + r0; /* Next insn is delay slot */ pc=r2; r31=0x59ee0; return; case 0x59ee0: r20 = r2 + r0; r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x59e3c; continue; } case 0x59ef0: r22 = r22 - r20; if(r22 == r0) { /* Next insn is delay slot */ pc=0x59fdc; continue; } case 0x59efc: r2 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; r30 = r30 + r20; r18 = r18 - r20; r20 = r2 - r20; writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r20; if(r20 == r0) { /* Next insn is delay slot */ pc=0x59cd4; run_59c00(); return; } if(r18 != r0) { /* Next insn is delay slot */ pc=0x59e6c; continue; } case 0x59f20: r30 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r3 = r0 + r0; r17 = r17 + 8; /* Next insn is delay slot */ pc=0x59e64; continue; case 0x59f38: r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r2 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59f5c; continue; } r2 = ((r20 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a190; run_5a000(); return; } case 0x59f5c: r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r2 = ((r18 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a018; run_5a000(); return; } r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; r4 = r21 + r0; r6 = r22 + r0; /* Next insn is delay slot */ pc=r2; r31=0x59f88; return; case 0x59f88: r20 = r2 + r0; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x59e3c; continue; } r2 = r20 + r0; /* Next insn is delay slot */ pc=0x59dbc; run_59c00(); return; case 0x59fa0: r6 = r23 + r0; r5 = r30 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x59fb4; pc=0x5b600; run_5b600(); return; case 0x59fb4: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; 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]; r23 = r2 + r23; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r23; if(r22 != r0) { /* Next insn is delay slot */ pc=0x59efc; continue; } case 0x59fdc: r4 = r21 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x59fec; pc=0x39800; run_39800(); return; case 0x59fec: if(r2 != r0) { /* Next insn is delay slot */ pc=0x59e3c; continue; } r3 = r0 + r0; /* Next insn is delay slot */ pc=0x59efc; continue; case 0x5a000: pc=0x5a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5a000() throws ExecutionException { /* 0x5a000 - 0x5a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5a000: r30 = r18 + r0; r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r20 = r18 + r0; r23 = r18 + r0; /* Next insn is delay slot */ pc=0x59d8c; run_59c00(); return; case 0x5a018: r5 = r22 + r0; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x5a028; pc=0x5b600; run_5b600(); return; case 0x5a028: r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r20 = r18 + r0; r2 = r2 - r18; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r2 = r2 + r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r2 = r18 + r0; /* Next insn is delay slot */ pc=0x59dbc; run_59c00(); return; case 0x5a054: r4 = r30 + r0; r5 = r0 + 10; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x5a068; pc=0x5b400; run_5b400(); return; case 0x5a068: if(r2 == r0) { /* Next insn is delay slot */ pc=0x5a1dc; continue; } r22 = r2 + 1; r22 = r22 - r30; r3 = r0 + 1; /* Next insn is delay slot */ pc=0x59e74; run_59e00(); return; case 0x5a084: r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r6 = r4 << 1; r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r6 + r4; r20 = r4 >>> 31; r23 = r3 - r5; r4 = r20 + r4; r6 = r23 + 1; r20 = r4 >> 1; r6 = r6 + r18; r4 = ((r20 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5a1d0; continue; } r20 = r6 + r0; case 0x5a0c0: r2 = r2 & 1024; r4 = r21 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59e10; run_59e00(); return; } r5 = r6 + r0; /* Next insn is delay slot */ r31=0x5a0dc; pc=0x3ec00; run_3ec00(); return; case 0x5a0dc: r30 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x59e34; run_59e00(); return; } r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r4 = r2 + r0; r6 = r23 + r0; /* Next insn is delay slot */ r31=0x5a0fc; pc=0x48fdc; run_48e00(); return; case 0x5a0fc: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r0 + -1153; r2 = r2 & r3; r2 = r2 | 128; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x5a110: 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; r30 = r18 + r0; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; r20 = r18 + r0; r23 = r18 + r0; /* Next insn is delay slot */ pc=0x59d8c; run_59c00(); return; case 0x5a13c: r6 = r8 + r0; r5 = r30 + r0; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r8; /* Next insn is delay slot */ r31=0x5a154; pc=0x5b600; run_5b600(); return; case 0x5a154: r8 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r21 + r0; r2 = r2 + r8; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x5a174; pc=0x39800; run_39800(); return; case 0x5a174: r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r8 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x59e3c; run_59e00(); return; } r20 = r8 + r0; /* Next insn is delay slot */ pc=0x59ef0; run_59e00(); return; case 0x5a190: r5 = r22 + r0; r6 = r20 + r0; /* Next insn is delay slot */ r31=0x5a1a0; pc=0x5b600; run_5b600(); return; case 0x5a1a0: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r21 + r0; r2 = r2 + r20; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x5a1bc; pc=0x39800; run_39800(); return; case 0x5a1bc: if(r2 != r0) { /* Next insn is delay slot */ pc=0x59e3c; run_59e00(); return; } r2 = r20 + r0; /* Next insn is delay slot */ pc=0x59dbc; run_59c00(); return; case 0x5a1d0: r6 = r20 + r0; /* Next insn is delay slot */ pc=0x5a0c0; continue; case 0x5a1dc: r22 = r18 + 1; r3 = r0 + 1; /* Next insn is delay slot */ pc=0x59e74; run_59e00(); return; case 0x5a1ec: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x59cd8; run_59c00(); return; case 0x5a200: pc=0x5a200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5a200() throws ExecutionException { /* 0x5a200 - 0x5a400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5a200: /* Next insn is delay slot */ pc=0x65400; run_65400(); return; case 0x5a400: pc=0x5a400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5a400() throws ExecutionException { /* 0x5a400 - 0x5a600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5a400: r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r16 = r6 + r0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5a438; continue; } r5 = 7 << 16; r4 = r6 + r0; r5 = r5 + 2076; /* Next insn is delay slot */ r31=0x5a430; pc=0x42c00; run_42c00(); return; case 0x5a430: if(r2 != r0) { /* Next insn is delay slot */ pc=0x5a45c; continue; } case 0x5a438: r17 = 7 << 16; case 0x5a43c: r17 = r17 + 208; case 0x5a440: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r17 + r0; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5a45c: r17 = 7 << 16; r4 = r16 + r0; r5 = r17 + 208; /* Next insn is delay slot */ r31=0x5a470; pc=0x42c00; run_42c00(); return; case 0x5a470: if(r2 == r0) { /* Next insn is delay slot */ pc=0x5a43c; continue; } r5 = 7 << 16; r4 = r16 + r0; r5 = r5 + -12264; /* Next insn is delay slot */ r31=0x5a48c; pc=0x42c00; run_42c00(); return; case 0x5a48c: r17 = r17 + 208; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5a440; continue; } r17 = r0 + r0; /* Next insn is delay slot */ pc=0x5a440; continue; case 0x5a600: pc=0x5a600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5a600() throws ExecutionException { /* 0x5a600 - 0x5a800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5a600: r2 = 7 << 16; r2 = r2 + 12168; /* Next insn is delay slot */ pc=r31; return; case 0x5a800: pc=0x5a800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5a800() throws ExecutionException { /* 0x5a800 - 0x5aa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5a800: r2 = readPages[(r28+-30976)>>>12][((r28+-30976)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x5aa00: pc=0x5aa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5aa00() throws ExecutionException { /* 0x5aa00 - 0x5ac00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5aa00: r2 = 7 << 16; r2 = r2 + 12136; /* Next insn is delay slot */ pc=r31; return; case 0x5ac00: pc=0x5ac00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ac00() throws ExecutionException { /* 0x5ac00 - 0x5ae00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ac00: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5ae00: pc=0x5ae00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ae00() throws ExecutionException { /* 0x5ae00 - 0x5b000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ae00: r2 = 7 << 16; r2 = r2 + 12200; /* Next insn is delay slot */ pc=r31; return; case 0x5b000: pc=0x5b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5b000() throws ExecutionException { /* 0x5b000 - 0x5b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5b000: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x5a400; run_5a400(); return; case 0x5b200: pc=0x5b200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5b200() throws ExecutionException { /* 0x5b200 - 0x5b400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5b200: r2 = 7 << 16; r2 = r2 + 12200; /* Next insn is delay slot */ pc=r31; return; case 0x5b400: pc=0x5b400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5b400() throws ExecutionException { /* 0x5b400 - 0x5b600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5b400: r2 = r4 & 3; r7 = r5 & 255; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b45c; continue; } r2 = r6 + -1; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5b440; continue; } /* Next insn is delay slot */ pc=0x5b4b0; continue; case 0x5b424: r4 = r4 + 1; r3 = r4 & 3; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5b460; continue; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b4b0; continue; } r2 = r2 + -1; case 0x5b440: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r3 != r7) { /* Next insn is delay slot */ pc=0x5b424; continue; } case 0x5b450: r2 = r4 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5b45c: r2 = r6 + r0; case 0x5b460: r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5b4bc; continue; } case 0x5b46c: r5 = r2 + -1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b4b0; continue; } addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r7) { /* Next insn is delay slot */ pc=0x5b450; continue; } r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5b4a4; continue; case 0x5b494: addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r2 + 1; if(r3 == r7) { /* Next insn is delay slot */ pc=0x5b450; continue; } case 0x5b4a4: r4 = r4 + 1; if(r2 != r5) { /* Next insn is delay slot */ pc=0x5b494; continue; } case 0x5b4b0: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5b4bc: r5 = r5 & 255; r3 = r5 << 8; r3 = r3 | r5; r9 = r3 << 16; r8 = 65278 << 16; r6 = 32896 << 16; r9 = r9 | r3; r8 = r8 | 65279; r6 = r6 | 32896; case 0x5b4e0: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r3 = r9 ^ r3; r5 = r3 + r8; r3 = ~(r0 | r3); r3 = r5 & r3; r3 = r3 & r6; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5b46c; continue; } r2 = r2 + -4; r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; r4 = r4 + 4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5b4e0; continue; } /* Next insn is delay slot */ pc=0x5b46c; continue; case 0x5b600: pc=0x5b600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5b600() throws ExecutionException { /* 0x5b600 - 0x5b800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5b600: r3 = ((r5 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r2 = r4 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5b650; continue; } r7 = r5 + r6; r3 = ((r4 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5b650; continue; } r3 = r4 + r6; r5 = r3 - r6; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5b748; continue; } case 0x5b630: 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 */ r4 = tmp; r3 = r3 + -1; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 != r5) { /* Next insn is delay slot */ pc=0x5b630; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x5b650: r3 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5b750; continue; } r3 = r2 | r5; r3 = r3 & 3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5b764; continue; } r7 = r5 + r0; r3 = r2 + r0; r4 = r6 + r0; case 0x5b678: r8 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; r7 = r7 + 16; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; r8 = readPages[(r7+-12)>>>12][((r7+-12)>>>2)&0x3ff]; r3 = r3 + 16; writePages[(r3+-12)>>>12][((r3+-12)>>>2)&0x3ff] = r8; r8 = readPages[(r7+-8)>>>12][((r7+-8)>>>2)&0x3ff]; r4 = r4 + -16; writePages[(r3+-8)>>>12][((r3+-8)>>>2)&0x3ff] = r8; r8 = readPages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff]; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r8; r8 = (r4&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; if(r8 == r0) { /* Next insn is delay slot */ pc=0x5b678; continue; } r4 = r6 + -16; r4 = r4 >>> 4; r4 = r4 + 1; r4 = r4 << 4; r10 = r6 & 15; r3 = r2 + r4; r5 = r5 + r4; r4 = (r10&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5b778; continue; } r8 = r5 + r0; r7 = r3 + r0; r4 = r10 + r0; case 0x5b6e8: r8 = r8 + 4; r9 = readPages[(r8+-4)>>>12][((r8+-4)>>>2)&0x3ff]; r7 = r7 + 4; r4 = r4 + -4; writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r9; r9 = (r4&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5b6e8; continue; } r4 = r10 + -4; r4 = r4 >>> 2; r4 = r4 + 1; r4 = r4 << 2; r6 = r6 & 3; r3 = r3 + r4; r5 = r5 + r4; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5b770; continue; } case 0x5b72c: r6 = r3 + r6; case 0x5b730: 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 */ r7 = tmp; r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 != r6) { /* Next insn is delay slot */ pc=0x5b730; continue; } case 0x5b748: /* Next insn is delay slot */ pc=r31; return; case 0x5b750: r3 = r2 + r0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5b72c; continue; } /* Next insn is delay slot */ pc=0x5b770; continue; case 0x5b764: r3 = r2 + r0; /* Next insn is delay slot */ pc=0x5b72c; continue; case 0x5b770: /* Next insn is delay slot */ pc=r31; return; case 0x5b778: r6 = r10 + r0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5b72c; continue; } /* Next insn is delay slot */ pc=0x5b770; continue; case 0x5b800: pc=0x5b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5b800() throws ExecutionException { /* 0x5b800 - 0x5ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5b800: r2 = readPages[(r4+76)>>>12][((r4+76)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r16 = r4 + r0; r17 = r5 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b870; continue; } case 0x5b828: r3 = r17 << 2; r3 = r2 + r3; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b898; continue; } r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; case 0x5b84c: writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; case 0x5b854: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5b870: r5 = r0 + 4; r6 = r0 + 33; /* Next insn is delay slot */ r31=0x5b880; pc=0x65600; run_65600(); return; case 0x5b880: writePages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5b828; continue; } case 0x5b88c: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5b854; continue; case 0x5b898: r18 = r0 + 1; r18 = r18 << (r17&0x1f); r6 = r18 + 5; r4 = r16 + r0; r5 = r0 + 1; r6 = r6 << 2; /* Next insn is delay slot */ r31=0x5b8b8; pc=0x65600; run_65600(); return; case 0x5b8b8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x5b88c; continue; } writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r17; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r18; /* Next insn is delay slot */ pc=0x5b84c; continue; case 0x5ba00: pc=0x5ba00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ba00() throws ExecutionException { /* 0x5ba00 - 0x5bc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ba00: if(r5 == r0) { /* Next insn is delay slot */ pc=0x5ba28; continue; } r2 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; r3 = readPages[(r4+76)>>>12][((r4+76)>>>2)&0x3ff]; r2 = r2 << 2; r2 = r3 + r2; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r3; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; case 0x5ba28: /* Next insn is delay slot */ pc=r31; return; case 0x5bc00: pc=0x5bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5bc00() throws ExecutionException { /* 0x5bc00 - 0x5be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5bc00: 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; r18 = r4 + r0; r17 = r5 + r0; r3 = r5 + 20; r8 = r0 + r0; case 0x5bc2c: r11 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r8 = r8 + 1; r9 = r11 & 65535; { long hilo = (r9) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } r11 = r11 >>> 16; r3 = r3 + 4; r9 = lo; r9 = r9 + r7; r7 = r9 >>> 16; { long hilo = (r11) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } 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; r9 = r8 < r16 ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x5bc2c; continue; } if(r7 == r0) { /* Next insn is delay slot */ pc=0x5bcb0; continue; } r2 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; r2 = r16 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5bcd4; continue; } case 0x5bc98: r2 = r16 + 4; r2 = r2 << 2; r2 = r17 + r2; r16 = r16 + 1; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r7; writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r16; case 0x5bcb0: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; 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]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x5bcd4: r5 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r4 = r18 + r0; r5 = r5 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x5bcec; pc=0x5b800; run_5b800(); return; case 0x5bcec: r6 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; r5 = r17 + 12; r6 = r6 + 2; r4 = r2 + 12; r6 = r6 << 2; r19 = r2 + r0; /* Next insn is delay slot */ r31=0x5bd0c; pc=0x48fdc; run_48e00(); return; case 0x5bd0c: r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; r3 = readPages[(r18+76)>>>12][((r18+76)>>>2)&0x3ff]; 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; r17 = r19 + r0; /* Next insn is delay slot */ pc=0x5bc98; continue; case 0x5be00: pc=0x5be00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5be00() throws ExecutionException { /* 0x5be00 - 0x5c000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5be00: r29 = r29 + -48; r2 = r0 + 9; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r7 + 8; if(r2 != r0) { /* Next insn is delay slot */ hi = r4%r2; lo = r4/r2; pc=0x5be20; continue; } hi = r4%r2; lo = r4/r2; throw new ExecutionException("Break"); case 0x5be20: writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r20 = r5 + r0; r18 = r6 + r0; r19 = r7 + r0; r4 = lo; r2 = r4 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5bf4c; continue; } r2 = r0 + 1; r5 = r0 + r0; case 0x5be5c: r2 = r2 << 1; r8 = r2 < r4 ? 1 : 0; r5 = r5 + 1; if(r8 != r0) { /* Next insn is delay slot */ pc=0x5be5c; continue; } case 0x5be70: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x5be7c; pc=0x5b800; run_5b800(); return; case 0x5be7c: r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; r3 = r18 < 10 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5bf3c; continue; } r21 = r20 + 9; r16 = r21 + r0; r20 = r20 + r18; case 0x5bea8: r16 = r16 + 1; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r7 = tmp; r4 = r17 + r0; r5 = r2 + r0; r6 = r0 + 10; r7 = r7 + -48; /* Next insn is delay slot */ r31=0x5bec8; pc=0x5bc00; run_5bc00(); return; case 0x5bec8: if(r16 != r20) { /* Next insn is delay slot */ pc=0x5bea8; continue; } r16 = r21 + r18; r16 = r16 + -8; case 0x5bed8: r3 = r18 < r19 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5bf14; continue; } r18 = r19 - r18; r18 = r16 + r18; case 0x5beec: r16 = r16 + 1; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r7 = tmp; r4 = r17 + r0; r5 = r2 + r0; r6 = r0 + 10; r7 = r7 + -48; /* Next insn is delay slot */ r31=0x5bf0c; pc=0x5bc00; run_5bc00(); return; case 0x5bf0c: if(r16 != r18) { /* Next insn is delay slot */ pc=0x5beec; continue; } case 0x5bf14: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x5bf3c: r16 = r20 + 10; r18 = r0 + 9; /* Next insn is delay slot */ pc=0x5bed8; continue; case 0x5bf4c: r5 = r0 + r0; /* Next insn is delay slot */ pc=0x5be70; continue; case 0x5c000: pc=0x5c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5c000() throws ExecutionException { /* 0x5c000 - 0x5c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5c000: r2 = 65535 << 16; r2 = r4 & r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5c084; continue; } r4 = r4 << 16; r2 = r0 + 16; case 0x5c018: r3 = 65280 << 16; r3 = r4 & r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5c030; continue; } r2 = r2 + 8; r4 = r4 << 8; case 0x5c030: r3 = 61440 << 16; r3 = r4 & r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5c048; continue; } r2 = r2 + 4; r4 = r4 << 4; case 0x5c048: r3 = 49152 << 16; r3 = r4 & r3; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5c060; continue; } r2 = r2 + 2; r4 = r4 << 2; case 0x5c060: if(r4 < 0) { /* Next insn is delay slot */ pc=0x5c07c; continue; } r3 = 16384 << 16; r4 = r4 & r3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5c090; continue; } r2 = r0 + 32; case 0x5c07c: /* Next insn is delay slot */ pc=r31; return; case 0x5c084: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5c018; continue; case 0x5c090: r2 = r2 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x5c200: pc=0x5c200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5c200() throws ExecutionException { /* 0x5c200 - 0x5c400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5c200: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r3 & 7; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5c240; continue; } r2 = r3 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5c2d0; continue; } r2 = r3 & 2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5c2dc; continue; } r3 = r3 >>> 2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; r2 = r0 + 2; /* Next insn is delay slot */ pc=r31; return; case 0x5c240: r2 = r3 & 65535; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5c2b0; continue; } r2 = r0 + r0; case 0x5c250: r5 = r3 & 255; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5c264; continue; } r2 = r2 + 8; r3 = r3 >>> 8; case 0x5c264: r5 = r3 & 15; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5c278; continue; } r2 = r2 + 4; r3 = r3 >>> 4; case 0x5c278: r5 = r3 & 3; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5c28c; continue; } r2 = r2 + 2; r3 = r3 >>> 2; case 0x5c28c: r5 = r3 & 1; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5c2c4; continue; } r3 = r3 >>> 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5c2c0; continue; } r2 = r0 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5c2b0: r3 = r3 >>> 16; r2 = r0 + 16; /* Next insn is delay slot */ pc=0x5c250; continue; case 0x5c2c0: r2 = r2 + 1; case 0x5c2c4: writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=r31; return; case 0x5c2d0: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5c2dc: r3 = r3 >>> 1; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x5c400: pc=0x5c400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5c400() throws ExecutionException { /* 0x5c400 - 0x5c600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5c400: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = r0 + 1; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x5c41c; pc=0x5b800; run_5b800(); return; case 0x5c41c: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; 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]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x5c600: pc=0x5c600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5c600() throws ExecutionException { /* 0x5c600 - 0x5c800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5c600: 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; 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; r17 = r5 + r0; r20 = r6 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5c64c; continue; } r2 = r18 + r0; r17 = r6 + r0; r18 = r19 + r0; r20 = r5 + r0; r19 = r2 + r0; case 0x5c64c: r2 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; r16 = r18 + r19; r2 = r2 < r16 ? 1 : 0; r5 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5c668; continue; } r5 = r5 + 1; case 0x5c668: /* Next insn is delay slot */ r31=0x5c670; pc=0x5b800; run_5b800(); return; case 0x5c670: r13 = r2 + 20; r14 = r16 << 2; r14 = r13 + r14; r4 = ((r13 & 0xffffffffL) < (r14 & 0xffffffffL)) ? 1 : 0; r3 = r13 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5c6a0; continue; } case 0x5c68c: writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; r3 = r3 + 4; r4 = ((r3 & 0xffffffffL) < (r14 & 0xffffffffL)) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5c68c; continue; } case 0x5c6a0: r12 = r20 + 20; r15 = r19 << 2; r15 = r12 + r15; r24 = r17 + 20; r11 = r18 << 2; r3 = ((r12 & 0xffffffffL) < (r15 & 0xffffffffL)) ? 1 : 0; r11 = r24 + r11; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5c804; run_5c800(); return; } case 0x5c6c4: r9 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; r8 = r9 & 65535; if(r8 == r0) { /* Next insn is delay slot */ pc=0x5c760; continue; } r4 = r13 + r0; r3 = r24 + r0; r9 = r0 + r0; /* Next insn is delay slot */ pc=0x5c6f0; continue; case 0x5c6ec: r4 = r7 + r0; case 0x5c6f0: r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r5 = r6 & 65535; { long hilo = (r5) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } r6 = r6 >>> 16; r10 = r7 & 65535; r7 = r7 >>> 16; r3 = r3 + 4; r5 = lo; r5 = r5 + r10; r5 = r5 + r9; { long hilo = (r6) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } r9 = r5 >>> 16; r5 = r5 & 65535; r6 = lo; r6 = r6 + r7; r6 = r6 + r9; r9 = r6 >>> 16; r6 = r6 << 16; r5 = r6 | r5; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; r5 = ((r3 & 0xffffffffL) < (r11 & 0xffffffffL)) ? 1 : 0; r7 = r4 + 4; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5c6ec; continue; } writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r9; r9 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; case 0x5c760: r9 = r9 >>> 16; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5c7f0; continue; } r4 = readPages[(r13+0)>>>12][((r13+0)>>>2)&0x3ff]; r5 = r13 + r0; r7 = r4 + r0; r3 = r24 + r0; r10 = r0 + r0; /* Next insn is delay slot */ pc=0x5c78c; continue; case 0x5c788: r5 = r8 + r0; case 0x5c78c: addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r6 = tmp; r7 = r7 >>> 16; { long hilo = (r6) * r9; hi = (int) (hilo >>> 32); lo = (int) hilo; } r4 = r4 & 65535; r3 = r3 + 4; r8 = r5 + 4; r6 = lo; r6 = r6 + r7; 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; r4 = tmp; r7 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; { long hilo = (r4) * r9; hi = (int) (hilo >>> 32); lo = (int) hilo; } r10 = r7 & 65535; r6 = r6 >>> 16; r4 = lo; r4 = r4 + r10; r4 = r4 + r6; r6 = ((r3 & 0xffffffffL) < (r11 & 0xffffffffL)) ? 1 : 0; r10 = r4 >>> 16; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5c788; continue; } writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; case 0x5c7f0: r12 = r12 + 4; r3 = ((r12 & 0xffffffffL) < (r15 & 0xffffffffL)) ? 1 : 0; r13 = r13 + 4; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5c6c4; continue; } case 0x5c800: pc=0x5c800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5c800() throws ExecutionException { /* 0x5c800 - 0x5ca00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5c800: case 0x5c804: if(r16 <= 0) { /* Next insn is delay slot */ pc=0x5c844; continue; } r4 = readPages[(r14+-4)>>>12][((r14+-4)>>>2)&0x3ff]; r3 = r14 + -4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5c838; continue; } /* Next insn is delay slot */ pc=0x5c844; continue; case 0x5c824: r3 = r3 + -4; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5c844; continue; } case 0x5c838: r16 = r16 + -1; if(r16 != r0) { /* Next insn is delay slot */ pc=0x5c824; continue; } case 0x5c844: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5ca00: pc=0x5ca00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ca00() throws ExecutionException { /* 0x5ca00 - 0x5cc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ca00: 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; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5cb24; continue; } case 0x5ca30: r16 = r16 >> 2; if(r16 == r0) { /* Next insn is delay slot */ pc=0x5cacc; continue; } r17 = readPages[(r19+72)>>>12][((r19+72)>>>2)&0x3ff]; if(r17 == r0) { /* Next insn is delay slot */ pc=0x5cb54; continue; } case 0x5ca4c: r3 = r16 & 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5ca84; continue; } case 0x5ca58: r16 = r16 >> 1; if(r16 == r0) { /* Next insn is delay slot */ pc=0x5cacc; continue; } case 0x5ca64: r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5caf0; continue; } r17 = r2 + r0; case 0x5ca78: r3 = r16 & 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5ca58; continue; } case 0x5ca84: r4 = r19 + r0; r5 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x5ca98; pc=0x5c600; run_5c600(); return; case 0x5ca98: if(r18 == r0) { /* Next insn is delay slot */ pc=0x5cb18; continue; } r3 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r4 = readPages[(r19+76)>>>12][((r19+76)>>>2)&0x3ff]; r3 = r3 << 2; r3 = r4 + r3; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r16 = r16 >> 1; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r4; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r18; r18 = r2 + r0; if(r16 != r0) { /* Next insn is delay slot */ pc=0x5ca64; continue; } case 0x5cacc: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r2 = r18 + r0; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5caf0: r5 = r17 + r0; r6 = r17 + r0; r4 = r19 + r0; /* Next insn is delay slot */ r31=0x5cb04; pc=0x5c600; run_5c600(); return; case 0x5cb04: writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r17 = r2 + r0; /* Next insn is delay slot */ pc=0x5ca78; continue; case 0x5cb18: r18 = r2 + r0; /* Next insn is delay slot */ pc=0x5ca58; continue; case 0x5cb24: r2 = r2 + -1; r3 = 7 << 16; r3 = r3 + 2084; r2 = r2 << 2; r2 = r2 + r3; r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r7 = r0 + r0; /* Next insn is delay slot */ r31=0x5cb48; pc=0x5bc00; run_5bc00(); return; case 0x5cb48: r18 = r2 + r0; /* Next insn is delay slot */ pc=0x5ca30; continue; case 0x5cb54: r4 = r19 + r0; r5 = r0 + 1; /* Next insn is delay slot */ r31=0x5cb64; pc=0x5b800; run_5b800(); return; case 0x5cb64: r17 = r2 + r0; r2 = r0 + 625; writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r2; writePages[(r19+72)>>>12][((r19+72)>>>2)&0x3ff] = r17; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x5ca4c; continue; case 0x5cc00: pc=0x5cc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5cc00() throws ExecutionException { /* 0x5cc00 - 0x5ce00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5cc00: r29 = r29 + -48; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; r18 = r5 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; r20 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r17 = r6 >> 5; r20 = r17 + r20; r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r16 = r20 + 1; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; 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; r21 = r6 + r0; r5 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5cc64; continue; } case 0x5cc50: r2 = r2 << 1; r7 = r2 < r16 ? 1 : 0; r5 = r5 + 1; if(r7 != r0) { /* Next insn is delay slot */ pc=0x5cc50; continue; } case 0x5cc64: r4 = r19 + r0; /* Next insn is delay slot */ r31=0x5cc70; pc=0x5b800; run_5b800(); return; case 0x5cc70: r7 = r2 + 20; if(r17 <= 0) { /* Next insn is delay slot */ pc=0x5cca0; continue; } r8 = r7 + r0; r3 = r0 + r0; case 0x5cc84: r8 = r8 + 4; r3 = r3 + 1; writePages[(r8+-4)>>>12][((r8+-4)>>>2)&0x3ff] = r0; if(r3 != r17) { /* Next insn is delay slot */ pc=0x5cc84; continue; } r3 = r3 << 2; r7 = r7 + r3; case 0x5cca0: r10 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; r3 = r18 + 20; r10 = r10 << 2; r6 = r21 & 31; r10 = r3 + r10; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5cd5c; continue; } r4 = r0 + 32; r4 = r4 - r6; r9 = r0 + r0; /* Next insn is delay slot */ pc=0x5ccd4; continue; case 0x5ccd0: r7 = r8 + r0; case 0x5ccd4: r11 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; 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]; r11 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; r8 = r7 + 4; r9 = r9 >>> (r4&0x1f); if(r11 != r0) { /* Next insn is delay slot */ pc=0x5ccd0; continue; } writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r9; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5cd10; continue; } r16 = r20 + 2; case 0x5cd10: r3 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r4 = readPages[(r19+76)>>>12][((r19+76)>>>2)&0x3ff]; r3 = r3 << 2; r3 = r4 + r3; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; 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]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x5cd5c: r3 = r3 + 4; r6 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; r7 = r7 + 4; writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5cd10; continue; } r3 = r3 + 4; r6 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; r7 = r7 + 4; writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5cd5c; continue; } /* Next insn is delay slot */ pc=0x5cd10; continue; case 0x5ce00: pc=0x5ce00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ce00() throws ExecutionException { /* 0x5ce00 - 0x5d000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ce00: r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r3 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; r2 = r2 - r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5ce78; continue; } r3 = r3 << 2; r4 = r4 + 20; r5 = r5 + 20; r2 = r4 + r3; r5 = r5 + r3; /* Next insn is delay slot */ pc=0x5ce40; continue; case 0x5ce34: r3 = ((r4 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5ce74; continue; } case 0x5ce40: r2 = r2 + -4; r5 = r5 + -4; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; if(r3 == r6) { /* Next insn is delay slot */ pc=0x5ce34; continue; } r3 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5ce80; continue; } r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x5ce74: r2 = r0 + r0; case 0x5ce78: /* Next insn is delay slot */ pc=r31; return; case 0x5ce80: r2 = r0 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x5d000: pc=0x5d000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5d000() throws ExecutionException { /* 0x5d000 - 0x5d200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5d000: r29 = r29 + -40; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; r18 = r4 + r0; r16 = r5 + r0; r4 = r5 + r0; r5 = r6 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; r17 = r6 + r0; /* Next insn is delay slot */ r31=0x5d034; pc=0x5ce00; run_5ce00(); return; case 0x5d034: if(r2 == r0) { /* Next insn is delay slot */ pc=0x5d1a4; continue; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x5d18c; continue; } r19 = r0 + r0; case 0x5d048: r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x5d058; pc=0x5b800; run_5b800(); return; case 0x5d058: r10 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r13 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; r4 = r16 + 20; r12 = r10 << 2; r7 = r17 + 20; r13 = r13 << 2; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r19; r12 = r4 + r12; r13 = r7 + r13; r3 = r2 + 20; r5 = r0 + r0; case 0x5d084: r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r9 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; r6 = r8 & 65535; r5 = r6 + r5; r11 = r9 & 65535; r6 = r5 - r11; r8 = r8 >>> 16; r9 = r9 >>> 16; r5 = r6 >> 16; r8 = r8 - r9; r8 = r8 + r5; r7 = r7 + 4; r5 = r8 >> 16; r6 = r6 & 65535; r8 = r8 << 16; r6 = r8 | r6; r3 = r3 + 4; r8 = ((r7 & 0xffffffffL) < (r13 & 0xffffffffL)) ? 1 : 0; r4 = r4 + 4; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; if(r8 != r0) { /* Next insn is delay slot */ pc=0x5d084; continue; } r7 = ((r4 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; r9 = r3 + r0; r11 = r4 + r0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x5d148; continue; } case 0x5d0f0: r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; r6 = r8 & 65535; r6 = r6 + r5; r7 = r6 >> 16; r8 = r8 >>> 16; r7 = r7 + r8; r5 = r7 >> 16; r6 = r6 & 65535; r7 = r7 << 16; r6 = r7 | r6; r3 = r3 + 4; r7 = ((r4 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; if(r7 != r0) { /* Next insn is delay slot */ pc=0x5d0f0; continue; } r3 = ~(r0 | r11); r3 = r3 + r12; r3 = r3 >>> 2; r3 = r3 + 1; r3 = r3 << 2; r3 = r9 + r3; case 0x5d148: r3 = r3 + -4; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5d168; continue; } case 0x5d154: r3 = r3 + -4; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r10 = r10 + -1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5d154; continue; } case 0x5d168: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r10; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5d18c: r2 = r16 + r0; r19 = r0 + 1; r16 = r17 + r0; r17 = r2 + r0; /* Next insn is delay slot */ pc=0x5d048; continue; case 0x5d1a4: r4 = r18 + r0; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x5d1b4; pc=0x5b800; run_5b800(); return; case 0x5d1b4: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; 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; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5d200: pc=0x5d200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5d200() throws ExecutionException { /* 0x5d200 - 0x5d400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5d200: r2 = f13; r4 = 32752 << 16; r2 = r2 & r4; r3 = 64704 << 16; r4 = r2 + r3; if(r4 <= 0) { /* Next insn is delay slot */ pc=0x5d234; continue; } r3 = r0 + r0; f0 = r3; r2 = r4 + r0; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x5d234: r4 = r0 - r4; r4 = r4 >> 20; r2 = r4 < 20 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5d290; continue; } r5 = r4 < 51 ? 1 : 0; r2 = r0 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x5d280; continue; } r5 = r0 + 51; r4 = r5 - r4; r5 = r0 + 1; r4 = r5 << (r4&0x1f); r3 = r4 + r0; case 0x5d26c: f0 = r3; f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x5d280: r4 = r0 + 1; r3 = r4 + r0; /* Next insn is delay slot */ pc=0x5d26c; continue; case 0x5d290: r3 = r0 + r0; r5 = 8 << 16; f0 = r3; r2 = r5 >> (r4&0x1f); f1 = r2; /* Next insn is delay slot */ pc=r31; return; case 0x5d400: pc=0x5d400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5d400() throws ExecutionException { /* 0x5d400 - 0x5d600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5d400: r29 = r29 + -40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; r16 = r16 << 2; r18 = r4 + 20; r16 = r18 + r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r17 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; r4 = r17 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; r20 = r5 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x5d440; pc=0x5c000; run_5c000(); return; case 0x5d440: r3 = r0 + 32; r3 = r3 - r2; writePages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff] = r3; r3 = r2 < 11 ? 1 : 0; r19 = r16 + -4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5d4c0; continue; } r3 = r0 + 11; r3 = r3 - r2; r5 = r17 >>> (r3&0x1f); r4 = 16368 << 16; r18 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; r6 = r5 | r4; if(r18 == r0) { /* Next insn is delay slot */ pc=0x5d544; continue; } r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; r3 = r4 >>> (r3&0x1f); case 0x5d488: r2 = r2 + 21; r17 = r17 << (r2&0x1f); r7 = r3 | r17; case 0x5d494: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; f0 = r7; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; f1 = r6; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x5d4c0: r3 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5d51c; continue; } r3 = r2 + -11; r4 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5d530; continue; } case 0x5d4dc: r5 = r0 + 43; r2 = r5 - r2; r17 = r17 << (r3&0x1f); r5 = 16368 << 16; r17 = r17 | r5; r18 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; r5 = r4 >>> (r2&0x1f); r6 = r17 | r5; if(r18 == r0) { /* Next insn is delay slot */ pc=0x5d550; continue; } r5 = readPages[(r19+-4)>>>12][((r19+-4)>>>2)&0x3ff]; r3 = r4 << (r3&0x1f); r2 = r5 >>> (r2&0x1f); r7 = r2 | r3; /* Next insn is delay slot */ pc=0x5d494; continue; case 0x5d51c: r3 = r2 + -11; r19 = r16 + -8; r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5d4dc; continue; } case 0x5d530: r2 = 16368 << 16; r6 = r17 | r2; r7 = r4 + r0; /* Next insn is delay slot */ pc=0x5d494; continue; case 0x5d544: r3 = r0 + r0; /* Next insn is delay slot */ pc=0x5d488; continue; case 0x5d550: r2 = r0 + r0; r3 = r4 << (r3&0x1f); r7 = r2 | r3; /* Next insn is delay slot */ pc=0x5d494; continue; case 0x5d600: pc=0x5d600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5d600() throws ExecutionException { /* 0x5d600 - 0x5d800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5d600: 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; r16 = r6 + r0; r17 = r7 + r0; /* Next insn is delay slot */ r31=0x5d62c; pc=0x5b800; run_5b800(); return; case 0x5d62c: r18 = r2 + r0; r19 = r16 << 1; r2 = 15 << 16; r2 = r2 | 65535; r19 = r19 >>> 21; r2 = r2 & r16; if(r19 == r0) { /* Next insn is delay slot */ pc=0x5d654; continue; } r3 = 16 << 16; r2 = r2 | r3; case 0x5d654: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; if(r17 == r0) { /* Next insn is delay slot */ pc=0x5d6f4; continue; } r4 = r29 + 20; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; /* Next insn is delay slot */ r31=0x5d670; pc=0x5c200; run_5c200(); return; case 0x5d670: if(r2 != r0) { /* Next insn is delay slot */ pc=0x5d764; continue; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; case 0x5d684: writePages[(r18+24)>>>12][((r18+24)>>>2)&0x3ff] = r16; r3 = r0 + 2; r16 = (r16&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r16 = r3 - r16; writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r16; if(r19 != r0) { /* Next insn is delay slot */ pc=0x5d720; continue; } case 0x5d6a0: r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = r2 + -1074; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r16 << 2; r2 = r18 + r2; r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; r16 = r16 << 5; /* Next insn is delay slot */ r31=0x5d6c4; pc=0x5c000; run_5c000(); return; case 0x5d6c4: r3 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r16 - r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r18 + r0; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x5d6f4: r4 = r29 + 16; /* Next insn is delay slot */ r31=0x5d700; pc=0x5c200; run_5c200(); return; case 0x5d700: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r2 + 32; writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; r3 = r0 + 1; writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r3; r16 = r0 + 1; if(r19 == r0) { /* Next insn is delay slot */ pc=0x5d6a0; continue; } case 0x5d720: r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r19 = r19 + -1075; r19 = r19 + r2; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r19; r3 = r0 + 53; r2 = r3 - r2; r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r3 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r18 + r0; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x5d764: r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r3 = r0 - r2; r4 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r3 = r16 << (r3&0x1f); r3 = r3 | r4; r16 = r16 >>> (r2&0x1f); writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ pc=0x5d684; continue; case 0x5d800: pc=0x5d800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5d800() throws ExecutionException { /* 0x5d800 - 0x5da00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5d800: r29 = r29 + -56; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; r18 = r5 + r0; r5 = r29 + 20; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; r19 = r4 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f20; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f21; /* Next insn is delay slot */ r31=0x5d834; pc=0x5d400; run_5d400(); return; case 0x5d834: r4 = r18 + r0; r5 = r29 + 16; f20 = f0; f21 = f1; r17 = f0; r16 = f1; /* Next insn is delay slot */ r31=0x5d850; pc=0x5d400; run_5d400(); return; case 0x5d850: r5 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r6 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; r4 = r5 - r4; r5 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; r3 = f0; r5 = r6 - r5; r5 = r5 << 5; r4 = r4 + r5; r2 = f1; if(r4 <= 0) { /* Next insn is delay slot */ pc=0x5d8c0; continue; } r4 = r4 << 20; f20 = r17; r16 = r4 + r16; f21 = r16; case 0x5d894: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; f20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x5d8c0: r4 = r4 << 20; f0 = r3; r2 = r2 - r4; f1 = r2; /* Next insn is delay slot */ pc=0x5d894; continue; case 0x5da00: pc=0x5da00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5da00() throws ExecutionException { /* 0x5da00 - 0x5dc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5da00: r2 = r4 < 24 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5da34; continue; } f0 = readPages[(r28+-30964)>>>12][((r28+-30964)>>>2)&0x3ff]; f2 = readPages[(r28+-30956)>>>12][((r28+-30956)>>>2)&0x3ff]; f1 = readPages[(r28+-30968)>>>12][((r28+-30968)>>>2)&0x3ff]; f3 = readPages[(r28+-30960)>>>12][((r28+-30960)>>>2)&0x3ff]; case 0x5da1c: r4 = r4 + -1; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x5da1c; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x5da34: r2 = 7 << 16; r2 = r2 + 2176; r4 = r4 << 3; r4 = r4 + r2; f0 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; f1 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x5dc00: pc=0x5dc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5dc00() throws ExecutionException { /* 0x5dc00 - 0x5de00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5dc00: r7 = readPages[(r6+16)>>>12][((r6+16)>>>2)&0x3ff]; r5 = r5 + -1; r2 = r6 + 20; r8 = r5 >> 5; r7 = r7 << 2; r8 = r8 + 1; r7 = r2 + r7; r8 = r8 << 2; r3 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; r8 = r4 + r8; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5dc7c; continue; } r3 = r4 + r0; case 0x5dc34: r2 = r2 + 4; r5 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; r5 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5dc34; continue; } r2 = r7 - r6; r2 = r2 + -21; r2 = r2 >>> 2; r2 = r2 + 1; r2 = r2 << 2; r4 = r4 + r2; r2 = ((r4 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5dc88; continue; } case 0x5dc74: r4 = r4 + 4; writePages[(r4+-4)>>>12][((r4+-4)>>>2)&0x3ff] = r0; case 0x5dc7c: r2 = ((r4 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5dc74; continue; } case 0x5dc88: /* Next insn is delay slot */ pc=r31; return; case 0x5de00: pc=0x5de00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5de00() throws ExecutionException { /* 0x5de00 - 0x5e000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5de00: r3 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r5 >> 5; r6 = r4 + 20; r4 = r3 < r2 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5de74; continue; } r3 = r3 << 2; r3 = r6 + r3; case 0x5de20: r2 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5de68; continue; } r2 = r3 + -4; r3 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5de5c; continue; } /* Next insn is delay slot */ pc=0x5deac; continue; case 0x5de48: r2 = r2 + -4; r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5deac; continue; } case 0x5de5c: r3 = ((r6 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5de48; continue; } case 0x5de68: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x5de74: r3 = r2 < r3 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x5deb8; continue; } r2 = r2 << 2; r5 = r5 & 31; r3 = r6 + r2; if(r5 == r0) { /* Next insn is delay slot */ pc=0x5de20; continue; } r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r2 >>> (r5&0x1f); r5 = r4 << (r5&0x1f); if(r5 == r2) { /* Next insn is delay slot */ pc=0x5de20; continue; } case 0x5deac: r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x5deb8: r2 = r2 << 2; r3 = r6 + r2; /* Next insn is delay slot */ pc=0x5de20; continue; case 0x5e000: pc=0x5e000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5e000() throws ExecutionException { /* 0x5e000 - 0x5e200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5e000: r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e034; continue; } case 0x5e01c: r2 = r0 + r0; case 0x5e020: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x5e034: r5 = r0 + 128; /* Next insn is delay slot */ r31=0x5e040; pc=0x3ec00; run_3ec00(); return; case 0x5e040: writePages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e080; continue; } r3 = r0 + r0; r4 = r0 + 128; /* Next insn is delay slot */ pc=0x5e064; continue; case 0x5e05c: r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; case 0x5e064: r2 = r2 + r3; r3 = r3 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; if(r3 != r4) { /* Next insn is delay slot */ pc=0x5e05c; continue; } /* Next insn is delay slot */ pc=0x5e01c; continue; case 0x5e080: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x5e020; continue; case 0x5e200: pc=0x5e200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5e200() throws ExecutionException { /* 0x5e200 - 0x5e400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5e200: r29 = r29 + -32; r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e250; continue; } r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e270; continue; } case 0x5e22c: r5 = r5 << 2; r5 = r2 + r5; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r6; case 0x5e23c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e250: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + 22; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e270: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x5e280; pc=0x5e000; run_5e000(); return; case 0x5e280: r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5e29c; continue; } r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x5e22c; continue; case 0x5e29c: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x5e23c; continue; case 0x5e400: pc=0x5e400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5e400() throws ExecutionException { /* 0x5e400 - 0x5e600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5e400: r29 = r29 + -32; r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r17 = r4 + r0; r16 = r5 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e4f0; continue; } r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e4c0; continue; } r3 = r5 << 2; r3 = r2 + r3; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e4c0; continue; } r4 = r0 + 1; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5e4b4; continue; } r4 = r0 + -1; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5e490; continue; } writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; r4 = r5 + r0; /* Next insn is delay slot */ pc=r2; r31=0x5e474; return; case 0x5e474: r2 = r0 + r0; case 0x5e478: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e490: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r0 + 22; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e4b4: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x5e478; continue; case 0x5e4c0: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x5e4cc; pc=0x48a20; run_48a00(); return; case 0x5e4cc: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r16 + r0; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r5 = r2 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x489e0; run_48800(); return; case 0x5e4f0: r2 = r0 + 22; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x5e478; continue; case 0x5e600: pc=0x5e600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5e600() throws ExecutionException { /* 0x5e600 - 0x5e800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5e600: r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e6e0; continue; } r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r16 = r4 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e6bc; continue; } case 0x5e628: r3 = r5 << 2; r3 = r2 + r3; r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5e6b0; continue; } r4 = r0 + -1; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5e698; continue; } r4 = r0 + 1; if(r2 == r4) { /* Next insn is delay slot */ pc=0x5e680; continue; } writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; r4 = r5 + r0; /* Next insn is delay slot */ pc=r2; r31=0x5e668; return; case 0x5e668: r2 = r0 + r0; case 0x5e66c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e680: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r0 + 3; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e698: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r0 + 2; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x5e6b0: r2 = r0 + 1; /* Next insn is delay slot */ pc=0x5e66c; continue; case 0x5e6bc: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x5e6c8; pc=0x5e000; run_5e000(); return; case 0x5e6c8: r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5e6ec; continue; } r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x5e628; continue; case 0x5e6e0: r2 = r0 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x5e6ec: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x5e66c; continue; case 0x5e800: pc=0x5e800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5e800() throws ExecutionException { /* 0x5e800 - 0x5ea00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5e800: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x5e400; run_5e400(); return; case 0x5ea00: pc=0x5ea00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ea00() throws ExecutionException { /* 0x5ea00 - 0x5ec00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ea00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x5e200; run_5e200(); return; case 0x5ec00: pc=0x5ec00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ec00() throws ExecutionException { /* 0x5ec00 - 0x5ee00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ec00: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x5e000; run_5e000(); return; case 0x5ee00: pc=0x5ee00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5ee00() throws ExecutionException { /* 0x5ee00 - 0x5f000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5ee00: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x5e600; run_5e600(); return; case 0x5f000: pc=0x5f000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5f000() throws ExecutionException { /* 0x5f000 - 0x5f200 */ int addr, tmp; for(;;) { switch(pc) { case 0x5f000: r29 = r29 + -136; r3 = r0 + 516; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r6; r16 = r5 + r0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ r31=0x5f030; pc=0x10268; run_10200(); return; case 0x5f030: writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = 4 << 16; r2 = r2 + 9216; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; r7 = r29 + 144; r2 = r0 + -1; r5 = r29 + 16; r6 = r16 + r0; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r0; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r0; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x5f070; pc=0x61400; run_61400(); return; case 0x5f070: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r16 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x5f200: pc=0x5f200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5f200() throws ExecutionException { /* 0x5f200 - 0x5f400 */ int addr, tmp; for(;;) { switch(pc) { case 0x5f200: r29 = r29 + -144; r2 = r0 + 516; writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = r5 + r0; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r7; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r6; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x5f234; pc=0x10268; run_10200(); return; case 0x5f234: writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r2 = 4 << 16; r2 = r2 + 9216; r6 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; r7 = r29 + 156; r2 = r0 + -1; r4 = r16 + r0; r5 = r29 + 16; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r0; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r0; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x5f274; pc=0x61400; run_61400(); return; case 0x5f274: r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r16 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; r29 = r29 + 144; /* Next insn is delay slot */ pc=r31; return; case 0x5f400: pc=0x5f400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5f400() throws ExecutionException { /* 0x5f400 - 0x5f600 */ int addr, tmp; for(;;) { switch(pc) { case 0x5f400: r2 = r4 + r0; r3 = r4 + r0; /* Next insn is delay slot */ pc=0x5f434; continue; case 0x5f410: if(r6 == r0) { /* Next insn is delay slot */ pc=0x5f5cc; continue; } r5 = r5 + 1; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r7 = tmp; r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r6 = r6 + -1; if(r7 == r0) { /* Next insn is delay slot */ pc=0x5f5d4; continue; } case 0x5f434: r7 = r5 & 3; if(r7 != r0) { /* Next insn is delay slot */ pc=0x5f410; continue; } r4 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; r12 = r6 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5f5f8; continue; } r6 = r6 & 3; r12 = r12 - r6; /* Next insn is delay slot */ pc=0x5f494; continue; case 0x5f460: addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r9&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5f4c0; continue; } addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r10&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r10 == r0) { /* Next insn is delay slot */ pc=0x5f4c8; continue; } addr=r3+3; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r11&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r11 == r0) { /* Next insn is delay slot */ pc=0x5f4d0; continue; } r3 = r3 + 4; if(r7 == r0) { /* Next insn is delay slot */ pc=0x5f5f8; continue; } r12 = r7 + r0; case 0x5f494: addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; addr=r5+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r10 = tmp; addr=r5+3; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r11 = tmp; r7 = r12 + -4; r5 = r5 + 4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r8&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r8 != r0) { /* Next insn is delay slot */ pc=0x5f460; continue; } r7 = r12 + -3; r3 = r3 + -1; case 0x5f4c0: r7 = r7 + 1; r3 = r3 + -1; case 0x5f4c8: r7 = r7 + 1; r3 = r3 + -1; case 0x5f4d0: r6 = r7 + r6; r3 = r3 + 4; if(r6 == r0) { /* Next insn is delay slot */ pc=0x5f5c4; continue; } r4 = r3 & 3; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5f500; continue; } /* Next insn is delay slot */ pc=0x5f51c; continue; case 0x5f4f4: r5 = r3 & 3; if(r5 == r0) { /* Next insn is delay slot */ pc=0x5f51c; continue; } case 0x5f500: r3 = r3 + 1; r6 = r6 + -1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r6 != r0) { /* Next insn is delay slot */ pc=0x5f4f4; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x5f51c: r4 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5f668; run_5f600(); return; } r5 = r3 + r0; r7 = r6 + r0; case 0x5f530: r7 = r7 + -16; r5 = r5 + 16; r8 = (r7&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; writePages[(r5+-16)>>>12][((r5+-16)>>>2)&0x3ff] = r0; writePages[(r5+-12)>>>12][((r5+-12)>>>2)&0x3ff] = r0; writePages[(r5+-8)>>>12][((r5+-8)>>>2)&0x3ff] = r0; writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; if(r8 == r0) { /* Next insn is delay slot */ pc=0x5f530; continue; } r5 = r6 + -16; r5 = r5 >>> 4; r5 = r5 + 1; r5 = r5 << 4; r4 = r6 & 15; r3 = r3 + r5; case 0x5f56c: r5 = (r4&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5f588; continue; } writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r0; r4 = r4 + -8; r3 = r3 + 8; case 0x5f588: r5 = (r4&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5f5a0; continue; } writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; r4 = r4 + -4; r3 = r3 + 4; case 0x5f5a0: r5 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x5f5b8; continue; } addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = r4 + -2; r3 = r3 + 2; case 0x5f5b8: if(r4 == r0) { /* Next insn is delay slot */ pc=0x5f5c4; continue; } addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x5f5c4: /* Next insn is delay slot */ pc=r31; return; case 0x5f5cc: /* Next insn is delay slot */ pc=r31; return; case 0x5f5d4: r6 = r3 + r6; if(r3 == r6) { /* Next insn is delay slot */ pc=0x5f5c4; continue; } case 0x5f5e0: r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 != r6) { /* Next insn is delay slot */ pc=0x5f5e0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x5f5f8: r6 = r3 + r6; if(r3 == r6) { /* Next insn is delay slot */ pc=0x5f5c4; continue; } case 0x5f600: pc=0x5f600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5f600() throws ExecutionException { /* 0x5f600 - 0x5f800 */ int addr, tmp; for(;;) { switch(pc) { case 0x5f600: addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r8 = r5 + 1; r7 = r3 + 1; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r8 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5f640; continue; } case 0x5f620: if(r7 == r6) { /* Next insn is delay slot */ pc=0x5f660; continue; } addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r7 = r7 + 1; addr=r7+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r3 + 1; if(r4 != r0) { /* Next insn is delay slot */ pc=0x5f620; continue; } case 0x5f640: if(r6 == r7) { /* Next insn is delay slot */ pc=0x5f5c4; run_5f400(); return; } case 0x5f648: r7 = r7 + 1; addr=r7+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r7 != r6) { /* Next insn is delay slot */ pc=0x5f648; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x5f660: /* Next insn is delay slot */ pc=r31; return; case 0x5f668: r4 = r6 + r0; /* Next insn is delay slot */ pc=0x5f56c; run_5f400(); return; case 0x5f800: pc=0x5f800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5f800() throws ExecutionException { /* 0x5f800 - 0x5fa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5f800: r12 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = r5 + r0; /* Next insn is delay slot */ pc=0x5f814; continue; case 0x5f810: r2 = r3 + r0; case 0x5f814: r3 = r2 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r9 = r12 + r8; addr=r9+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r9 = r9 & 8; if(r9 != r0) { /* Next insn is delay slot */ pc=0x5f810; continue; } r9 = r0 + 45; if(r8 == r9) { /* Next insn is delay slot */ pc=0x5f9cc; continue; } r9 = r0 + 43; if(r8 == r9) { /* Next insn is delay slot */ pc=0x5f9e0; continue; } r25 = r0 + r0; case 0x5f854: r2 = r0 + -17; r2 = r7 & r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5f97c; continue; } r24 = r0 + -1; if(r7 != r0) { /* Next insn is delay slot */ if(r7!=0) { hi = (int)((r24 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r24 & 0xffffffffL) / (r7 & 0xffffffffL)); } pc=0x5f874; continue; } if(r7!=0) { hi = (int)((r24 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r24 & 0xffffffffL) / (r7 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x5f874: r15 = r7 + r0; r24 = hi; r13 = lo; case 0x5f880: r10 = r0 + r0; r2 = r0 + r0; r14 = r0 + 1; /* Next insn is delay slot */ pc=0x5f8dc; continue; case 0x5f894: r8 = r8 + -48; r9 = r8 < r7 ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5f91c; continue; } case 0x5f8a4: if(r10 < 0) { /* Next insn is delay slot */ pc=0x5f958; continue; } r9 = ((r13 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x5f958; continue; } if(r2 == r13) { /* Next insn is delay slot */ pc=0x5f94c; continue; } case 0x5f8c0: { long hilo = (r2) * r15; hi = (int) (hilo >>> 32); lo = (int) hilo; } r10 = r0 + 1; r2 = lo; r2 = r8 + r2; case 0x5f8d0: r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; case 0x5f8dc: r9 = r12 + r8; addr=r9+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r11 = r9 & 4; if(r11 != r0) { /* Next insn is delay slot */ pc=0x5f894; continue; } r9 = r9 & 3; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5f91c; continue; } if(r9 == r14) { /* Next insn is delay slot */ pc=0x5f964; continue; } r9 = r0 + 87; r8 = r8 - r9; case 0x5f910: r9 = r8 < r7 ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x5f8a4; continue; } case 0x5f91c: if(r10 < 0) { /* Next insn is delay slot */ pc=0x5f9b8; continue; } if(r25 != r0) { /* Next insn is delay slot */ pc=0x5f9ac; continue; } case 0x5f92c: if(r6 == r0) { /* Next insn is delay slot */ pc=0x5f974; continue; } if(r10 == r0) { /* Next insn is delay slot */ pc=0x5f940; continue; } r5 = r3 + -1; case 0x5f940: writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=r31; return; case 0x5f94c: r9 = r24 < r8 ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x5f8c0; continue; } case 0x5f958: r10 = r0 + -1; /* Next insn is delay slot */ pc=0x5f8d0; continue; case 0x5f964: r9 = r0 + 55; r8 = r8 - r9; /* Next insn is delay slot */ pc=0x5f910; continue; case 0x5f974: /* Next insn is delay slot */ pc=r31; return; case 0x5f97c: r2 = r0 + 48; if(r8 == r2) { /* Next insn is delay slot */ pc=0x5f9f4; continue; } if(r7 != r0) { /* Next insn is delay slot */ pc=0x5fa50; run_5fa00(); return; } r13 = 6553 << 16; r24 = r0 + 5; r13 = r13 | 39321; r15 = r0 + 10; r7 = r0 + 10; /* Next insn is delay slot */ pc=0x5f880; continue; case 0x5f9ac: r2 = r0 - r2; /* Next insn is delay slot */ pc=0x5f92c; continue; case 0x5f9b8: r2 = r0 + 34; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x5f92c; continue; case 0x5f9cc: r3 = r2 + 2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + 1; /* Next insn is delay slot */ pc=0x5f854; continue; case 0x5f9e0: r3 = r2 + 2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r25 = r0 + r0; /* Next insn is delay slot */ pc=0x5f854; continue; case 0x5f9f4: addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r9 = tmp; r2 = r0 + 88; r9 = r9 & 223; case 0x5fa00: pc=0x5fa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5fa00() throws ExecutionException { /* 0x5fa00 - 0x5fc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5fa00: if(r9 == r2) { /* Next insn is delay slot */ pc=0x5fa2c; continue; } if(r7 != r0) { /* Next insn is delay slot */ pc=0x5fa50; continue; } r13 = 8191 << 16; r24 = r0 + 7; r13 = r13 | 65535; r15 = r0 + 8; r7 = r0 + 8; /* Next insn is delay slot */ pc=0x5f880; run_5f800(); return; case 0x5fa2c: r13 = 4095 << 16; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r24 = r0 + 15; r3 = r3 + 2; r13 = r13 | 65535; r15 = r0 + 16; r7 = r0 + 16; /* Next insn is delay slot */ pc=0x5f880; run_5f800(); return; case 0x5fa50: r13 = r0 + -1; if(r7 != r0) { /* Next insn is delay slot */ if(r7!=0) { hi = (int)((r13 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r7 & 0xffffffffL)); } pc=0x5fa60; continue; } if(r7!=0) { hi = (int)((r13 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r7 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x5fa60: r15 = r7 + r0; r24 = hi; r13 = lo; /* Next insn is delay slot */ pc=0x5f880; run_5f800(); return; case 0x5fc00: pc=0x5fc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5fc00() throws ExecutionException { /* 0x5fc00 - 0x5fe00 */ int addr, tmp; for(;;) { switch(pc) { case 0x5fc00: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x5f800; run_5f800(); return; case 0x5fe00: pc=0x5fe00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_5fe00() throws ExecutionException { /* 0x5fe00 - 0x60000 */ int addr, tmp; for(;;) { switch(pc) { case 0x5fe00: r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; r29 = r29 + -56; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r23 = r6 + r0; r18 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5fffc; continue; } r20 = r4 + r0; r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r17 = r5 + r0; r30 = r0 + r0; r16 = r0 + r0; case 0x5fe58: if(r16 == r0) { /* Next insn is delay slot */ pc=0x5fec4; continue; } r2 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r19 = r3 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5fed8; continue; } addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r2 & 1152; if(r3 != r0) { /* Next insn is delay slot */ pc=0x5fee8; continue; } r22 = r19 + r0; case 0x5fe88: r5 = r30 + r0; r6 = r22 + r0; /* Next insn is delay slot */ r31=0x5fe98; pc=0x5b600; run_5b600(); return; case 0x5fe98: r3 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; r2 = readPages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff]; r3 = r3 - r19; r4 = r4 + r22; r2 = r2 - r16; writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r3; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5fffc; continue; } case 0x5fec4: r30 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; r16 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; r18 = r18 + 8; /* Next insn is delay slot */ pc=0x5fe58; continue; case 0x5fed8: r19 = r16 + r0; r22 = r16 + r0; /* Next insn is delay slot */ pc=0x5fe88; continue; case 0x5fee8: r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; r6 = r16 + 1; r21 = r4 - r5; r4 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; r6 = r6 + r21; r22 = r4 << 1; r4 = r22 + r4; r22 = r4 >>> 31; r22 = r22 + r4; r22 = r22 >> 1; r4 = ((r22 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x5ff98; continue; } r2 = r2 & 1024; r22 = r6 + r0; r4 = r20 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5ffac; continue; } case 0x5ff30: r5 = r6 + r0; /* Next insn is delay slot */ r31=0x5ff3c; pc=0x3ec00; run_3ec00(); return; case 0x5ff3c: r19 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x5ffd0; continue; } r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; r4 = r2 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x5ff5c; pc=0x48fdc; run_48e00(); return; case 0x5ff5c: addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r3 = r0 + -1153; r2 = r2 & r3; r2 = r2 | 128; addr=r17+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x5ff70: r4 = r19 + r21; writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r22; r22 = r22 - r21; writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r19; writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r22; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; r19 = r16 + r0; r22 = r16 + r0; /* Next insn is delay slot */ pc=0x5fe88; continue; case 0x5ff98: r2 = r2 & 1024; r6 = r22 + r0; r4 = r20 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5ff30; continue; } case 0x5ffac: /* Next insn is delay slot */ r31=0x5ffb4; pc=0x40800; run_40800(); return; case 0x5ffb4: r19 = r2 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x5ff70; continue; } r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; r4 = r20 + r0; /* Next insn is delay slot */ r31=0x5ffd0; pc=0x3ca00; run_3ca00(); return; case 0x5ffd0: 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; 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; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x60000; run_60000(); return; case 0x5fffc: writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r0; case 0x60000: pc=0x60000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60000() throws ExecutionException { /* 0x60000 - 0x60200 */ int addr, tmp; for(;;) { switch(pc) { case 0x60000: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x60200: pc=0x60200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60200() throws ExecutionException { /* 0x60200 - 0x60400 */ int addr, tmp; for(;;) { switch(pc) { case 0x60200: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r29 = r29 + -224; r2 = r2 & 128; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r17; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r16; writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r31; writePages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff] = r30; writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r23; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r22; writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = r21; writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r20; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r19; writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r18; writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r4; r16 = r5 + r0; r17 = r6 + r0; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r7; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6025c; continue; } r2 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x611e4; run_61000(); return; } case 0x6025c: r5 = r29 + 119; r21 = r29 + 120; r4 = r29 + 16; r2 = 7 << 16; r6 = r21 - r5; r18 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r4; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r0; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r0; writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r0; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r0; r3 = r4 + r0; r22 = r2 + 2748; writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r5; writePages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff] = r6; case 0x60298: addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60c98; run_60c00(); return; } case 0x602a8: r4 = r0 + 37; r19 = r17 + r0; if(r2 != r4) { /* Next insn is delay slot */ pc=0x602c8; continue; } /* Next insn is delay slot */ pc=0x60328; continue; case 0x602c0: if(r2 == r4) { /* Next insn is delay slot */ pc=0x602dc; continue; } case 0x602c8: r19 = r19 + 1; addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x602c0; continue; } case 0x602dc: r20 = r19 - r17; if(r20 == r0) { /* Next insn is delay slot */ pc=0x60328; continue; } r2 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r17; r2 = r2 + r20; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r2; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; r2 = r2 + 1; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60edc; run_60e00(); return; } r3 = r3 + 8; case 0x60318: r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r2 = r2 + r20; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r2; case 0x60328: addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61160; run_61000(); return; } r2 = r19 + 1; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r6 = r0 + r0; r23 = r0 + -1; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r0; r19 = r0 + r0; r7 = r0 + 42; r8 = r0 + r0; case 0x60358: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r17 = r2 + 1; case 0x60360: r2 = r4 + -32; r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x608dc; run_60800(); return; } case 0x60370: r5 = 7 << 16; r2 = r2 << 2; r5 = r5 + 2376; r2 = r5 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x60390: r19 = r19 | 16; case 0x60394: r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; continue; case 0x603a0: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r8 >= 0) { /* Next insn is delay slot */ pc=0x6103c; run_61000(); return; } r8 = r0 - r8; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; case 0x603c0: r19 = r19 | 4; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; continue; case 0x603d0: r6 = r0 + 43; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; continue; case 0x603e0: r2 = r19 & 16; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x610ac; run_61000(); return; } r19 = r19 & 64; if(r19 == r0) { /* Next insn is delay slot */ pc=0x6118c; run_61000(); return; } r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; case 0x60400: pc=0x60400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60400() throws ExecutionException { /* 0x60400 - 0x60600 */ int addr, tmp; for(;;) { switch(pc) { case 0x60400: r4 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r6 = r6 + 4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r4&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x60298; run_60200(); return; case 0x6041c: r2 = 7 << 16; r2 = r2 + 248; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r2; case 0x60430: r2 = r19 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60448; continue; } r2 = r19 & 64; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61090; run_61000(); return; } case 0x60448: r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; case 0x6045c: r5 = r19 & 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x609c8; run_60800(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x609c8; run_60800(); return; } r5 = r0 + 48; addr=r29+132; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+133; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = r19 | 2; r4 = r0 + 2; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; r5 = r0 + r0; case 0x60490: if(r23 < 0) { /* Next insn is delay slot */ pc=0x604a0; continue; } r6 = r0 + -129; r19 = r19 & r6; case 0x604a0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60d0c; run_60c00(); return; } if(r23 != r0) { /* Next insn is delay slot */ pc=0x60d0c; run_60c00(); return; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x604c4; continue; } r2 = r19 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61074; run_61000(); return; } case 0x604c4: r30 = r21 + r0; case 0x604c8: r6 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r2 = r6 < r23 ? 1 : 0; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r6; if(r2 == r0) { /* Next insn is delay slot */ pc=0x604e4; continue; } writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r23; case 0x604e4: if(r5 == r0) { /* Next insn is delay slot */ pc=0x6058c; continue; } r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x6058c; continue; case 0x60504: r19 = r19 | 64; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x60514: r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60854; run_60800(); return; } case 0x60528: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; case 0x6053c: if(r2 < 0) { /* Next insn is delay slot */ pc=0x6087c; run_60800(); return; } case 0x60544: addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x60490; continue; case 0x60558: r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r6 = r0 + 1; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; addr=r29+80; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 1; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r6; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; r30 = r29 + 80; case 0x60588: r23 = r0 + r0; case 0x6058c: r4 = r19 & 2; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x605ac; continue; } r5 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r5 = r5 + 2; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r5; case 0x605ac: r6 = r19 & 132; writePages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff] = r6; if(r6 != r0) { /* Next insn is delay slot */ pc=0x609d4; run_60800(); return; } r2 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r20 = r2 - r4; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x609d4; run_60800(); return; } r2 = r20 < 17 ? 1 : 0; r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61248; run_61200(); return; } r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; r9 = r0 + 16; /* Next insn is delay slot */ pc=0x6060c; run_60600(); return; case 0x605f8: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; case 0x60600: pc=0x60600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60600() throws ExecutionException { /* 0x60600 - 0x60800 */ int addr, tmp; for(;;) { switch(pc) { case 0x60600: r3 = r3 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60670; continue; } case 0x6060c: r2 = r2 + 1; r5 = r5 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x605f8; run_60400(); return; } r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x60648; pc=0x5fe00; run_5fe00(); return; case 0x60648: r9 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6060c; continue; } case 0x60670: r2 = r2 + 1; r6 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; r5 = r20 + r5; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r6; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60fe0; run_60e00(); return; } r3 = r3 + 8; /* Next insn is delay slot */ pc=0x609dc; run_60800(); return; case 0x606a4: r19 = r19 | 16; r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x607a0; continue; } case 0x606b8: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; r4 = r0 + 1; case 0x606d0: addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; r5 = r0 + r0; /* Next insn is delay slot */ pc=0x60490; run_60400(); return; case 0x606e4: r2 = 7 << 16; r2 = r2 + 228; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x60430; run_60400(); return; case 0x60700: r19 = r19 | 16; r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x609a0; run_60800(); return; } case 0x60714: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; r4 = r0 + r0; /* Next insn is delay slot */ pc=0x606d0; continue; case 0x60734: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r0 + 48; addr=r29+132; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = r0 + 120; addr=r29+133; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = 7 << 16; r4 = r4 + 248; r5 = r5 + 4; writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r4; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; r19 = r19 | 2; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; r4 = r0 + 2; /* Next insn is delay slot */ pc=0x606d0; continue; case 0x60778: if(r6 != r0) { /* Next insn is delay slot */ pc=0x60394; run_60200(); return; } r6 = r0 + 32; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x60790: r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x606b8; continue; } case 0x607a0: r2 = r19 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x610e8; run_61000(); return; } r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r4 = r0 + 1; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r5 = r5 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x606d0; continue; case 0x607c8: r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; r30 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r20 = r6 + 4; if(r30 == r0) { /* Next insn is delay slot */ pc=0x61210; run_61200(); return; } r4 = r30 + r0; if(r23 < 0) { /* Next insn is delay slot */ pc=0x611ac; run_61000(); return; } r5 = r0 + r0; r6 = r23 + r0; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x60804; pc=0x5b400; run_5b400(); return; case 0x60800: pc=0x60800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60800() throws ExecutionException { /* 0x60800 - 0x60a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x60800: case 0x60804: r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61278; run_61200(); return; } r2 = r2 - r30; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; r2 = r23 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60828; continue; } writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; case 0x60828: addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; r23 = r0 + r0; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x6083c: r19 = r19 | 16; r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60528; run_60400(); return; } case 0x60854: r2 = r19 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x610cc; run_61000(); return; } r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r5 = r5 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; if(r2 >= 0) { /* Next insn is delay slot */ pc=0x60544; run_60400(); return; } case 0x6087c: r4 = r0 + 45; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 - r2; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; r5 = r0 + 45; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x60490; run_60400(); return; case 0x6089c: r8 = r0 + r0; r2 = r4 + -48; case 0x608a4: r4 = r8 << 1; r17 = r17 + 1; r8 = r8 << 3; r8 = r4 + r8; addr=r17+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r8 = r8 + r2; r2 = r4 + -48; r5 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x608a4; continue; } r2 = r4 + -32; r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x60370; run_60200(); return; } case 0x608dc: writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x61160; run_61000(); return; } addr=r29+80; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 1; r4 = r0 + 1; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; r30 = r29 + 80; /* Next insn is delay slot */ pc=0x60588; run_60400(); return; case 0x60910: r19 = r19 | 128; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x60920: addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r5 = r17 + 1; if(r4 == r7) { /* Next insn is delay slot */ pc=0x6129c; run_61200(); return; } r2 = r4 + -48; r9 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r23 = r0 + r0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x60974; continue; } case 0x60944: r4 = r23 << 1; r5 = r5 + 1; r23 = r23 << 3; r23 = r4 + r23; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r23 = r2 + r23; r2 = r4 + -48; r9 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r9 != r0) { /* Next insn is delay slot */ pc=0x60944; continue; } if(r23 < 0) { /* Next insn is delay slot */ pc=0x611d4; run_61000(); return; } case 0x60974: r17 = r5 + r0; /* Next insn is delay slot */ pc=0x60360; run_60200(); return; case 0x60980: r19 = r19 | 1; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x60990: r2 = r19 & 16; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60714; run_60600(); return; } case 0x609a0: r2 = r19 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61104; run_61000(); return; } r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r4 = r0 + r0; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r5 = r5 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x606d0; run_60600(); return; case 0x609c8: r4 = r0 + 2; /* Next insn is delay slot */ pc=0x606d0; run_60600(); return; case 0x609d4: r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; case 0x609dc: addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60a1c; run_60a00(); return; } r4 = r29 + 134; r2 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; r4 = r0 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; case 0x60a00: pc=0x60a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60a00() throws ExecutionException { /* 0x60a00 - 0x60c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x60a00: r5 = r5 + 1; r4 = r2 < 8 ? 1 : 0; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60f80; run_60e00(); return; } r3 = r3 + 8; case 0x60a1c: r4 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60a5c; continue; } r4 = r29 + 132; r2 = r2 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; r4 = r0 + 2; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; r5 = r5 + 2; r4 = r2 < 8 ? 1 : 0; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60fb0; run_60e00(); return; } r3 = r3 + 8; case 0x60a5c: r6 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; r4 = r0 + 128; if(r6 == r4) { /* Next insn is delay slot */ pc=0x60dac; run_60c00(); return; } case 0x60a6c: r4 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r23 = r23 - r4; if(r23 <= 0) { /* Next insn is delay slot */ pc=0x60b40; continue; } r4 = r23 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x61150; run_61000(); return; } r4 = 7 << 16; r20 = r4 + 2732; r9 = r0 + 16; /* Next insn is delay slot */ pc=0x60ab4; continue; case 0x60aa0: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r3 = r3 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60b18; continue; } case 0x60ab4: r2 = r2 + 1; r5 = r5 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60aa0; continue; } r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x60af0; pc=0x5fe00; run_5fe00(); return; case 0x60af0: r9 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60ab4; continue; } case 0x60b18: r2 = r2 + 1; r5 = r5 + r23; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r23; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60f04; run_60e00(); return; } r3 = r3 + 8; case 0x60b40: r6 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r2 = r2 + 1; r5 = r6 + r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r30; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r6; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60ea4; run_60e00(); return; } r3 = r3 + 8; case 0x60b6c: r19 = r19 & 4; if(r19 == r0) { /* Next insn is delay slot */ pc=0x60c50; run_60c00(); return; } r2 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r19 = r2 - r4; if(r19 <= 0) { /* Next insn is delay slot */ pc=0x60c50; run_60c00(); return; } r2 = r19 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61258; run_61200(); return; } r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; r23 = r0 + 16; r6 = r5 + r0; /* Next insn is delay slot */ pc=0x60bc8; continue; case 0x60bb4: r19 = r19 + -16; r4 = r19 < 17 ? 1 : 0; r3 = r3 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60c24; run_60c00(); return; } case 0x60bc8: r2 = r2 + 1; r6 = r6 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r23; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r6; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60bb4; continue; } r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60c00; pc=0x5fe00; run_5fe00(); return; case 0x60c00: pc=0x60c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60c00() throws ExecutionException { /* 0x60c00 - 0x60e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x60c00: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; continue; } r19 = r19 + -16; r4 = r19 < 17 ? 1 : 0; r6 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60bc8; run_60a00(); return; } case 0x60c24: r5 = r6 + r0; case 0x60c28: r2 = r2 + 1; r6 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; r5 = r5 + r19; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r6; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6104c; run_61000(); return; } case 0x60c50: r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r4 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r3 = r2 < r4 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x60c6c; continue; } r2 = r4 + r0; case 0x60c6c: r3 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r3 = r3 + r2; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r3; if(r5 != r0) { /* Next insn is delay slot */ pc=0x60ca4; continue; } case 0x60c84: addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r0; r3 = r29 + 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x602a8; run_60200(); return; } case 0x60c98: r19 = r17 + r0; /* Next insn is delay slot */ pc=0x60328; run_60200(); return; case 0x60ca4: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60cb8; pc=0x5fe00; run_5fe00(); return; case 0x60cb8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x60c84; continue; } case 0x60cc0: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60ed0; run_60e00(); return; } r2 = r0 + -1; case 0x60cd8: r31 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; r30 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; r23 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; r22 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; r21 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; r20 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; r19 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; r18 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; r17 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; r16 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; r29 = r29 + 224; /* Next insn is delay slot */ pc=r31; return; case 0x60d0c: r6 = r0 + 1; if(r4 == r6) { /* Next insn is delay slot */ pc=0x60f34; run_60e00(); return; } r6 = r0 + 2; r30 = r21 + r0; if(r4 != r6) { /* Next insn is delay slot */ pc=0x60d5c; continue; } r6 = readPages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff]; case 0x60d2c: r4 = r2 & 15; r4 = r6 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r30 = r30 + -1; r2 = r2 >>> 4; addr=r30+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60d2c; continue; } r4 = r21 - r30; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x60d5c: r4 = r2 & 7; r30 = r30 + -1; r4 = r4 + 48; r2 = r2 >>> 3; addr=r30+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60d5c; continue; } r2 = r19 & 1; r6 = r30 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6102c; run_61000(); return; } r2 = r0 + 48; if(r4 == r2) { /* Next insn is delay slot */ pc=0x60f70; run_60e00(); return; } r30 = r30 + -1; r4 = r21 - r30; addr=r6+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x60dac: r4 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r6 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r9 = r4 - r6; if(r9 <= 0) { /* Next insn is delay slot */ pc=0x60a6c; run_60a00(); return; } r4 = r9 < 17 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x61268; run_61200(); return; } r6 = 7 << 16; r20 = r6 + 2732; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r17; r10 = r0 + 16; r17 = r20 + r0; r20 = r9 + r0; /* Next insn is delay slot */ pc=0x60e04; run_60e00(); return; case 0x60df0: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r3 = r3 + 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60e68; run_60e00(); return; } case 0x60e00: pc=0x60e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_60e00() throws ExecutionException { /* 0x60e00 - 0x61000 */ int addr, tmp; for(;;) { switch(pc) { case 0x60e00: case 0x60e04: r2 = r2 + 1; r5 = r5 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r17; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r10; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x60df0; run_60c00(); return; } r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x60e40; pc=0x5fe00; run_5fe00(); return; case 0x60e40: r10 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x60e04; continue; } case 0x60e68: r9 = r20 + r0; r20 = r17 + r0; r17 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; case 0x60e74: r2 = r2 + 1; r5 = r5 + r9; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; if(r4 == r0) { /* Next insn is delay slot */ pc=0x61120; run_61000(); return; } r3 = r3 + 8; /* Next insn is delay slot */ pc=0x60a6c; run_60a00(); return; case 0x60ea4: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60eb8; pc=0x5fe00; run_5fe00(); return; case 0x60eb8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60b6c; run_60a00(); return; case 0x60ed0: r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x60cd8; run_60c00(); return; case 0x60edc: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60ef0; pc=0x5fe00; run_5fe00(); return; case 0x60ef0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60318; run_60200(); return; case 0x60f04: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60f18; pc=0x5fe00; run_5fe00(); return; case 0x60f18: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60b40; run_60a00(); return; case 0x60f34: r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x61010; run_61000(); return; } r30 = r21 + r0; r4 = r0 + 10; case 0x60f48: if(r4 != r0) { /* Next insn is delay slot */ if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } pc=0x60f54; continue; } if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x60f54: r30 = r30 + -1; r6 = hi; r6 = r6 + 48; addr=r30+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = lo; if(r2 != r0) { /* Next insn is delay slot */ pc=0x60f48; continue; } case 0x60f70: r2 = r21 - r30; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x60f80: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60f94; pc=0x5fe00; run_5fe00(); return; case 0x60f94: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60a1c; run_60a00(); return; case 0x60fb0: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60fc4; pc=0x5fe00; run_5fe00(); return; case 0x60fc4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60a5c; run_60a00(); return; case 0x60fe0: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x60ff4; pc=0x5fe00; run_5fe00(); return; case 0x60ff4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; case 0x61000: pc=0x61000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61000() throws ExecutionException { /* 0x61000 - 0x61200 */ int addr, tmp; for(;;) { switch(pc) { case 0x61000: r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x609dc; run_60800(); return; case 0x61010: r6 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; r2 = r2 + 48; addr=r29+119; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; r30 = r29 + 119; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x6102c: r6 = r21 - r30; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x6103c: writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x6104c: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x61060; pc=0x5fe00; run_5fe00(); return; case 0x61060: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x60c50; run_60c00(); return; case 0x61074: r6 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; r2 = r0 + 48; addr=r29+119; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; r30 = r29 + 119; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x61090: r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; addr=r6+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r6 = r6 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x6045c; run_60400(); return; case 0x610ac: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r5 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x60298; run_60200(); return; case 0x610cc: r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r6 = r6 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x6053c; run_60400(); return; case 0x610e8: r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r4 = r0 + 1; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r6 = r6 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x606d0; run_60600(); return; case 0x61104: r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r4 = r0 + r0; r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r6 = r6 + 4; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ pc=0x606d0; run_60600(); return; case 0x61120: r4 = r18 + r0; r5 = r16 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x61134; pc=0x5fe00; run_5fe00(); return; case 0x61134: if(r2 != r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r3 = r29 + 16; /* Next insn is delay slot */ pc=0x60a6c; run_60a00(); return; case 0x61150: r6 = 7 << 16; r20 = r6 + 2732; /* Next insn is delay slot */ pc=0x60b18; run_60a00(); return; case 0x61160: r2 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; } r4 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; r5 = r16 + r0; r6 = r29 + 120; /* Next insn is delay slot */ r31=0x61184; pc=0x5fe00; run_5fe00(); return; case 0x61184: /* Next insn is delay slot */ pc=0x60cc0; run_60c00(); return; case 0x6118c: r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r6 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r6; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x60298; run_60200(); return; case 0x611ac: writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x611b8; pc=0x10268; run_10200(); return; case 0x611b8: writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; r23 = r0 + r0; r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x611d4: r23 = r0 + -1; r17 = r5 + r0; /* Next insn is delay slot */ pc=0x60360; run_60200(); return; case 0x611e4: r5 = r0 + 64; /* Next insn is delay slot */ r31=0x611f0; pc=0x3ec00; run_3ec00(); return; case 0x611f0: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x612c8; run_61200(); return; } case 0x61200: pc=0x61200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61200() throws ExecutionException { /* 0x61200 - 0x61400 */ int addr, tmp; for(;;) { switch(pc) { case 0x61200: r2 = r0 + 64; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x6025c; run_60200(); return; case 0x61210: r2 = (r23&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61220; continue; } r23 = r0 + 6; case 0x61220: writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; r2 = r23 + r0; if(r23 < 0) { /* Next insn is delay slot */ pc=0x61290; continue; } case 0x61230: r8 = 7 << 16; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; r30 = r8 + 268; /* Next insn is delay slot */ pc=0x60588; run_60400(); return; case 0x61248: r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; /* Next insn is delay slot */ pc=0x60670; run_60600(); return; case 0x61258: r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; /* Next insn is delay slot */ pc=0x60c28; run_60c00(); return; case 0x61268: r4 = 7 << 16; r20 = r4 + 2732; /* Next insn is delay slot */ pc=0x60e74; run_60e00(); return; case 0x61278: writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; addr=r29+134; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; r23 = r0 + r0; /* Next insn is delay slot */ pc=0x604c8; run_60400(); return; case 0x61290: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x61230; continue; case 0x6129c: r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; r17 = r5 + r0; r23 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r23 >= 0) { /* Next insn is delay slot */ pc=0x6103c; run_61000(); return; } writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; r23 = r0 + -1; r2 = r17 + r0; /* Next insn is delay slot */ pc=0x60358; run_60200(); return; case 0x612c8: r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; r2 = r0 + 12; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x60cd8; run_60c00(); return; case 0x61400: pc=0x61400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61400() throws ExecutionException { /* 0x61400 - 0x61600 */ int addr, tmp; for(;;) { switch(pc) { case 0x61400: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -752; writePages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r2 & 8192; writePages[(r29+736)>>>12][((r29+736)>>>2)&0x3ff] = r30; writePages[(r29+720)>>>12][((r29+720)>>>2)&0x3ff] = r20; writePages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff] = r16; writePages[(r29+740)>>>12][((r29+740)>>>2)&0x3ff] = r31; writePages[(r29+732)>>>12][((r29+732)>>>2)&0x3ff] = r23; writePages[(r29+728)>>>12][((r29+728)>>>2)&0x3ff] = r22; writePages[(r29+724)>>>12][((r29+724)>>>2)&0x3ff] = r21; writePages[(r29+716)>>>12][((r29+716)>>>2)&0x3ff] = r19; writePages[(r29+712)>>>12][((r29+712)>>>2)&0x3ff] = r18; writePages[(r29+748)>>>12][((r29+748)>>>2)&0x3ff] = f20; writePages[(r29+744)>>>12][((r29+744)>>>2)&0x3ff] = f21; r30 = r5 + r0; r16 = r6 + r0; r20 = r7 + r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6146c; continue; } r2 = r2 | 8192; r4 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + -8193; r2 = r4 & r2; writePages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff] = r2; case 0x6146c: writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r0; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r0; r21 = r0 + r0; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r0; case 0x6147c: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r16 + 1; writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } case 0x61490: r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r3 = r4 + r2; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 8; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6152c; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x61508; continue; } case 0x614c0: r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r4 + r2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6147c; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r3 = r3 + 1; r2 = r2 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; if(r2 > 0) { /* Next insn is delay slot */ pc=0x614c0; continue; } case 0x61508: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x61518; pc=0x68e00; run_68e00(); return; case 0x61518: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6147c; continue; } r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x614c0; continue; case 0x6152c: r3 = r0 + 37; if(r2 != r3) { /* Next insn is delay slot */ pc=0x616ec; run_61600(); return; } r18 = r0 + r0; r23 = r0 + r0; case 0x61540: r16 = r16 + 1; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r3 & 255; r5 = (r2&0xffffffffL) < (121&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6157c; continue; } r5 = 7 << 16; r2 = r2 << 2; r5 = r5 + 2772; r2 = r5 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x6157c: r3 = r4 + r3; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r0 + 1; r3 = r3 & 3; if(r3 != r2) { /* Next insn is delay slot */ pc=0x61598; continue; } case 0x61594: r18 = r18 | 1; case 0x61598: r2 = 4 << 16; r2 = r2 + 12800; r3 = r0 + 10; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; r19 = r0 + 3; case 0x615b0: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x61774; run_61600(); return; } case 0x615c0: r2 = r18 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61694; run_61600(); return; } case 0x615cc: r2 = r0 + 2; if(r19 == r2) { /* Next insn is delay slot */ pc=0x618b8; run_61800(); return; } r2 = r19 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x617f0; run_61600(); return; } r2 = r0 + 3; if(r19 == r2) { /* Next insn is delay slot */ pc=0x619ec; run_61800(); return; } r2 = r0 + 4; if(r19 != r2) { /* Next insn is delay slot */ pc=0x61958; run_61800(); return; } r2 = r23 + -1; case 0x61600: pc=0x61600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61600() throws ExecutionException { /* 0x61600 - 0x61800 */ int addr, tmp; for(;;) { switch(pc) { case 0x61600: r2 = (r2&0xffffffffL) < (349&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x62108; run_62000(); return; } writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r0; case 0x61610: r10 = r29 + 24; r19 = r18 | 1920; r3 = r0 + r0; r18 = r0 + r0; writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = r0; writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r0; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r0; writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r0; r22 = r10 + r0; r11 = r0 + -1921; case 0x61638: r6 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r6+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r5 = tmp; r2 = r5 + -43; r2 = r2 & 255; r7 = (r2&0xffffffffL) < (79&0xffffffffL) ? 1 : 0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r4 = 7 << 16; r2 = r2 << 2; r4 = r4 + 3256; r2 = r4 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x6167c: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x6168c; pc=0x68e00; run_68e00(); return; case 0x6168c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6178c; continue; } case 0x61694: r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x616ac; continue; case 0x616a4: r2 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; case 0x616ac: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r4 + r3; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 8; if(r3 == r0) { /* Next insn is delay slot */ pc=0x615cc; run_61400(); return; } r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r21 = r21 + 1; r3 = r3 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; if(r3 > 0) { /* Next insn is delay slot */ pc=0x616a4; continue; } /* Next insn is delay slot */ pc=0x6167c; continue; case 0x616ec: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x6275c; run_62600(); return; } case 0x616fc: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; if(r4 != r3) { /* Next insn is delay slot */ pc=0x61740; continue; } r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r21 = r21 + 1; writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = r2; r16 = r16 + 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61490; run_61400(); return; } case 0x61740: r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x617b4; continue; case 0x6174c: r18 = r18 | 1; case 0x61750: r2 = 6 << 16; r2 = r2 + -2048; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r3 = r0 + 8; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; r19 = r0 + 3; if(r2 > 0) { /* Next insn is delay slot */ pc=0x615c0; run_61400(); return; } case 0x61774: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x61784; pc=0x68e00; run_68e00(); return; case 0x61784: if(r2 == r0) { /* Next insn is delay slot */ pc=0x615c0; run_61400(); return; } case 0x6178c: r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x617b0; continue; } addr=r30+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61740; continue; } case 0x617b0: r2 = r0 + -1; case 0x617b4: f20 = readPages[(r29+748)>>>12][((r29+748)>>>2)&0x3ff]; r31 = readPages[(r29+740)>>>12][((r29+740)>>>2)&0x3ff]; r30 = readPages[(r29+736)>>>12][((r29+736)>>>2)&0x3ff]; r23 = readPages[(r29+732)>>>12][((r29+732)>>>2)&0x3ff]; r22 = readPages[(r29+728)>>>12][((r29+728)>>>2)&0x3ff]; r21 = readPages[(r29+724)>>>12][((r29+724)>>>2)&0x3ff]; r20 = readPages[(r29+720)>>>12][((r29+720)>>>2)&0x3ff]; r19 = readPages[(r29+716)>>>12][((r29+716)>>>2)&0x3ff]; r18 = readPages[(r29+712)>>>12][((r29+712)>>>2)&0x3ff]; r17 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; r16 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; f21 = readPages[(r29+744)>>>12][((r29+744)>>>2)&0x3ff]; r29 = r29 + 752; /* Next insn is delay slot */ pc=r31; return; case 0x617f0: r2 = r0 + 1; if(r19 != r2) { /* Next insn is delay slot */ pc=0x61958; run_61800(); return; } if(r23 != r0) { /* Next insn is delay slot */ pc=0x61808; run_61800(); return; } case 0x61800: pc=0x61800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61800() throws ExecutionException { /* 0x61800 - 0x61a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x61800: r23 = r0 + -1; case 0x61808: r18 = r18 & 16; if(r18 == r0) { /* Next insn is delay slot */ pc=0x62048; run_62000(); return; } r10 = r29 + 24; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r18 = r0 + r0; r19 = r10 + r0; case 0x61824: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r19 + r3; addr=r3+352; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x618a4; continue; } case 0x61840: r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + -1; r18 = r18 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; if(r23 == r18) { /* Next insn is delay slot */ pc=0x618ac; continue; } if(r3 > 0) { /* Next insn is delay slot */ pc=0x61824; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x61878; pc=0x68e00; run_68e00(); return; case 0x61878: if(r2 != r0) { /* Next insn is delay slot */ pc=0x618ac; continue; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r19 + r3; addr=r3+352; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x61840; continue; } case 0x618a4: if(r18 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } case 0x618ac: r21 = r21 + r18; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x618b8: if(r23 != r0) { /* Next insn is delay slot */ pc=0x618c4; continue; } r23 = r0 + -1; case 0x618c4: r2 = r18 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6235c; run_62200(); return; } r18 = r18 & 16; if(r18 == r0) { /* Next insn is delay slot */ pc=0x623fc; run_62200(); return; } r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r18 = r0 + r0; case 0x618e8: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r4 + r3; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 8; if(r3 != r0) { /* Next insn is delay slot */ pc=0x618ac; continue; } r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + -1; r18 = r18 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; if(r23 == r18) { /* Next insn is delay slot */ pc=0x618ac; continue; } if(r3 > 0) { /* Next insn is delay slot */ pc=0x618e8; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x61940; pc=0x68e00; run_68e00(); return; case 0x61940: if(r2 != r0) { /* Next insn is delay slot */ pc=0x618ac; continue; } r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x618e8; continue; case 0x61958: if(r23 != r0) { /* Next insn is delay slot */ pc=0x61964; continue; } r23 = r0 + 1; case 0x61964: r2 = r18 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6224c; run_62200(); return; } r18 = r18 & 16; if(r18 == r0) { /* Next insn is delay slot */ pc=0x62718; run_62600(); return; } r18 = r0 + r0; /* Next insn is delay slot */ pc=0x619b4; continue; case 0x61988: r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r18 = r18 + r2; r23 = r23 - r2; r2 = r3 + r2; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x619ac; pc=0x68e00; run_68e00(); return; case 0x619ac: if(r2 != r0) { /* Next insn is delay slot */ pc=0x62704; run_62600(); return; } case 0x619b4: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r3 = r2 < r23 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x61988; continue; } r2 = r2 - r23; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r18 = r18 + r23; r8 = r2 + r23; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r8; r21 = r21 + r18; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x619ec: r2 = r23 + -1; r2 = (r2&0xffffffffL) < (349&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x62038; run_62000(); return; } r6 = r0 + r0; case 0x61a00: pc=0x61a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61a00() throws ExecutionException { /* 0x61a00 - 0x61c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x61a00: r10 = r29 + 24; r4 = 7 << 16; r11 = r20 + r0; r20 = r16 + r0; r16 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; r18 = r18 | 3456; r8 = r0 + r0; r19 = r10 + r0; r7 = r0 + 512; r22 = r4 + 3884; case 0x61a28: r5 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r3 + -43; r2 = r2 & 255; r9 = (r2&0xffffffffL) < (78&0xffffffffL) ? 1 : 0; if(r9 == r0) { /* Next insn is delay slot */ pc=0x61ecc; run_61e00(); return; } r4 = 7 << 16; r2 = r2 << 2; r4 = r4 + 3572; r2 = r4 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x61a6c: r2 = r3 + r18; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61ab4; continue; } r2 = r0 + -385; r19 = r19 & r2; case 0x61a80: addr=r22+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r22 = r22 + 1; case 0x61a88: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r23 = r23 + -1; r2 = r2 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x61cb4; run_61c00(); return; } case 0x61aa4: r6 = r6 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r6; if(r23 != r0) { /* Next insn is delay slot */ pc=0x61638; run_61600(); return; } case 0x61ab4: r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x61cf4; run_61c00(); return; } case 0x61ac4: r2 = r3 + -1; r2 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x62960; run_62800(); return; } r2 = r18 + -1; r2 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61b5c; continue; } r2 = r18 < 3 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x628e0; run_62800(); return; } r2 = r0 + 3; r7 = r18 & 255; if(r18 == r2) { /* Next insn is delay slot */ pc=0x61b5c; continue; } writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r16; r23 = r22 + r0; r16 = r7 + r0; r18 = r10 + r0; case 0x61b10: r23 = r23 + -1; addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; /* Next insn is delay slot */ r31=0x61b28; pc=0x68c00; run_68c00(); return; case 0x61b28: r3 = r16 + -1; r2 = r23 + r21; r16 = r3 & 255; r4 = r2 - r22; r2 = r16 << 24; r2 = r2 >> 24; r2 = r2 < 4 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61b10; continue; } r16 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; r10 = r18 + r0; r21 = r4 + r0; r22 = r23 + r0; case 0x61b5c: r2 = r19 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61be4; continue; } r2 = r19 & 1024; if(r2 != r0) { /* Next insn is delay slot */ pc=0x62920; run_62800(); return; } addr=r22+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r2 = r0 + 101; r23 = r22 + -1; r7 = r21 + -1; if(r5 == r2) { /* Next insn is delay slot */ pc=0x61bbc; continue; } r2 = r0 + 69; if(r5 == r2) { /* Next insn is delay slot */ pc=0x61bbc; continue; } r4 = r17 + r0; r6 = r30 + r0; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x61bac; pc=0x68c00; run_68c00(); return; case 0x61bac: addr=r22+-2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r23 = r22 + -2; r7 = r21 + -2; case 0x61bbc: r4 = r17 + r0; r6 = r30 + r0; writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = r7; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x61bd4; pc=0x68c00; run_68c00(); return; case 0x61bd4: r7 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r21 = r7 + r0; r22 = r23 + r0; case 0x61be4: r2 = r19 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; } r4 = r19 & 1536; r2 = r0 + 1024; addr=r22+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 == r2) { /* Next insn is delay slot */ pc=0x6277c; run_62600(); return; } case 0x61c00: pc=0x61c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61c00() throws ExecutionException { /* 0x61c00 - 0x61e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x61c00: r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x62654; run_62600(); return; } case 0x61c14: r4 = r17 + r0; r5 = r10 + r0; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x61c28; pc=0x66c00; run_66c00(); return; case 0x61c28: r2 = r19 & 1; f20 = f0; f21 = f1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x62544; run_62400(); return; } case 0x61c38: r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f20; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f21; case 0x61c48: r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x61c60: r2 = r19 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61a6c; run_61a00(); return; } r2 = r0 + -129; r5 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; r19 = r19 & r2; r2 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; r5 = r5 + 1; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r5; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61a88; run_61a00(); return; } r2 = r2 + -1; writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r2; r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r23 = r23 + 1; r2 = r2 + -1; r23 = r23 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 > 0) { /* Next insn is delay slot */ pc=0x61aa4; run_61a00(); return; } case 0x61cb4: r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = r3; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; writePages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff] = r11; /* Next insn is delay slot */ r31=0x61cd0; pc=0x68e00; run_68e00(); return; case 0x61cd0: r3 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r11 = readPages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } if(r23 != r0) { /* Next insn is delay slot */ pc=0x61638; run_61600(); return; } /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; case 0x61cf4: r2 = r0 + -257; r19 = r19 & r2; /* Next insn is delay slot */ pc=0x61ac4; run_61a00(); return; case 0x61d04: r2 = r19 & 512; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; r4 = r0 + -641; r19 = r19 & r4; writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61d28: r2 = r19 & 128; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r2 = r0 + -129; r19 = r19 & r2; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61d44: r2 = r0 + 7; if(r18 != r2) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r18 = r0 + 8; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61d5c: r2 = r0 + 6; if(r18 != r2) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r18 = r0 + 7; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61d74: if(r3 != r0) { /* Next insn is delay slot */ pc=0x624ac; run_62400(); return; } r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x62590; run_62400(); return; } case 0x61d8c: r2 = r0 + 1; if(r18 == r2) { /* Next insn is delay slot */ pc=0x61da4; continue; } r2 = r0 + 4; if(r18 != r2) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } case 0x61da4: r18 = r18 + 1; r18 = r18 << 24; r18 = r18 >> 24; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61db8: if(r18 != r0) { /* Next insn is delay slot */ pc=0x624c4; run_62400(); return; } r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61cf4; continue; } r4 = r19 & 1792; r2 = r0 + 1792; if(r4 != r2) { /* Next insn is delay slot */ pc=0x61ac4; run_61a00(); return; } r19 = r19 & r11; r18 = r0 + 1; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61df0: r2 = r0 + 2; if(r18 != r2) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r18 = r0 + 3; case 0x61e00: pc=0x61e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_61e00() throws ExecutionException { /* 0x61e00 - 0x62000 */ int addr, tmp; for(;;) { switch(pc) { case 0x61e00: /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61e08: r2 = r19 & 1280; r4 = r0 + 1024; if(r2 == r4) { /* Next insn is delay slot */ pc=0x61e34; continue; } r2 = r19 & 1024; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ac4; run_61a00(); return; } case 0x61e34: r2 = r19 & 512; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61e54; continue; } r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; r2 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = r22; r4 = r4 - r2; writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r4; case 0x61e54: r19 = r19 & r11; r19 = r19 | 384; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61e68: r2 = r0 + 1; if(r3 != r2) { /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; } r3 = r0 + 2; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x61e80: r2 = r18 & 1536; if(r2 != r7) { /* Next insn is delay slot */ pc=0x61ecc; continue; } r2 = r0 + -513; r18 = r18 & r2; r18 = r18 | 1280; r16 = r0 + 16; case 0x61e9c: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + -1; r19 = r19 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x61fc4; continue; } case 0x61eb8: r5 = r5 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r5; case 0x61ec0: r23 = r23 + -1; if(r23 != r0) { /* Next insn is delay slot */ pc=0x61a28; run_61a00(); return; } case 0x61ecc: r2 = r18 & 256; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r16; r16 = r20 + r0; r20 = r11 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ef8; continue; } r2 = ((r10 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x62620; run_62600(); return; } case 0x61ef0: if(r10 == r19) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } case 0x61ef8: r2 = r18 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x624e4; run_62400(); return; } case 0x61f04: r10 = r19 - r10; r23 = r10 + r8; r21 = r21 + r23; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x61f18: r2 = r16 < 11 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61ecc; continue; } r2 = r0 + -2945; r18 = r18 & r2; /* Next insn is delay slot */ pc=0x61e9c; continue; case 0x61f34: r2 = r18 & 128; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ecc; continue; } r2 = r0 + -129; r18 = r18 & r2; /* Next insn is delay slot */ pc=0x61e9c; continue; case 0x61f50: r2 = r16 << 1; r2 = r2 + r22; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r16 = tmp; r2 = r0 + -2945; r18 = r18 & r2; /* Next insn is delay slot */ pc=0x61e9c; continue; case 0x61f6c: r2 = r18 & 2048; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61e9c; continue; } if(r16 != r0) { /* Next insn is delay slot */ pc=0x61f88; continue; } r18 = r18 | 512; r16 = r0 + 8; case 0x61f88: r2 = r18 & 1024; if(r2 != r0) { /* Next insn is delay slot */ pc=0x62580; run_62400(); return; } r2 = r0 + -897; r18 = r18 & r2; if(r6 == r0) { /* Next insn is delay slot */ pc=0x61fac; continue; } r6 = r6 + -1; r23 = r23 + 1; case 0x61fac: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r8 = r8 + 1; r2 = r2 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 > 0) { /* Next insn is delay slot */ pc=0x61eb8; continue; } case 0x61fc4: r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = r6; writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = r7; writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; writePages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff] = r11; /* Next insn is delay slot */ r31=0x61fe8; pc=0x68e00; run_68e00(); return; case 0x61fe8: r6 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; r7 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r11 = readPages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61ec0; continue; } case 0x62000: pc=0x62000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62000() throws ExecutionException { /* 0x62000 - 0x62200 */ int addr, tmp; for(;;) { switch(pc) { case 0x62000: /* Next insn is delay slot */ pc=0x61ecc; run_61e00(); return; case 0x6200c: r2 = r16 << 1; r2 = r2 + r22; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r16 = tmp; r2 = r16 < 9 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x61ecc; run_61e00(); return; } r2 = r0 + -2945; r18 = r18 & r2; /* Next insn is delay slot */ pc=0x61e9c; run_61e00(); return; case 0x62038: r6 = r23 + -349; r23 = r0 + 349; /* Next insn is delay slot */ pc=0x61a00; run_61a00(); return; case 0x62048: r18 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r10 = r29 + 24; r19 = r20 + 4; r22 = r10 + r0; r20 = r18 + r0; case 0x6205c: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r22 + r3; addr=r3+352; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x620dc; continue; } r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r20 = r20 + 1; r3 = r3 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; r3 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r23 = r23 + -1; addr=r20+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r23 == r0) { /* Next insn is delay slot */ pc=0x620dc; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x6205c; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x620cc; pc=0x68e00; run_68e00(); return; case 0x620cc: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6205c; continue; } if(r18 == r20) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } case 0x620dc: r18 = r20 - r18; if(r18 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r3 + 1; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; r20 = r19 + r0; r21 = r21 + r18; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x62108: r23 = r23 + -349; writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r23; r23 = r0 + 349; /* Next insn is delay slot */ pc=0x61610; run_61600(); return; case 0x6211c: r2 = 4 << 16; r2 = r2 + 12800; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r0; r19 = r0 + 3; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x62138: r18 = r18 | 1; /* Next insn is delay slot */ pc=0x61540; run_61400(); return; case 0x62144: r18 = r18 | 4; /* Next insn is delay slot */ pc=0x61540; run_61400(); return; case 0x62150: r18 = r18 | 64; r19 = r0 + r0; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x62160: r5 = r16 + r0; r4 = r29 + 376; /* Next insn is delay slot */ r31=0x62170; pc=0x66800; run_66800(); return; case 0x62170: r16 = r2 + r0; r18 = r18 | 64; r19 = r0 + 1; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x62184: r18 = r18 | 512; case 0x62188: r2 = 6 << 16; r2 = r2 + -2048; r3 = r0 + 16; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; r19 = r0 + 3; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x621a8: r18 = r18 | 2; /* Next insn is delay slot */ pc=0x61540; run_61400(); return; case 0x621b4: r19 = r0 + 4; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x621c0: r2 = r23 << 1; r23 = r23 << 3; r2 = r2 + r23; r3 = r3 + -48; r23 = r3 + r2; /* Next insn is delay slot */ pc=0x61540; run_61400(); return; case 0x621dc: r18 = r18 | 16; /* Next insn is delay slot */ pc=0x61540; run_61400(); return; case 0x621e8: r2 = 6 << 16; r2 = r2 + -2048; r3 = r0 + 10; writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; r19 = r0 + 3; case 0x62200: pc=0x62200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62200() throws ExecutionException { /* 0x62200 - 0x62400 */ int addr, tmp; for(;;) { switch(pc) { case 0x62200: /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x62208: r19 = r0 + 2; /* Next insn is delay slot */ pc=0x615b0; run_61400(); return; case 0x62214: r18 = r18 | 544; /* Next insn is delay slot */ pc=0x62188; run_62000(); return; case 0x62220: r2 = r18 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; } r2 = r18 & 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x627a0; run_62600(); return; } r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r21&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x6224c: r3 = r29 + 632; r4 = r3 + r0; r5 = r0 + r0; r6 = r0 + 8; r18 = r18 & 16; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x6226c; pc=0x48fec; run_48e00(); return; case 0x6226c: writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r18; if(r18 == r0) { /* Next insn is delay slot */ pc=0x625e4; run_62400(); return; } r18 = r0 + r0; case 0x6227c: r22 = r0 + r0; writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r16; r19 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; r16 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r20; r20 = r22 + r0; case 0x62294: /* Next insn is delay slot */ r31=0x6229c; pc=0x5a800; run_5a800(); return; case 0x6229c: if(r2 == r20) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r4 = r29 + 24; r3 = r4 + r20; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r22 = r20 + 1; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r3 = r3 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r5 = r18 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r4 = r17 + r0; r6 = r29 + 24; r7 = r22 + r0; /* Next insn is delay slot */ r31=0x622ec; pc=0x66000; run_66000(); return; case 0x622ec: r5 = r0 + -1; if(r2 == r5) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } if(r2 != r0) { /* Next insn is delay slot */ pc=0x626e0; run_62600(); return; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x6230c; continue; } writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r0; case 0x6230c: r21 = r21 + r22; r23 = r23 + -1; if(r19 != r0) { /* Next insn is delay slot */ pc=0x626f8; run_62600(); return; } r18 = r18 + 4; r20 = r0 + r0; case 0x62324: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x625b0; run_62400(); return; } case 0x62334: if(r23 != r0) { /* Next insn is delay slot */ pc=0x62294; continue; } r16 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; r20 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; case 0x62344: r3 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x61c48; run_61c00(); return; } /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x6235c: r3 = r29 + 632; r4 = r3 + r0; r5 = r0 + r0; r6 = r0 + 8; r18 = r18 & 16; writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x6237c; pc=0x48fec; run_48e00(); return; case 0x6237c: writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r18; if(r18 != r0) { /* Next insn is delay slot */ pc=0x625f4; run_62400(); return; } r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; case 0x62390: r6 = r0 + r0; writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r16; r22 = r0 + -2; r16 = r6 + r0; case 0x623a0: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r3 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r3 + r2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x623d0; continue; } if(r23 != r0) { /* Next insn is delay slot */ pc=0x627b4; run_62600(); return; } case 0x623d0: r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; case 0x623d4: r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; } r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; r3 = r3 + 1; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x623fc: r19 = r20 + 4; case 0x62400: pc=0x62400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62400() throws ExecutionException { /* 0x62400 - 0x62600 */ int addr, tmp; for(;;) { switch(pc) { case 0x62400: r20 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r18 = r20 + r0; case 0x6240c: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r5 + r3; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r3 = r3 & 8; if(r3 != r0) { /* Next insn is delay slot */ pc=0x62488; continue; } r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r18 = r18 + 1; r3 = r3 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; r3 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r23 = r23 + -1; addr=r18+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r23 == r0) { /* Next insn is delay slot */ pc=0x62488; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x6240c; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x62480; pc=0x68e00; run_68e00(); return; case 0x62480: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6240c; continue; } case 0x62488: r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; addr=r18+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r3 + 1; r18 = r18 - r20; r21 = r21 + r18; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; r20 = r19 + r0; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x624ac: r2 = r0 + 2; if(r3 != r2) { /* Next insn is delay slot */ pc=0x61d8c; run_61c00(); return; } r3 = r0 + 3; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x624c4: r2 = r0 + 3; if(r18 == r2) { /* Next insn is delay slot */ pc=0x61da4; run_61c00(); return; } r2 = r0 + 5; if(r18 == r2) { /* Next insn is delay slot */ pc=0x61da4; run_61c00(); return; } /* Next insn is delay slot */ pc=0x61ab4; run_61a00(); return; case 0x624e4: r3 = readPages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff]; r7 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; addr=r19+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r5 = r10 + r0; writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; r4 = r17 + r0; r6 = r0 + r0; /* Next insn is delay slot */ pc=r3; r31=0x6250c; return; case 0x6250c: r3 = r18 & 32; r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x62600; run_62600(); return; } case 0x62520: r3 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; case 0x6252c: r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x61f04; run_61e00(); return; case 0x62544: r9 = r19 & 2; if(r9 != r0) { /* Next insn is delay slot */ pc=0x61c38; run_61c00(); return; } f12 = f0; f13 = f1; r18 = r20 + 4; r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x62564; pc=0x37a00; run_37a00(); return; case 0x62564: if(r2 == r0) { /* Next insn is delay slot */ pc=0x62878; run_62800(); return; } f20=Float.floatToRawIntBits((float)(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = f20; r20 = r18 + r0; /* Next insn is delay slot */ pc=0x61c48; run_61c00(); return; case 0x62580: r2 = r0 + -1409; r18 = r18 & r2; /* Next insn is delay slot */ pc=0x61e9c; run_61e00(); return; case 0x62590: r4 = r19 & 1792; r2 = r0 + 1792; if(r4 != r2) { /* Next insn is delay slot */ pc=0x61d8c; run_61c00(); return; } r19 = r19 & r11; r3 = r0 + 1; /* Next insn is delay slot */ pc=0x61a80; run_61a00(); return; case 0x625b0: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x625c0; pc=0x68e00; run_68e00(); return; case 0x625c0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x62334; run_62200(); return; } r22 = r20 + r0; r16 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; r20 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; if(r22 == r0) { /* Next insn is delay slot */ pc=0x62344; run_62200(); return; } /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; case 0x625e4: r18 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; /* Next insn is delay slot */ pc=0x6227c; run_62200(); return; case 0x625f4: r19 = r29 + 640; /* Next insn is delay slot */ pc=0x62390; run_62200(); return; case 0x62600: pc=0x62600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62600() throws ExecutionException { /* 0x62600 - 0x62800 */ int addr, tmp; for(;;) { switch(pc) { case 0x62600: r3 = r18 & 4; if(r3 == r0) { /* Next insn is delay slot */ pc=0x62520; run_62400(); return; } r3 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x6252c; run_62400(); return; case 0x62620: addr=r19+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r22 = r19 + -1; r4 = r17 + r0; r6 = r30 + r0; writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; r19 = r22 + r0; /* Next insn is delay slot */ r31=0x62644; pc=0x68c00; run_68c00(); return; case 0x62644: r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x61ef0; run_61e00(); return; case 0x62654: r3 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; r6 = r0 + r0; r5 = r3 + 1; r4 = r17 + r0; r7 = r0 + 10; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x62674; pc=0x43200; run_43200(); return; case 0x62674: r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; r22 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r6 = r2 - r3; case 0x62684: r2 = r29 + 363; r2 = ((r22 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x62698; continue; } r22 = r29 + 362; case 0x62698: r2 = 7 << 16; r4 = r22 + r0; r5 = r2 + 2764; writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x626b0; pc=0x42000; run_42000(); return; case 0x626b0: r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; r4 = r17 + r0; r5 = r10 + r0; r6 = r0 + r0; /* Next insn is delay slot */ r31=0x626c8; pc=0x66c00; run_66c00(); return; case 0x626c8: r2 = r19 & 1; f20 = f0; f21 = f1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x62544; run_62400(); return; } /* Next insn is delay slot */ pc=0x61c38; run_61c00(); return; case 0x626e0: r3 = r0 + -2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6230c; run_62200(); return; } r20 = r22 + r0; /* Next insn is delay slot */ pc=0x62324; run_62200(); return; case 0x626f8: r20 = r0 + r0; /* Next insn is delay slot */ pc=0x62324; run_62200(); return; case 0x62704: if(r18 == r0) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } r21 = r21 + r18; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x62718: r5 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r4 = r17 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r30; r6 = r0 + 1; r7 = r23 + r0; r18 = r20 + 4; /* Next insn is delay slot */ r31=0x62738; pc=0x69000; run_69000(); return; case 0x62738: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; r21 = r2 + r21; r3 = r3 + 1; writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; r20 = r18 + r0; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x6275c: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x6276c; pc=0x68e00; run_68e00(); return; case 0x6276c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x616fc; run_61600(); return; } /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; case 0x6277c: r3 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; r4 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; r18 = r3 - r4; r6 = r0 - r18; if(r18 != r0) { /* Next insn is delay slot */ pc=0x62684; continue; } /* Next insn is delay slot */ pc=0x61c14; run_61c00(); return; case 0x627a0: r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; r20 = r20 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r21; /* Next insn is delay slot */ pc=0x6147c; run_61400(); return; case 0x627b4: /* Next insn is delay slot */ r31=0x627bc; pc=0x5a800; run_5a800(); return; case 0x627bc: if(r2 == r16) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r4 = r29 + 24; r18 = r16 + 1; r16 = r4 + r16; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r4 = r17 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; r5 = r19 + r0; case 0x62800: pc=0x62800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62800() throws ExecutionException { /* 0x62800 - 0x62a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x62800: r6 = r29 + 24; r7 = r18 + r0; /* Next insn is delay slot */ r31=0x62810; pc=0x66000; run_66000(); return; case 0x62810: r4 = r0 + -1; if(r2 == r4) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } if(r2 != r0) { /* Next insn is delay slot */ pc=0x62894; continue; } writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; r4 = r0 + r0; case 0x6282c: /* Next insn is delay slot */ r31=0x62834; pc=0x65e00; run_65e00(); return; case 0x62834: if(r2 == r0) { /* Next insn is delay slot */ pc=0x629a0; continue; } r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; if(r18 == r0) { /* Next insn is delay slot */ pc=0x623d4; run_62200(); return; } case 0x62848: r18 = r18 + -1; r5 = r29 + 24; r2 = r5 + r18; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; /* Next insn is delay slot */ r31=0x62868; pc=0x68c00; run_68c00(); return; case 0x62868: if(r18 != r0) { /* Next insn is delay slot */ pc=0x62848; continue; } /* Next insn is delay slot */ pc=0x623d4; run_62200(); return; case 0x62878: r4 = r0 + r0; /* Next insn is delay slot */ r31=0x62884; pc=0x66a00; run_66a00(); return; case 0x62884: writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = f0; r20 = r18 + r0; /* Next insn is delay slot */ pc=0x61c48; run_61c00(); return; case 0x62894: if(r2 != r22) { /* Next insn is delay slot */ pc=0x629c4; continue; } r16 = r18 + r0; case 0x628a0: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x623a0; run_62200(); return; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x628c0; pc=0x68e00; run_68e00(); return; case 0x628c0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x623a0; run_62200(); return; } r6 = r16 + r0; r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; if(r6 != r0) { /* Next insn is delay slot */ pc=0x6178c; run_61600(); return; } /* Next insn is delay slot */ pc=0x623d4; run_62200(); return; case 0x628e0: r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; r16 = r10 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } case 0x628f4: r23 = r23 + -1; addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; /* Next insn is delay slot */ r31=0x6290c; pc=0x68c00; run_68c00(); return; case 0x6290c: if(r23 != r16) { /* Next insn is delay slot */ pc=0x628f4; continue; } r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x617b4; run_61600(); return; case 0x62920: r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } r16 = r10 + r0; case 0x62934: r23 = r23 + -1; addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; /* Next insn is delay slot */ r31=0x6294c; pc=0x68c00; run_68c00(); return; case 0x6294c: if(r23 != r16) { /* Next insn is delay slot */ pc=0x62934; continue; } r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x617b4; run_61600(); return; case 0x62960: r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x61740; run_61600(); return; } r16 = r10 + r0; case 0x62974: r23 = r23 + -1; addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; /* Next insn is delay slot */ r31=0x6298c; pc=0x68c00; run_68c00(); return; case 0x6298c: if(r23 != r16) { /* Next insn is delay slot */ pc=0x62974; continue; } r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x617b4; run_61600(); return; case 0x629a0: r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; r21 = r21 + r18; r23 = r23 + -1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x629d0; continue; } r19 = r19 + 4; r16 = r0 + r0; /* Next insn is delay slot */ pc=0x628a0; continue; case 0x629c4: r4 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x6282c; continue; case 0x629d0: r16 = r0 + r0; /* Next insn is delay slot */ pc=0x628a0; continue; case 0x62a00: pc=0x62a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62a00() throws ExecutionException { /* 0x62a00 - 0x62c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x62a00: r5 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48860; run_48800(); return; case 0x62c00: pc=0x62c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62c00() throws ExecutionException { /* 0x62c00 - 0x62e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x62c00: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x48cd0; run_48c00(); return; case 0x62e00: pc=0x62e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_62e00() throws ExecutionException { /* 0x62e00 - 0x63000 */ int addr, tmp; for(;;) { switch(pc) { case 0x62e00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x48960; run_48800(); return; case 0x63000: pc=0x63000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63000() throws ExecutionException { /* 0x63000 - 0x63200 */ int addr, tmp; for(;;) { switch(pc) { case 0x63000: r29 = r29 + -32; r2 = r4 + r0; r4 = r29 + 40; r3 = r5 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; r5 = r2 + r0; r7 = r6 + r0; r6 = r3 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x63038; pc=0x48820; run_48800(); return; case 0x63038: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x63200: pc=0x63200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63200() throws ExecutionException { /* 0x63200 - 0x63400 */ int addr, tmp; for(;;) { switch(pc) { case 0x63200: r2 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; 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; r19 = r5 + r0; r22 = r6 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63308; continue; } r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; r20 = r4 + r0; r23 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r21 = r0 + -1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x632fc; continue; } case 0x63258: r18 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; r16 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; r18 = r18 >>> 2; r17 = r0 + r0; if(r18 > 0) { /* Next insn is delay slot */ pc=0x63288; continue; } /* Next insn is delay slot */ pc=0x632e4; continue; case 0x63278: r17 = r17 + 1; r16 = r16 + 4; if(r18 == r17) { /* Next insn is delay slot */ pc=0x632e0; continue; } case 0x63288: r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r4 = r20 + r0; r6 = r19 + r0; /* Next insn is delay slot */ r31=0x6329c; pc=0x65800; run_65800(); return; case 0x6329c: if(r2 != r21) { /* Next insn is delay slot */ pc=0x63278; continue; } r2 = r0 + -1; case 0x632a8: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r0; writePages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff] = r0; r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x632e0: r2 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; case 0x632e4: r18 = r18 << 2; r2 = r2 - r18; writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; r23 = r23 + 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63258; continue; } case 0x632fc: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x632a8; continue; case 0x63308: /* Next insn is delay slot */ r31=0x63310; pc=0x59c00; run_59c00(); return; case 0x63310: /* Next insn is delay slot */ pc=0x632a8; continue; case 0x63400: pc=0x63400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63400() throws ExecutionException { /* 0x63400 - 0x63600 */ int addr, tmp; for(;;) { switch(pc) { case 0x63400: r3 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x63418; continue; } /* Next insn is delay slot */ pc=0x63200; run_63200(); return; case 0x63418: writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x63600: pc=0x63600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63600() throws ExecutionException { /* 0x63600 - 0x63800 */ int addr, tmp; for(;;) { switch(pc) { case 0x63600: r29 = r29 + -1248; writePages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff] = r23; writePages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff] = r20; writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r18; writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r31; writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r30; writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r22; writePages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff] = r21; writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r19; writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r17; writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r16; r18 = r4 + r0; r23 = r5 + r0; r20 = r6 + r0; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r7; if(r4 == r0) { /* Next insn is delay slot */ pc=0x63654; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6414c; run_64000(); return; } case 0x63654: addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; if(r4 != r0) { /* Next insn is delay slot */ pc=0x63688; continue; } r4 = readPages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff]; r2 = r0 + -8193; r3 = r3 | 8192; r2 = r4 & r2; writePages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff] = r2; addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r3 & 65535; case 0x63688: r4 = r2 & 8; if(r4 == r0) { /* Next insn is delay slot */ pc=0x63fd4; run_63e00(); return; } r4 = readPages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x63fd4; run_63e00(); return; } r2 = r2 & 26; r4 = r0 + 10; if(r2 == r4) { /* Next insn is delay slot */ pc=0x64004; run_64000(); return; } case 0x636b4: r3 = r29 + 1080; writePages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff] = r3; r4 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; r3 = r29 + 1079; r21 = r29 + 16; r10 = 7 << 16; writePages[(r29+1164)>>>12][((r29+1164)>>>2)&0x3ff] = r3; r3 = r4 - r3; writePages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff] = r3; writePages[(r29+1144)>>>12][((r29+1144)>>>2)&0x3ff] = r21; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r0; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r0; writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r0; r22 = r10 + 4292; r3 = r21 + r0; writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r18; writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r23; r16 = r20 + r0; case 0x63700: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x64728; run_64600(); return; } r4 = r0 + 37; r17 = r16 + r0; if(r2 != r4) { /* Next insn is delay slot */ pc=0x63730; continue; } /* Next insn is delay slot */ pc=0x63798; continue; case 0x63728: if(r2 == r4) { /* Next insn is delay slot */ pc=0x63744; continue; } case 0x63730: r17 = r17 + 1; addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63728; continue; } case 0x63744: r19 = r17 - r16; if(r19 == r0) { /* Next insn is delay slot */ pc=0x63798; continue; } r2 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r4 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r19 + r4; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r4; if(r2 != r0) { /* Next insn is delay slot */ pc=0x637fc; continue; } if(r4 != r0) { /* Next insn is delay slot */ pc=0x64640; run_64600(); return; } r5 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; r5 = r5 + r19; r3 = r21 + r0; writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r5; case 0x63798: addr=r17+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x647a0; run_64600(); return; } r2 = r17 + 1; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r6 = r0 + r0; r30 = r0 + -1; r17 = r0 + r0; r23 = r0 + r0; r7 = r0 + 42; case 0x637c4: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r16 = r2 + 1; case 0x637cc: r2 = r4 + -32; r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6457c; run_64400(); return; } r5 = 7 << 16; r2 = r2 << 2; r5 = r5 + 3920; r2 = r5 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x637fc: r3 = r3 + 8; case 0x63800: pc=0x63800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63800() throws ExecutionException { /* 0x63800 - 0x63a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x63800: r5 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; r5 = r5 + r19; writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x63798; run_63600(); return; case 0x63818: r23 = r23 | 16; case 0x6381c: r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x63828: r23 = r23 | 16; case 0x6382c: r2 = r23 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63c68; run_63c00(); return; } r2 = r23 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63c68; run_63c00(); return; } r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r4 = r0 + 1; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x63884; continue; case 0x63860: r23 = r23 | 16; case 0x63864: r2 = r23 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x642e8; run_64200(); return; } case 0x63870: r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r4 = r0 + r0; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; case 0x63884: addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = r30 + r0; r5 = r0 + r0; case 0x63890: if(r30 < 0) { /* Next insn is delay slot */ pc=0x638a0; continue; } r6 = r0 + -129; r23 = r23 & r6; case 0x638a0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63d50; run_63c00(); return; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x63d50; run_63c00(); return; } if(r4 == r0) { /* Next insn is delay slot */ pc=0x64178; run_64000(); return; } case 0x638b8: r18 = r29 + 1080; case 0x638bc: r2 = r19 < r30 ? 1 : 0; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r19; if(r2 == r0) { /* Next insn is delay slot */ pc=0x638d0; continue; } writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r30; case 0x638d0: if(r5 == r0) { /* Next insn is delay slot */ pc=0x638e8; continue; } r2 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; case 0x638e8: r15 = r23 & 2; if(r15 == r0) { /* Next insn is delay slot */ pc=0x63904; continue; } r4 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r4 = r4 + 2; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r4; case 0x63904: r20 = r23 & 132; if(r20 != r0) { /* Next insn is delay slot */ pc=0x63cc4; run_63c00(); return; } r5 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r9 = r17 - r5; if(r9 <= 0) { /* Next insn is delay slot */ pc=0x63cc4; run_63c00(); return; } r2 = r9 < 17 ? 1 : 0; r8 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64854; run_64800(); return; } writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r16; r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; r25 = r0 + 16; writePages[(r29+1196)>>>12][((r29+1196)>>>2)&0x3ff] = r15; r16 = r9 + r0; /* Next insn is delay slot */ pc=0x63970; continue; case 0x63954: r7 = r4 + 2; r3 = r3 + 8; r4 = r2 + r0; case 0x63960: r16 = r16 + -16; r2 = r16 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x639b8; continue; } case 0x63970: r2 = r4 + 1; r8 = r8 + 16; r5 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r25; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r8; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; if(r5 != r0) { /* Next insn is delay slot */ pc=0x63954; continue; } if(r8 != r0) { /* Next insn is delay slot */ pc=0x63c88; run_63c00(); return; } r16 = r16 + -16; r2 = r16 < 17 ? 1 : 0; r4 = r0 + r0; r7 = r0 + 1; r3 = r21 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63970; continue; } case 0x639b8: r9 = r16 + r0; r15 = readPages[(r29+1196)>>>12][((r29+1196)>>>2)&0x3ff]; r16 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; case 0x639c4: r2 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; r5 = r9 + r8; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r7 < 8 ? 1 : 0; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r7; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6415c; run_64000(); return; } addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r3 + 8; r4 = r7 + 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63ce0; run_63c00(); return; } case 0x639fc: if(r15 == r0) { /* Next insn is delay slot */ pc=0x63a38; run_63a00(); return; } case 0x63a00: pc=0x63a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63a00() throws ExecutionException { /* 0x63a00 - 0x63c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x63a00: r2 = r29 + 1156; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r0 + 2; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; r5 = r5 + 2; r2 = r4 < 8 ? 1 : 0; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x640e0; run_64000(); return; } r7 = r4 + r0; r3 = r3 + 8; r4 = r4 + 1; case 0x63a38: r2 = r0 + 128; if(r20 == r2) { /* Next insn is delay slot */ pc=0x63ebc; run_63e00(); return; } case 0x63a44: r20 = r30 - r19; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x63b0c; continue; } r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64790; run_64600(); return; } r4 = 7 << 16; r8 = r4 + 4276; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r16; r30 = r0 + 16; r16 = r8 + r0; /* Next insn is delay slot */ pc=0x63a94; continue; case 0x63a78: r4 = r7 + 2; r3 = r3 + 8; r7 = r2 + r0; case 0x63a84: r20 = r20 + -16; r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63adc; continue; } case 0x63a94: r2 = r7 + 1; r5 = r5 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r30; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x63a78; continue; } if(r5 != r0) { /* Next insn is delay slot */ pc=0x63d1c; run_63c00(); return; } r20 = r20 + -16; r2 = r20 < 17 ? 1 : 0; r7 = r0 + r0; r4 = r0 + 1; r3 = r21 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63a94; continue; } case 0x63adc: r8 = r16 + r0; r16 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; case 0x63ae4: r5 = r5 + r20; r2 = r4 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63e80; run_63e00(); return; } r3 = r3 + 8; r4 = r4 + 1; case 0x63b0c: r14 = r19 + r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r18; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; if(r4 != r0) { /* Next insn is delay slot */ pc=0x63ea4; run_63e00(); return; } if(r14 != r0) { /* Next insn is delay slot */ pc=0x64614; run_64600(); return; } writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; r3 = r21 + r0; case 0x63b3c: r12 = r23 & 4; if(r12 == r0) { /* Next insn is delay slot */ pc=0x63c0c; run_63c00(); return; } r5 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r18 = r17 - r5; if(r18 <= 0) { /* Next insn is delay slot */ pc=0x63c0c; run_63c00(); return; } r2 = r18 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x648a8; run_64800(); return; } r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; r19 = r0 + 16; r20 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x63ba0; continue; case 0x63b84: r5 = r4 + 2; r3 = r3 + 8; r4 = r2 + r0; case 0x63b90: r18 = r18 + -16; r2 = r18 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63be8; continue; } case 0x63ba0: r2 = r4 + 1; r14 = r14 + 16; r5 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; if(r5 != r0) { /* Next insn is delay slot */ pc=0x63b84; continue; } if(r14 != r0) { /* Next insn is delay slot */ pc=0x63e4c; run_63e00(); return; } r18 = r18 + -16; r2 = r18 < 17 ? 1 : 0; r4 = r0 + r0; r5 = r0 + 1; r3 = r21 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63ba0; continue; } case 0x63be8: r2 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; r14 = r14 + r18; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r5; r5 = r5 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r18; case 0x63c00: pc=0x63c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63c00() throws ExecutionException { /* 0x63c00 - 0x63e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x63c00: writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6451c; run_64400(); return; } case 0x63c0c: r19 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r2 = r19 < r17 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63c24; continue; } r19 = r17 + r0; case 0x63c24: r3 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; r3 = r3 + r19; writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r3; if(r14 == r0) { /* Next insn is delay slot */ pc=0x63c58; continue; } r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x63c50; pc=0x63200; run_63200(); return; case 0x63c50: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; continue; } case 0x63c58: writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63700; run_63600(); return; case 0x63c68: r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x63884; run_63800(); return; case 0x63c88: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r25; /* Next insn is delay slot */ r31=0x63ca0; pc=0x63200; run_63200(); return; case 0x63ca0: r25 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; continue; } r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r8 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r7 = r4 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63960; run_63800(); return; case 0x63cc4: r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; case 0x63cd0: addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x639fc; run_63800(); return; } case 0x63ce0: r2 = r29 + 1158; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; r5 = r5 + 1; r2 = r4 < 8 ? 1 : 0; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x640c4; run_64000(); return; } r7 = r4 + r0; r3 = r3 + 8; r4 = r4 + 1; /* Next insn is delay slot */ pc=0x639fc; run_63800(); return; case 0x63d1c: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x63d30; pc=0x63200; run_63200(); return; case 0x63d30: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; continue; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63a84; run_63a00(); return; case 0x63d50: r6 = r0 + 1; if(r4 == r6) { /* Next insn is delay slot */ pc=0x640fc; run_64000(); return; } r6 = r0 + 2; r18 = r29 + 1080; if(r4 != r6) { /* Next insn is delay slot */ pc=0x63da4; continue; } r6 = readPages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff]; case 0x63d70: r4 = r2 & 15; r4 = r6 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r18 = r18 + -1; r2 = r2 >>> 4; addr=r18+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63d70; continue; } case 0x63d90: r4 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; r19 = r4 - r18; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x63da4: r4 = r2 & 7; r18 = r18 + -1; r4 = r4 + 48; r2 = r2 >>> 3; addr=r18+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63da4; continue; } r2 = r23 & 1; r6 = r18 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63de4; continue; } r2 = r0 + 48; if(r4 == r2) { /* Next insn is delay slot */ pc=0x63d90; continue; } r18 = r18 + -1; addr=r6+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x63de4: r2 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; r19 = r2 - r18; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x63df8: r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; case 0x63e00: pc=0x63e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_63e00() throws ExecutionException { /* 0x63e00 - 0x64000 */ int addr, tmp; for(;;) { switch(pc) { case 0x63e00: addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63eb0; continue; } r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; case 0x63e18: r31 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; r30 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; r23 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; r22 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; r21 = readPages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff]; r20 = readPages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff]; r19 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; r18 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; r17 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; r16 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; r29 = r29 + 1248; /* Next insn is delay slot */ pc=r31; return; case 0x63e4c: r4 = r20 + r0; r5 = r23 + r0; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x63e60; pc=0x63200; run_63200(); return; case 0x63e60: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63e00; continue; } r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r5 = r4 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63b90; run_63a00(); return; case 0x63e80: if(r5 != r0) { /* Next insn is delay slot */ pc=0x646f4; run_64600(); return; } r2 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r19; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r19; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; r14 = r19 + r0; r3 = r21 + r0; case 0x63ea4: r3 = r3 + 8; /* Next insn is delay slot */ pc=0x63b3c; run_63a00(); return; case 0x63eb0: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x63e18; continue; case 0x63ebc: r2 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r20 = r17 - r2; if(r20 <= 0) { /* Next insn is delay slot */ pc=0x63a44; run_63a00(); return; } r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x648d4; run_64800(); return; } r4 = 7 << 16; r8 = r4 + 4276; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r16; r9 = r0 + 16; r16 = r8 + r0; /* Next insn is delay slot */ pc=0x63f14; continue; case 0x63ef8: r6 = r7 + 2; r3 = r3 + 8; r7 = r2 + r0; case 0x63f04: r20 = r20 + -16; r2 = r20 < 17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63f5c; continue; } case 0x63f14: r2 = r7 + 1; r5 = r5 + 16; r4 = r2 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; if(r4 != r0) { /* Next insn is delay slot */ pc=0x63ef8; continue; } if(r5 != r0) { /* Next insn is delay slot */ pc=0x63f98; continue; } r20 = r20 + -16; r2 = r20 < 17 ? 1 : 0; r7 = r0 + r0; r6 = r0 + 1; r3 = r21 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63f14; continue; } case 0x63f5c: r8 = r16 + r0; r16 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; case 0x63f64: r5 = r5 + r20; r2 = r6 < 8 ? 1 : 0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r6; if(r2 == r0) { /* Next insn is delay slot */ pc=0x646d8; run_64600(); return; } r3 = r3 + 8; r4 = r6 + 1; r7 = r6 + r0; /* Next insn is delay slot */ pc=0x63a44; run_63a00(); return; case 0x63f98: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r9; /* Next insn is delay slot */ r31=0x63fb0; pc=0x63200; run_63200(); return; case 0x63fb0: r9 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r6 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63f04; continue; case 0x63fd4: r4 = r18 + r0; r5 = r23 + r0; /* Next insn is delay slot */ r31=0x63fe4; pc=0x48600; run_48600(); return; case 0x63fe4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63eb0; continue; } addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r4 = r0 + 10; r2 = r3 & 65535; r2 = r2 & 26; if(r2 != r4) { /* Next insn is delay slot */ pc=0x636b4; run_63600(); return; } case 0x64000: pc=0x64000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64000() throws ExecutionException { /* 0x64000 - 0x64200 */ int addr, tmp; for(;;) { switch(pc) { case 0x64000: case 0x64004: addr=r23+14; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; if(r2 < 0) { /* Next insn is delay slot */ pc=0x636b4; run_63600(); return; } addr=r29+1054; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r23+28)>>>12][((r23+28)>>>2)&0x3ff]; r4 = r0 + -3; writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r2; r2 = readPages[(r23+36)>>>12][((r23+36)>>>2)&0x3ff]; r3 = r3 & r4; addr=r29+1052; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r2; r3 = readPages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff]; r2 = r29 + 16; r7 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; writePages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff] = r2; writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r2; r4 = r18 + r0; r2 = r0 + 1024; r5 = r29 + 1040; r6 = r20 + r0; writePages[(r29+1140)>>>12][((r29+1140)>>>2)&0x3ff] = r3; writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r2; writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r2; writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ r31=0x64070; pc=0x63600; run_63600(); return; case 0x64070: r21 = r2 + r0; if(r2 < 0) { /* Next insn is delay slot */ pc=0x64094; continue; } r4 = r18 + r0; r5 = r29 + 1040; /* Next insn is delay slot */ r31=0x6408c; pc=0x39800; run_39800(); return; case 0x6408c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x64920; run_64800(); return; } case 0x64094: addr=r29+1052; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x640b8; continue; } addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 64; addr=r23+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x640b8: r2 = r21 + r0; /* Next insn is delay slot */ pc=0x63e18; run_63e00(); return; case 0x640c4: if(r5 != r0) { /* Next insn is delay slot */ pc=0x64668; run_64600(); return; } r7 = r0 + r0; r4 = r0 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x639fc; run_63800(); return; case 0x640e0: if(r5 != r0) { /* Next insn is delay slot */ pc=0x646a4; run_64600(); return; } r7 = r0 + r0; r4 = r0 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63a38; run_63a00(); return; case 0x640fc: r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x64554; run_64400(); return; } r18 = r29 + 1080; r4 = r0 + 10; case 0x64110: if(r4 != r0) { /* Next insn is delay slot */ if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } pc=0x6411c; continue; } if(r4!=0) { hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x6411c: r18 = r18 + -1; r6 = hi; r6 = r6 + 48; addr=r18+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = lo; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64110; continue; } r2 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; r19 = r2 - r18; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x6414c: /* Next insn is delay slot */ r31=0x64154; pc=0x3a600; run_3a600(); return; case 0x64154: /* Next insn is delay slot */ pc=0x63654; run_63600(); return; case 0x6415c: if(r5 != r0) { /* Next insn is delay slot */ pc=0x645ac; run_64400(); return; } r7 = r0 + r0; r4 = r0 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63cd0; run_63c00(); return; case 0x64178: r2 = r23 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x638b8; run_63800(); return; } r2 = r0 + 48; addr=r29+1079; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = readPages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff]; r18 = r29 + 1079; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x6419c: r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r17 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r17 >= 0) { /* Next insn is delay slot */ pc=0x6456c; run_64400(); return; } r17 = r0 - r17; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; case 0x641bc: r23 = r23 | 4; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x641cc: r6 = r0 + 43; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x641dc: r2 = r23 & 16; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x645e8; run_64400(); return; } r12 = r23 & 64; if(r12 == r0) { /* Next insn is delay slot */ pc=0x645e8; run_64400(); return; } r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r4 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; case 0x64200: pc=0x64200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64200() throws ExecutionException { /* 0x64200 - 0x64400 */ int addr, tmp; for(;;) { switch(pc) { case 0x64200: r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r4&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x63700; run_63600(); return; case 0x64218: r2 = 7 << 16; r2 = r2 + 248; writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r2; r2 = r23 & 16; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x643c8; continue; } case 0x64234: r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; case 0x64248: r5 = r23 & 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x64608; run_64600(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x64608; run_64600(); return; } r5 = r0 + 48; addr=r29+1157; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+1156; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r23 = r23 | 2; r4 = r0 + 2; /* Next insn is delay slot */ pc=0x63884; run_63800(); return; case 0x64278: r23 = r23 | 64; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x64288: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r5 = r16 + 1; if(r4 == r7) { /* Next insn is delay slot */ pc=0x648f4; run_64800(); return; } r2 = r4 + -48; r8 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r30 = r0 + r0; if(r8 == r0) { /* Next insn is delay slot */ pc=0x642dc; continue; } case 0x642ac: r4 = r30 << 1; r5 = r5 + 1; r30 = r30 << 3; r30 = r4 + r30; addr=r5+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r30 = r2 + r30; r2 = r4 + -48; r8 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r8 != r0) { /* Next insn is delay slot */ pc=0x642ac; continue; } if(r30 < 0) { /* Next insn is delay slot */ pc=0x64780; run_64600(); return; } case 0x642dc: r16 = r5 + r0; /* Next insn is delay slot */ pc=0x637cc; run_63600(); return; case 0x642e8: r2 = r23 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63870; run_63800(); return; } r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; addr=r4+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r4 = r4 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; r4 = r0 + r0; /* Next insn is delay slot */ pc=0x63884; run_63800(); return; case 0x64314: r23 = r23 | 128; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x64324: r17 = r0 + r0; r2 = r4 + -48; case 0x6432c: r4 = r17 << 1; r16 = r16 + 1; r17 = r17 << 3; r17 = r4 + r17; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r17 = r17 + r2; r2 = r4 + -48; r5 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x6432c; continue; } /* Next insn is delay slot */ pc=0x637cc; run_63600(); return; case 0x6435c: r23 = r23 | 16; r2 = r23 & 16; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64430; run_64400(); return; } case 0x64370: r2 = r23 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x64430; run_64400(); return; } r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; case 0x64390: if(r2 < 0) { /* Next insn is delay slot */ pc=0x64734; run_64600(); return; } addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r19 = r30 + r0; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x63890; run_63800(); return; case 0x643ac: r2 = 7 << 16; r2 = r2 + 228; writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r2; r2 = r23 & 16; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64234; continue; } case 0x643c8: r2 = r23 & 64; r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x64754; run_64600(); return; } addr=r5+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x64248; continue; case 0x643ec: r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; addr=r29+1040; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x64400: pc=0x64400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64400() throws ExecutionException { /* 0x64400 - 0x64600 */ int addr, tmp; for(;;) { switch(pc) { case 0x64400: r2 = r0 + 1; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; r19 = r0 + 1; r18 = r29 + 1040; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x638e8; run_63800(); return; case 0x64420: r2 = r23 & 16; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x64370; run_64200(); return; } case 0x64430: r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r4 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x64390; run_64200(); return; case 0x6444c: if(r6 != r0) { /* Next insn is delay slot */ pc=0x6381c; run_63800(); return; } r6 = r0 + 32; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x64464: r23 = r23 | 1; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x64474: r2 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r20 = r2 + 4; if(r18 == r0) { /* Next insn is delay slot */ pc=0x64868; run_64800(); return; } r4 = r18 + r0; if(r30 < 0) { /* Next insn is delay slot */ pc=0x647f8; run_64600(); return; } r5 = r0 + r0; r6 = r30 + r0; writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x644ac; pc=0x5b400; run_5b400(); return; case 0x644ac: r3 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x648bc; run_64800(); return; } r19 = r2 - r18; r2 = r30 < r19 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64774; run_64600(); return; } case 0x644c8: addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x644dc: r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r4 = r0 + 48; addr=r29+1156; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = r0 + 120; addr=r29+1157; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = 7 << 16; r4 = r4 + 248; r5 = r5 + 4; writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r4; r23 = r23 | 2; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; r4 = r0 + 2; /* Next insn is delay slot */ pc=0x63884; run_63800(); return; case 0x6451c: if(r14 != r0) { /* Next insn is delay slot */ pc=0x647d0; run_64600(); return; } r19 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; r2 = r19 < r17 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x64768; run_64600(); return; } case 0x64538: r3 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; r3 = r3 + r19; writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r3; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63700; run_63600(); return; case 0x64554: r2 = r2 + 48; addr=r29+1079; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r19 = readPages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff]; r18 = r29 + 1079; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x6456c: writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x6457c: addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x647a0; run_64600(); return; } r5 = r0 + 1; addr=r29+1040; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r5; r19 = r0 + 1; r18 = r29 + 1040; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x638e8; run_63800(); return; case 0x645ac: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r15; /* Next insn is delay slot */ r31=0x645c4; pc=0x63200; run_63200(); return; case 0x645c4: r15 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63cd0; run_63c00(); return; case 0x645e8: r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r4 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; case 0x64600: pc=0x64600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64600() throws ExecutionException { /* 0x64600 - 0x64800 */ int addr, tmp; for(;;) { switch(pc) { case 0x64600: /* Next insn is delay slot */ pc=0x63700; run_63600(); return; case 0x64608: r4 = r0 + 2; /* Next insn is delay slot */ pc=0x63884; run_63800(); return; case 0x64614: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x64628; pc=0x63200; run_63200(); return; case 0x64628: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63b3c; run_63a00(); return; case 0x64640: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x64654; pc=0x63200; run_63200(); return; case 0x64654: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63800; run_63800(); return; case 0x64668: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r15; /* Next insn is delay slot */ r31=0x64680; pc=0x63200; run_63200(); return; case 0x64680: r15 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x639fc; run_63800(); return; case 0x646a4: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x646b8; pc=0x63200; run_63200(); return; case 0x646b8: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63a38; run_63a00(); return; case 0x646d8: if(r5 != r0) { /* Next insn is delay slot */ pc=0x64820; run_64800(); return; } r7 = r0 + r0; r4 = r0 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63a44; run_63a00(); return; case 0x646f4: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x64708; pc=0x63200; run_63200(); return; case 0x64708: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r4 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63b0c; run_63a00(); return; case 0x64728: r17 = r16 + r0; /* Next insn is delay slot */ pc=0x63798; run_63600(); return; case 0x64734: r4 = r0 + 45; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 - r2; r19 = r30 + r0; r5 = r0 + 45; r4 = r0 + 1; /* Next insn is delay slot */ pc=0x63890; run_63800(); return; case 0x64754: r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r5 = r5 + 4; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x64248; run_64200(); return; case 0x64768: r19 = r17 + r0; /* Next insn is delay slot */ pc=0x64538; run_64400(); return; case 0x64774: r19 = r30 + r0; /* Next insn is delay slot */ pc=0x644c8; run_64400(); return; case 0x64780: r30 = r0 + -1; r16 = r5 + r0; /* Next insn is delay slot */ pc=0x637cc; run_63600(); return; case 0x64790: r2 = 7 << 16; r8 = r2 + 4276; /* Next insn is delay slot */ pc=0x63ae4; run_63a00(); return; case 0x647a0: r2 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r18 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x63e00; run_63e00(); return; } r4 = r18 + r0; r5 = r23 + r0; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x647c8; pc=0x63200; run_63200(); return; case 0x647c8: /* Next insn is delay slot */ pc=0x63e00; run_63e00(); return; case 0x647d0: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x647e4; pc=0x63200; run_63200(); return; case 0x647e4: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x63c0c; run_63c00(); return; case 0x647f8: writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ r31=0x64804; pc=0x10268; run_10200(); return; case 0x64800: pc=0x64800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64800() throws ExecutionException { /* 0x64800 - 0x64a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x64800: case 0x64804: r19 = r2 + r0; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; r30 = r0 + r0; r3 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x64820: r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; r6 = r29 + 1144; /* Next insn is delay slot */ r31=0x64834; pc=0x63200; run_63200(); return; case 0x64834: if(r2 != r0) { /* Next insn is delay slot */ pc=0x63df8; run_63c00(); return; } r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; r4 = r7 + 1; r3 = r21 + r0; /* Next insn is delay slot */ pc=0x63a44; run_63a00(); return; case 0x64854: r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; r7 = r7 + 1; /* Next insn is delay slot */ pc=0x639c4; run_63800(); return; case 0x64868: r2 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r13 = r30 + r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6487c; continue; } r13 = r0 + 6; case 0x6487c: r19 = r13 + r0; r2 = r13 + r0; if(r13 < 0) { /* Next insn is delay slot */ pc=0x648e8; continue; } case 0x6488c: r10 = 7 << 16; writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; r18 = r10 + 268; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x638e8; run_63800(); return; case 0x648a8: r5 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; r5 = r5 + 1; /* Next insn is delay slot */ pc=0x63be8; run_63a00(); return; case 0x648bc: r19 = r30 + r0; addr=r29+1158; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; r30 = r0 + r0; /* Next insn is delay slot */ pc=0x638bc; run_63800(); return; case 0x648d4: r2 = 7 << 16; r6 = r4 + r0; r8 = r2 + 4276; /* Next insn is delay slot */ pc=0x63f64; run_63e00(); return; case 0x648e8: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x6488c; continue; case 0x648f4: r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; r16 = r5 + r0; r30 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r2 = r4 + 4; if(r30 >= 0) { /* Next insn is delay slot */ pc=0x6456c; run_64400(); return; } writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; r30 = r0 + -1; r2 = r16 + r0; /* Next insn is delay slot */ pc=0x637c4; run_63600(); return; case 0x64920: r21 = r0 + -1; /* Next insn is delay slot */ pc=0x64094; run_64000(); return; case 0x64a00: pc=0x64a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64a00() throws ExecutionException { /* 0x64a00 - 0x64c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x64a00: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x63600; run_63600(); return; case 0x64c00: pc=0x64c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64c00() throws ExecutionException { /* 0x64c00 - 0x64e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x64c00: r29 = r29 + -136; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r17; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r16; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; r17 = r4 + r0; r16 = r6 + r0; if(r6 < 0) { /* Next insn is delay slot */ pc=0x64ce4; continue; } r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; if(r6 != r0) { /* Next insn is delay slot */ pc=0x64c9c; continue; } r2 = r0 + r0; r6 = r7 + r0; r7 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r4 = r17 + r0; r2 = r0 + -1; r5 = r29 + 16; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x64c64; pc=0x43800; run_43800(); return; case 0x64c64: r3 = r2 < -1 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x64cd4; continue; } case 0x64c70: if(r16 == r0) { /* Next insn is delay slot */ pc=0x64c84; continue; } r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x64c84: r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r17 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; r16 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r29 = r29 + 136; /* Next insn is delay slot */ pc=r31; return; case 0x64c9c: r2 = r6 + -1; r6 = r7 + r0; r7 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r4 = r17 + r0; r2 = r0 + -1; r5 = r29 + 16; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x64cc8; pc=0x43800; run_43800(); return; case 0x64cc8: r3 = r2 < -1 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x64c70; continue; } case 0x64cd4: r3 = r0 + 139; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x64c70; continue; case 0x64ce4: r2 = r0 + 139; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x64c84; continue; case 0x64e00: pc=0x64e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_64e00() throws ExecutionException { /* 0x64e00 - 0x65000 */ int addr, tmp; for(;;) { switch(pc) { case 0x64e00: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r5 = r8 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x64e30; pc=0x64c00; run_64c00(); return; case 0x64e30: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x65000: pc=0x65000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65000() throws ExecutionException { /* 0x65000 - 0x65200 */ int addr, tmp; for(;;) { switch(pc) { case 0x65000: r29 = r29 + -128; r2 = r0 + 520; addr=r29+28; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = 32767 << 16; r2 = r2 | 65535; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; r5 = r29 + 16; r2 = r0 + -1; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r31; addr=r29+30; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ r31=0x6503c; pc=0x43800; run_43800(); return; case 0x6503c: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; r29 = r29 + 128; /* Next insn is delay slot */ pc=r31; return; case 0x65200: pc=0x65200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65200() throws ExecutionException { /* 0x65200 - 0x65400 */ int addr, tmp; for(;;) { switch(pc) { case 0x65200: r3 = r4 + r0; r2 = r5 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; /* Next insn is delay slot */ pc=0x65000; run_65000(); return; case 0x65400: pc=0x65400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65400() throws ExecutionException { /* 0x65400 - 0x65600 */ int addr, tmp; for(;;) { switch(pc) { case 0x65400: r29 = r29 + -88; r5 = r29 + 16; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; /* Next insn is delay slot */ r31=0x65414; pc=0x62e00; run_62e00(); return; case 0x65414: if(r2 < 0) { /* Next insn is delay slot */ pc=0x65468; continue; } r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r2 = r0 + 8192; r3 = r3 & 61440; if(r3 == r2) { /* Next insn is delay slot */ pc=0x65454; continue; } /* Next insn is delay slot */ r31=0x65438; pc=0x38c00; run_38c00(); return; case 0x65438: r3 = r0 + 25; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + r0; case 0x65444: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x65454: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = r0 + 1; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x65468: /* Next insn is delay slot */ r31=0x65470; pc=0x38c00; run_38c00(); return; case 0x65470: r3 = r0 + 9; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x65444; continue; case 0x65600: pc=0x65600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65600() throws ExecutionException { /* 0x65600 - 0x65800 */ int addr, tmp; for(;;) { switch(pc) { case 0x65600: { long hilo = (r5) * 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; r17 = r4 + r0; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; r5 = lo; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x65634; pc=0x3f600; run_3f600(); return; case 0x65634: r2 = 7 << 16; r18 = readPages[(r2+11112)>>>12][((r2+11112)>>>2)&0x3ff]; r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r4 = r17 + r0; r20 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x65650; pc=0x3ec00; run_3ec00(); return; case 0x65650: r16 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6577c; continue; } r19 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; r3 = r16 + -8; r2 = r0 + -4; r19 = r19 & r2; if(r18 == r3) { /* Next insn is delay slot */ pc=0x6574c; continue; } case 0x65674: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x65680; pc=0x3f800; run_3f800(); return; case 0x65680: r6 = r19 + -4; r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x65708; continue; } r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x656d4; continue; } r2 = r16 + r0; case 0x656a0: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; r2 = r16 + r0; case 0x656b0: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x656d4: r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x65740; continue; } r2 = r0 + 36; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r0; if(r6 == r2) { /* Next insn is delay slot */ pc=0x65768; continue; } r2 = r16 + 16; /* Next insn is delay slot */ pc=0x656a0; continue; case 0x65708: r4 = r16 + r0; r5 = r0 + r0; /* Next insn is delay slot */ r31=0x65718; pc=0x48fec; run_48e00(); return; case 0x65718: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r16 + r0; r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x65740: r2 = r16 + 8; /* Next insn is delay slot */ pc=0x656a0; continue; case 0x6574c: r2 = r20 & r2; r3 = ((r2 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x65674; continue; } r19 = r2 + r0; /* Next insn is delay slot */ pc=0x65674; continue; case 0x65768: writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; r2 = r16 + 24; writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x656a0; continue; case 0x6577c: r4 = r17 + r0; /* Next insn is delay slot */ r31=0x65788; pc=0x3f800; run_3f800(); return; case 0x65788: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x656b0; continue; case 0x65800: pc=0x65800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65800() throws ExecutionException { /* 0x65800 - 0x65a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x65800: addr=r6+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ 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; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x65854; 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]; r2 = r2 | 8192; writePages[(r6+100)>>>12][((r6+100)>>>2)&0x3ff] = r2; case 0x65854: /* Next insn is delay slot */ r31=0x6585c; pc=0x5a800; run_5a800(); return; case 0x6585c: r3 = r0 + 1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x659c4; continue; } case 0x65868: r4 = r19 + r0; r5 = r29 + 16; r6 = r18 + r0; r7 = r16 + 92; /* Next insn is delay slot */ r31=0x65880; pc=0x6aa00; run_6aa00(); return; case 0x65880: r20 = r2 + r0; r2 = r0 + -1; if(r20 == r2) { /* Next insn is delay slot */ pc=0x65958; continue; } if(r20 == r0) { /* Next insn is delay slot */ pc=0x6594c; 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 */ r5 = tmp; case 0x6589c: r17 = r0 + r0; r21 = r0 + 10; /* Next insn is delay slot */ pc=0x658e4; continue; case 0x658ac: r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; case 0x658c8: r17 = r17 + 1; r3 = ((r17 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6594c; continue; } case 0x658d8: 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 */ r5 = tmp; case 0x658e4: r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; r3 = r3 + -1; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; if(r3 >= 0) { /* Next insn is delay slot */ pc=0x658ac; continue; } r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; r3 = r3 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x65994; 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; r3 = tmp; if(r3 == r21) { /* Next insn is delay slot */ pc=0x659ec; continue; } r17 = r17 + 1; r2 = r2 + 1; r3 = ((r17 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; if(r3 != r0) { /* Next insn is delay slot */ pc=0x658d8; continue; } case 0x6594c: r2 = r18 + r0; /* Next insn is delay slot */ pc=0x6596c; continue; case 0x65958: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 64; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + -1; case 0x6596c: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x65994: r4 = r19 + r0; r5 = r5 & 255; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x659a8; pc=0x48200; run_48200(); return; case 0x659a8: r2 = r2 + 1; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; case 0x659b0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x658c8; continue; } r2 = r0 + -1; /* Next insn is delay slot */ pc=0x6596c; continue; case 0x659c4: r2 = r18 + -1; r2 = (r2&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x65868; 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; r20 = r0 + 1; /* Next insn is delay slot */ pc=0x6589c; continue; case 0x659ec: r4 = r19 + r0; r5 = r0 + 10; r6 = r16 + r0; /* Next insn is delay slot */ r31=0x65a00; pc=0x48200; run_48200(); return; case 0x65a00: pc=0x65a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65a00() throws ExecutionException { /* 0x65a00 - 0x65c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x65a00: r2 = r2 + 1; r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; /* Next insn is delay slot */ pc=0x659b0; run_65800(); return; case 0x65c00: pc=0x65c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65c00() throws ExecutionException { /* 0x65c00 - 0x65e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x65c00: r29 = r29 + -32; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; r16 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; r6 = r5 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x65c5c; continue; } r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x65c44; continue; } writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x65c3c; pc=0x3a600; run_3a600(); return; case 0x65c3c: r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; case 0x65c44: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r5 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x65800; run_65800(); return; case 0x65c5c: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r5 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x65800; run_65800(); return; case 0x65e00: pc=0x65e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_65e00() throws ExecutionException { /* 0x65e00 - 0x66000 */ int addr, tmp; for(;;) { switch(pc) { case 0x65e00: r2 = (r4&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x65e30; continue; } r2 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r4 = r2 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; r2 = r2 & 255; /* Next insn is delay slot */ pc=r31; return; case 0x65e30: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x66000: pc=0x66000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66000() throws ExecutionException { /* 0x66000 - 0x66200 */ int addr, tmp; for(;;) { switch(pc) { case 0x66000: r29 = r29 + -56; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; r16 = r4 + r0; r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r18 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x66094; continue; } writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r5; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r6; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x6603c; pc=0x5a600; run_5a600(); return; case 0x6603c: r5 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r6 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r7 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r4 = r16 + r0; /* Next insn is delay slot */ pc=r18; r31=0x6605c; return; case 0x6605c: r3 = r0 + -1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x66078; continue; } r2 = r0 + 138; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; case 0x66078: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x66094: /* Next insn is delay slot */ r31=0x6609c; pc=0x5a600; run_5a600(); return; case 0x6609c: r6 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r4 = r16 + r0; r5 = r0 + r0; r6 = r6 + -12264; r7 = r0 + 1; /* Next insn is delay slot */ pc=r18; r31=0x660c0; return; case 0x660c0: /* Next insn is delay slot */ pc=0x6605c; continue; case 0x66200: pc=0x66200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66200() throws ExecutionException { /* 0x66200 - 0x66400 */ int addr, tmp; for(;;) { switch(pc) { case 0x66200: r29 = r29 + -56; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; r16 = r5 + r0; r17 = r7 + r0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x662b0; continue; } r21 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r19 = r4 + r0; r18 = r6 + r0; r20 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x66248; pc=0x5a600; run_5a600(); return; case 0x66248: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r4 = r21 + r0; r5 = r19 + r0; r6 = r16 + r0; r7 = r18 + r0; /* Next insn is delay slot */ pc=r20; r31=0x66268; return; case 0x66268: r3 = r0 + -1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x66288; continue; } r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r3 = r0 + 138; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + -1; case 0x66288: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x662b0: r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r16 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x662c0; pc=0x5a600; run_5a600(); return; case 0x662c0: r6 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; r4 = r18 + r0; r5 = r0 + r0; r6 = r6 + -12264; r7 = r0 + 1; /* Next insn is delay slot */ pc=r16; r31=0x662e4; return; case 0x662e4: /* Next insn is delay slot */ pc=0x66268; continue; case 0x66400: pc=0x66400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66400() throws ExecutionException { /* 0x66400 - 0x66600 */ int addr, tmp; for(;;) { switch(pc) { case 0x66400: r29 = r29 + -8; if(r5 == r0) { /* Next insn is delay slot */ pc=0x66440; continue; } if(r6 == r0) { /* Next insn is delay slot */ pc=0x6644c; continue; } case 0x66414: if(r7 == r0) { /* Next insn is delay slot */ pc=0x6645c; continue; } addr=r6+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r2; addr=r6+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; case 0x66434: r29 = r29 + 8; /* Next insn is delay slot */ pc=r31; return; case 0x66440: r5 = r29 + r0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x66414; continue; } case 0x6644c: r2 = r0 + r0; r29 = r29 + 8; /* Next insn is delay slot */ pc=r31; return; case 0x6645c: r2 = r0 + -2; /* Next insn is delay slot */ pc=0x66434; continue; case 0x66600: pc=0x66600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66600() throws ExecutionException { /* 0x66600 - 0x66800 */ int addr, tmp; for(;;) { switch(pc) { case 0x66600: r29 = r29 + -48; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; r16 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x66628; pc=0x5a600; run_5a600(); return; case 0x66628: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r6 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r7 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=r16; r31=0x6664c; return; case 0x6664c: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x66800: pc=0x66800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66800() throws ExecutionException { /* 0x66800 - 0x66a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x66800: addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r2 = r0 + 94; if(r8 == r2) { /* Next insn is delay slot */ pc=0x668e8; continue; } r2 = r5 + 1; r7 = r0 + r0; r9 = r0 + r0; case 0x6681c: r3 = r0 + r0; r6 = r0 + 256; case 0x66824: r5 = r4 + r3; r3 = r3 + 1; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r3 != r6) { /* Next insn is delay slot */ pc=0x66824; continue; } if(r8 == r0) { /* Next insn is delay slot */ pc=0x66890; continue; } r5 = r0 + 1; r5 = r5 - r9; r10 = r0 + 45; r9 = r0 + 93; case 0x66850: r3 = r4 + r8; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x66858: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r7 = r2 + 1; if(r3 == r10) { /* Next insn is delay slot */ pc=0x668a8; continue; } if(r3 == r9) { /* Next insn is delay slot */ pc=0x6689c; continue; } if(r3 == r0) { /* Next insn is delay slot */ pc=0x66888; continue; } r8 = r3 + r0; r2 = r7 + r0; /* Next insn is delay slot */ pc=0x66850; continue; case 0x66888: /* Next insn is delay slot */ pc=r31; return; case 0x66890: r2 = r2 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x6689c: r2 = r7 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x668a8: addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; if(r6 == r9) { /* Next insn is delay slot */ pc=0x66900; continue; } r3 = r6 < r8 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66900; continue; } r2 = r2 + 2; case 0x668c8: r8 = r8 + 1; r3 = r4 + r8; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r8 < r6 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x668c8; continue; } /* Next insn is delay slot */ pc=0x66858; continue; case 0x668e8: r2 = r5 + 2; addr=r5+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r7 = r0 + 1; r9 = r0 + 1; /* Next insn is delay slot */ pc=0x6681c; continue; case 0x66900: r8 = r0 + 45; r2 = r7 + r0; /* Next insn is delay slot */ pc=0x66850; continue; case 0x66a00: pc=0x66a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66a00() throws ExecutionException { /* 0x66a00 - 0x66c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x66a00: f0 = readPages[(r28+-30948)>>>12][((r28+-30948)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r31; return; case 0x66c00: pc=0x66c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66c00() throws ExecutionException { /* 0x66c00 - 0x66e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x66c00: r29 = r29 + -216; writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r22; writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r18; writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r16; writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r31; writePages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff] = r30; writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r23; writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r21; writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r20; writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r19; writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r17; writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = f30; writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = f31; writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = f28; writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = f29; writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = f26; writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = f27; writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = f24; writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = f25; writePages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff] = f22; writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = f23; writePages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff] = f20; writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = f21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; r16 = r5 + r0; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r18 = r4 + r0; r2 = r21 & 255; r4 = 7 << 16; r3 = (r2&0xffffffffL) < (46&0xffffffffL) ? 1 : 0; r22 = r5 + r0; writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r6; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; r4 = r4 + 4324; if(r3 == r0) { /* Next insn is delay slot */ pc=0x67000; run_67000(); return; } case 0x66c94: r2 = r2 << 2; r2 = r4 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x66cac: r7 = r0 + r0; r3 = r0 + r0; r9 = r0 + 1; case 0x66cb8: if(r5 != r0) { /* Next insn is delay slot */ pc=0x67160; run_67000(); return; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x67160; run_67000(); return; } case 0x66cc8: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; case 0x66cd8: r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x66cf4; continue; } r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; case 0x66cf4: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x67074; run_67000(); return; } r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; case 0x66d0c: f30 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; f28 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; f26 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; f24 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; f22 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; f20 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; r31 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; f0 = r3; r30 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; r23 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; r22 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; r21 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; r20 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; r19 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; r18 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; r17 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; r16 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; f31 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; f29 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; f27 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; f25 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; f23 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; f21 = readPages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff]; f1 = r2; r29 = r29 + 216; /* Next insn is delay slot */ pc=r31; return; case 0x66d78: writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; case 0x66d7c: r2 = r16 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; if(r21 == r0) { /* Next insn is delay slot */ pc=0x66cc8; continue; } r16 = r2 + r0; r2 = r0 + 48; if(r21 == r2) { /* Next insn is delay slot */ pc=0x67010; run_67000(); return; } case 0x66da4: r19 = r0 + r0; case 0x66da8: r2 = r21 + -48; r2 = r2 & 255; r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68294; run_68200(); return; } r2 = r16 + 1; r30 = r0 + r0; r23 = r0 + r0; r20 = r0 + r0; /* Next insn is delay slot */ pc=0x66e10; run_66e00(); return; case 0x66dd4: r3 = r23 << 1; r23 = r23 << 3; r23 = r3 + r23; r21 = r23 + r21; r23 = r21 + -48; case 0x66de8: writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r17 = r2 + r0; r3 = r21 + -48; r3 = r3 & 255; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; case 0x66e00: pc=0x66e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_66e00() throws ExecutionException { /* 0x66e00 - 0x67000 */ int addr, tmp; for(;;) { switch(pc) { case 0x66e00: r20 = r20 + 1; r2 = r2 + 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x66e64; continue; } case 0x66e10: r3 = r20 < 16 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x66de8; run_66c00(); return; } r3 = r20 < 9 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66dd4; run_66c00(); return; } r3 = r30 << 1; r30 = r30 << 3; r30 = r3 + r30; r21 = r30 + r21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; r30 = r21 + -48; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r17 = r2 + r0; r3 = r21 + -48; r3 = r3 & 255; r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r20 = r20 + 1; r2 = r2 + 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66e10; continue; } case 0x66e64: r4 = r18 + r0; /* Next insn is delay slot */ r31=0x66e70; pc=0x5ae00; run_5ae00(); return; case 0x66e70: r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r18 + r0; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ r31=0x66e84; pc=0x5ae00; run_5ae00(); return; case 0x66e84: r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x66e90; pc=0x10268; run_10200(); return; case 0x66e90: r5 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r4 = r17 + r0; r6 = r2 + r0; /* Next insn is delay slot */ r31=0x66ea4; pc=0x43000; run_43000(); return; case 0x66ea4: if(r2 == r0) { /* Next insn is delay slot */ pc=0x672e4; run_67200(); return; } r7 = r20 + r0; r5 = r0 + r0; r3 = r0 + r0; r9 = r0 + r0; case 0x66ebc: r4 = r0 + -33; r4 = r21 & r4; r2 = r0 + 69; if(r4 == r2) { /* Next insn is delay slot */ pc=0x67158; run_67000(); return; } case 0x66ed0: r4 = r0 + r0; case 0x66ed4: if(r7 == r0) { /* Next insn is delay slot */ pc=0x670bc; run_67000(); return; } case 0x66edc: r3 = r4 - r3; writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r3; if(r20 != r0) { /* Next insn is delay slot */ pc=0x66ef0; continue; } r20 = r7 + r0; case 0x66ef0: r3 = r7 < 17 ? 1 : 0; r2 = r7 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66f04; continue; } r2 = r0 + 16; case 0x66f04: f2 = r23; { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } if(r23 < 0) { /* Next insn is delay slot */ pc=0x67ed8; run_67e00(); return; } case 0x66f18: r3 = r2 < 10 ? 1 : 0; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66f6c; continue; } r4 = r2 + -9; r3 = 7 << 16; r4 = r4 << 3; r3 = r3 + 2176; r3 = r4 + r3; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f4 = r30; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } if(r30 < 0) { /* Next insn is delay slot */ pc=0x682ac; run_68200(); return; } case 0x66f60: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f4; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f5; case 0x66f6c: r3 = r7 < 16 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x67354; run_67200(); return; } r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x672c4; run_67200(); return; } r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; if(r3 <= 0) { /* Next insn is delay slot */ pc=0x6845c; run_68400(); return; } r3 = r3 < 23 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x682c8; run_68200(); return; } r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r2 = 7 << 16; r3 = r4 << 3; r2 = r2 + 2176; r2 = r3 + r2; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x66fe0: r16 = r16 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r2 = r21 & 255; r3 = (r2&0xffffffffL) < (46&0xffffffffL) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x66c94; run_66c00(); return; } case 0x67000: pc=0x67000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67000() throws ExecutionException { /* 0x67000 - 0x67200 */ int addr, tmp; for(;;) { switch(pc) { case 0x67000: r2 = r0 + 48; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; if(r21 != r2) { /* Next insn is delay slot */ pc=0x66da4; run_66c00(); return; } case 0x67010: addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 88; if(r2 == r3) { /* Next insn is delay slot */ pc=0x67e68; run_67e00(); return; } r3 = r0 + 120; if(r2 == r3) { /* Next insn is delay slot */ pc=0x67e68; run_67e00(); return; } r2 = r16 + 1; r3 = r0 + 48; case 0x67034: r16 = r2 + r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; r2 = r2 + 1; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; if(r21 == r3) { /* Next insn is delay slot */ pc=0x67034; continue; } if(r21 == r0) { /* Next insn is delay slot */ pc=0x6728c; run_67200(); return; } r19 = r0 + 1; /* Next insn is delay slot */ pc=0x66da8; run_66c00(); return; case 0x67064: r3 = r0 + 1; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x66d7c; run_66c00(); return; case 0x67074: r5 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r4 = 32768 << 16; r2 = r5 ^ r4; r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x66d0c; run_66c00(); return; case 0x6708c: r3 = r0 + r0; case 0x67090: r2 = r21 + -49; r2 = (r2&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67e08; run_67e00(); return; } r4 = r0 + -33; r4 = r21 & r4; r2 = r0 + 69; r5 = r3 + r0; if(r4 == r2) { /* Next insn is delay slot */ pc=0x66cac; run_66c00(); return; } r9 = r0 + 1; case 0x670bc: if(r5 != r0) { /* Next insn is delay slot */ pc=0x6728c; run_67200(); return; } if(r19 != r0) { /* Next insn is delay slot */ pc=0x6728c; run_67200(); return; } if(r9 != r0) { /* Next insn is delay slot */ pc=0x66cc8; run_66c00(); return; } r2 = r0 + 78; if(r21 == r2) { /* Next insn is delay slot */ pc=0x67104; continue; } r2 = r21 < 79 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x68518; run_68400(); return; } r2 = r0 + 105; if(r21 == r2) { /* Next insn is delay slot */ pc=0x68524; run_68400(); return; } r2 = r0 + 110; if(r21 != r2) { /* Next insn is delay slot */ pc=0x66cc8; run_66c00(); return; } case 0x67104: r3 = 7 << 16; r4 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r3 = r3 + 4320; case 0x67110: r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6868c; run_68600(); return; } r4 = r4 + 1; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r6 = r2 + -65; r6 = r6 & 255; r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x67148; continue; } r2 = r2 + 32; case 0x67148: if(r2 == r5) { /* Next insn is delay slot */ pc=0x67110; continue; } /* Next insn is delay slot */ pc=0x66cc8; run_66c00(); return; case 0x67158: if(r7 == r0) { /* Next insn is delay slot */ pc=0x66cb8; run_66c00(); return; } case 0x67160: r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r2 = r22 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r22+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r2 = r0 + 43; if(r21 == r2) { /* Next insn is delay slot */ pc=0x67ca8; run_67c00(); return; } r2 = r0 + 45; if(r21 != r2) { /* Next insn is delay slot */ pc=0x67c9c; run_67c00(); return; } r10 = r0 + 1; case 0x67190: r2 = r22 + 2; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r22+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; case 0x671a0: r2 = r21 + -48; r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67bc8; run_67a00(); return; } r2 = r0 + 48; if(r21 != r2) { /* Next insn is delay slot */ pc=0x671dc; continue; } r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = r0 + 48; r2 = r2 + 1; case 0x671c8: writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r2 = r2 + 1; if(r21 == r4) { /* Next insn is delay slot */ pc=0x671c8; continue; } case 0x671dc: r2 = r21 + -49; r2 = (r2&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x66ed0; run_66e00(); return; } r11 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = r21 + -48; r8 = r11 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r8; addr=r11+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; case 0x67200: pc=0x67200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67200() throws ExecutionException { /* 0x67200 - 0x67400 */ int addr, tmp; for(;;) { switch(pc) { case 0x67200: r2 = r21 + -48; r2 = r2 & 255; r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67254; continue; } r2 = r11 + 2; case 0x6721c: r6 = r4 << 1; r4 = r4 << 3; r4 = r6 + r4; r21 = r4 + r21; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; r4 = r21 + -48; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r8 = r2 + r0; r6 = r21 + -48; r6 = r6 & 255; r6 = (r6&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; r2 = r2 + 1; if(r6 != r0) { /* Next insn is delay slot */ pc=0x6721c; continue; } case 0x67254: r2 = r8 - r11; r2 = r2 < 9 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67e5c; run_67e00(); return; } r2 = r4 < 20000 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67e5c; run_67e00(); return; } case 0x67270: if(r10 == r0) { /* Next insn is delay slot */ pc=0x66ed4; run_66e00(); return; } r4 = r0 - r4; if(r7 != r0) { /* Next insn is delay slot */ pc=0x66edc; run_66e00(); return; } /* Next insn is delay slot */ pc=0x670bc; run_67000(); return; case 0x6728c: writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x6729c: r4 = 32752 << 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r4; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; case 0x672a8: r2 = r2 & 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x672c4; continue; } r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = 32768 << 16; r2 = r2 | r3; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; case 0x672c4: f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x672e4: r4 = r18 + r0; r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x672f4; pc=0x5ae00; run_5ae00(); return; case 0x672f4: r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x67300; pc=0x10268; run_10200(); return; case 0x67300: r2 = r17 + r2; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; if(r20 != r0) { /* Next insn is delay slot */ pc=0x67be0; run_67a00(); return; } r3 = r0 + 48; if(r21 != r3) { /* Next insn is delay slot */ pc=0x6708c; run_67000(); return; } r3 = r0 + r0; r5 = r0 + 48; /* Next insn is delay slot */ pc=0x67334; continue; case 0x67330: r2 = r4 + r0; case 0x67334: r4 = r2 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r4; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; r3 = r3 + 1; if(r21 == r5) { /* Next insn is delay slot */ pc=0x67330; continue; } /* Next insn is delay slot */ pc=0x67090; run_67000(); return; case 0x67354: r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r2 = r7 - r2; r2 = r3 + r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x68110; run_68000(); return; } r3 = r2 & 15; if(r3 == r0) { /* Next insn is delay slot */ pc=0x673a4; continue; } r4 = 7 << 16; r3 = r3 << 3; r4 = r4 + 2176; r3 = r3 + r4; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; case 0x673a4: r3 = r0 + -16; r2 = r2 & r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67cfc; run_67c00(); return; } case 0x673b4: f4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r22 = r0 + r0; f5 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; case 0x673cc: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r23; r5 = r16 + r0; r4 = r18 + r0; r6 = r20 + r0; /* Next insn is delay slot */ r31=0x673e4; pc=0x5be00; run_5be00(); return; case 0x673e4: r3 = r2 + 12; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r3; r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r23 = r2 + r0; f24 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; r2 = r0 - r3; r3 = r3 >> 31; case 0x67400: pc=0x67400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67400() throws ExecutionException { /* 0x67400 - 0x67600 */ int addr, tmp; for(;;) { switch(pc) { case 0x67400: r16 = r3 & r2; f20 = readPages[(r28+-30908)>>>12][((r28+-30908)>>>2)&0x3ff]; r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; f22 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; f25 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; r3 = r0 < r3 ? 1 : 0; f21 = readPages[(r28+-30912)>>>12][((r28+-30912)>>>2)&0x3ff]; f23 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r3; f26 = f24; f27 = f25; case 0x67428: r5 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x67438; pc=0x5b800; run_5b800(); return; case 0x67438: r6 = readPages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff]; r5 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r6 = r6 + 2; r4 = r2 + 12; r6 = r6 << 2; r21 = r2 + r0; /* Next insn is delay slot */ r31=0x67458; pc=0x48fdc; run_48e00(); return; case 0x67458: r5 = r29 + 24; r7 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r4 = r29 + 32; r6 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x6747c; pc=0x5d600; run_5d600(); return; case 0x6747c: r4 = r18 + r0; r5 = r0 + 1; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x67490; pc=0x5c400; run_5c400(); return; case 0x67490: r3 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r19 = r2 + r0; r7 = r0 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x674a8; continue; } r7 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; case 0x674a8: r2 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; if(r2 < 0) { /* Next insn is delay slot */ pc=0x67920; run_67800(); return; } r20 = r16 + r2; r3 = r7 + r0; case 0x674c0: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r2 = r2 - r22; r5 = r2 + r4; r5 = r5 < -1021 ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6781c; run_67800(); return; } r2 = r2 + 1075; case 0x674dc: r30 = r20 + r2; r4 = r20 < r30 ? 1 : 0; r2 = r3 + r2; r17 = r2 + r22; r2 = r30 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x674fc; continue; } r2 = r20 + r0; case 0x674fc: r4 = r17 < r2 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6750c; continue; } r2 = r17 + r0; case 0x6750c: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x67520; continue; } r30 = r30 - r2; r17 = r17 - r2; r20 = r20 - r2; case 0x67520: if(r16 == r0) { /* Next insn is delay slot */ pc=0x67578; continue; } r5 = r19 + r0; r4 = r18 + r0; r6 = r16 + r0; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x67540; pc=0x5ca00; run_5ca00(); return; case 0x67540: r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; r5 = r2 + r0; r19 = r2 + r0; /* Next insn is delay slot */ r31=0x67558; pc=0x5c600; run_5c600(); return; case 0x67558: r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x6756c; pc=0x5ba00; run_5ba00(); return; case 0x6756c: r2 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; r7 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; case 0x67578: if(r30 <= 0) { /* Next insn is delay slot */ pc=0x675a0; continue; } r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; r6 = r30 + r0; writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x67598; pc=0x5cc00; run_5cc00(); return; case 0x67598: r7 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; case 0x675a0: if(r7 == r0) { /* Next insn is delay slot */ pc=0x675c0; continue; } r5 = r21 + r0; r4 = r18 + r0; r6 = r7 + r0; /* Next insn is delay slot */ r31=0x675bc; pc=0x5ca00; run_5ca00(); return; case 0x675bc: r21 = r2 + r0; case 0x675c0: if(r17 <= 0) { /* Next insn is delay slot */ pc=0x675e0; continue; } r5 = r21 + r0; r4 = r18 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x675dc; pc=0x5cc00; run_5cc00(); return; case 0x675dc: r21 = r2 + r0; case 0x675e0: if(r20 <= 0) { /* Next insn is delay slot */ pc=0x67600; run_67600(); return; } r5 = r19 + r0; r4 = r18 + r0; r6 = r20 + r0; /* Next insn is delay slot */ r31=0x675fc; pc=0x5cc00; run_5cc00(); return; case 0x675fc: r19 = r2 + r0; case 0x67600: pc=0x67600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67600() throws ExecutionException { /* 0x67600 - 0x67800 */ int addr, tmp; for(;;) { switch(pc) { case 0x67600: r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; r6 = r21 + r0; /* Next insn is delay slot */ r31=0x67614; pc=0x5d000; run_5d000(); return; case 0x67614: r30 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; r4 = r2 + r0; writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; r5 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x67630; pc=0x5ce00; run_5ce00(); return; case 0x67630: if(r2 < 0) { /* Next insn is delay slot */ pc=0x67ef4; run_67e00(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x67fe8; run_67e00(); return; } r4 = r20 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x67650; pc=0x5d800; run_5d800(); return; case 0x67650: fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x6782c; run_67800(); return; } if(r30 == r0) { /* Next insn is delay slot */ pc=0x67930; run_67800(); return; } r3 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; r2 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f26; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f27; case 0x6767c: r5 = 32752 << 16; r17 = r6 & r5; r7 = 32736 << 16; if(r17 == r7) { /* Next insn is delay slot */ pc=0x67878; run_67800(); return; } case 0x67690: if(r22 == r0) { /* Next insn is delay slot */ pc=0x67778; continue; } r5 = 1696 << 16; r5 = r5 + 1; r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x67778; continue; } f0 = readPages[(r28+-30892)>>>12][((r28+-30892)>>>2)&0x3ff]; f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f1 = readPages[(r28+-30896)>>>12][((r28+-30896)>>>2)&0x3ff]; f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x6776c; continue; } f0 = readPages[(r28+-30884)>>>12][((r28+-30884)>>>2)&0x3ff]; f1 = readPages[(r28+-30888)>>>12][((r28+-30888)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x67b58; run_67a00(); return; } r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; r2 = f0; case 0x67720: if(r2 == r0) { /* Next insn is delay slot */ pc=0x67b38; run_67a00(); return; } f4 = r2; { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } if(r2 < 0) { /* Next insn is delay slot */ pc=0x67e38; run_67e00(); return; } writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; case 0x67744: if(r30 != r0) { /* Next insn is delay slot */ pc=0x67ba8; run_67a00(); return; } r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = 32768 << 16; r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r2 = r3 ^ r2; writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r2; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r4; case 0x67764: r3 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; case 0x6776c: r5 = 1712 << 16; r5 = r2 + r5; r2 = r5 - r17; case 0x67778: f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f28 = r3; f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; f29 = r2; /* Next insn is delay slot */ r31=0x67790; pc=0x5d200; run_5d200(); return; case 0x67790: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; case 0x677bc: if(r22 != r0) { /* Next insn is delay slot */ pc=0x677d4; continue; } r3 = 32752 << 16; r3 = r2 & r3; if(r17 == r3) { /* Next insn is delay slot */ pc=0x679f4; run_67800(); return; } case 0x677d4: r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x677e4; pc=0x5ba00; run_5ba00(); return; case 0x677e4: r4 = r18 + r0; r5 = r21 + r0; /* Next insn is delay slot */ r31=0x677f4; pc=0x5ba00; run_5ba00(); return; case 0x677f4: r4 = r18 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x67804; pc=0x5ba00; run_5ba00(); return; case 0x67800: pc=0x67800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67800() throws ExecutionException { /* 0x67800 - 0x67a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x67800: case 0x67804: r4 = r18 + r0; r5 = r20 + r0; /* Next insn is delay slot */ r31=0x67814; pc=0x5ba00; run_5ba00(); return; case 0x67814: /* Next insn is delay slot */ pc=0x67428; run_67400(); return; case 0x6781c: r2 = r0 + 54; r2 = r2 - r4; /* Next insn is delay slot */ pc=0x674dc; run_67400(); return; case 0x6782c: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; if(r30 != r0) { /* Next insn is delay slot */ pc=0x679b8; continue; } r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r2 = 32768 << 16; r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r2 = r3 ^ r2; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r2; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r4; case 0x67858: r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r5 = 32752 << 16; r17 = r6 & r5; r7 = 32736 << 16; r3 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r2 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; if(r17 != r7) { /* Next insn is delay slot */ pc=0x67690; run_67600(); return; } case 0x67878: r7 = 64688 << 16; r7 = r6 + r7; f28 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r7; f30 = r3; f29 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; f31 = r2; f12 = f28; f13 = f29; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r5; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = f2; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ r31=0x678b4; pc=0x5d200; run_5d200(); return; case 0x678b4: { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f31&0xffffffffL) << 32) | (f30&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r5 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f5; r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f4; r3 = r5 & r2; r2 = 31904 << 16; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67b0c; run_67a00(); return; } r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r5 = r5 + -1; if(r3 == r5) { /* Next insn is delay slot */ pc=0x680b4; run_68000(); return; } case 0x678f0: r5 = r0 + -1; r2 = 32751 << 16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; r2 = r2 | 65535; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x677d4; run_67600(); return; case 0x67920: r3 = r7 - r2; r20 = r16 + r0; /* Next insn is delay slot */ pc=0x674c0; run_67400(); return; case 0x67930: r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67ae4; run_67a00(); return; } r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = 15 << 16; r2 = r2 | 65535; r2 = r2 & r6; if(r2 != r0) { /* Next insn is delay slot */ pc=0x679d8; continue; } f2 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; f3 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x6826c; run_68200(); return; } f4 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; r2 = 32768 << 16; f5 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f5; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f4; r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r2 = r3 ^ r2; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r2; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r4; case 0x679a8: r3 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; r2 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x6767c; run_67600(); return; case 0x679b8: f0 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f1 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = f0; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x67858; continue; case 0x679d8: r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; case 0x679dc: r3 = readPages[(r28+-30900)>>>12][((r28+-30900)>>>2)&0x3ff]; r2 = readPages[(r28+-30904)>>>12][((r28+-30904)>>>2)&0x3ff]; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f24; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f25; /* Next insn is delay slot */ pc=0x6767c; run_67600(); return; case 0x679f4: f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; case 0x67a00: pc=0x67a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67a00() throws ExecutionException { /* 0x67a00 - 0x67c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x67a00: r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } if(r30 != r0) { /* Next insn is delay slot */ pc=0x67a4c; continue; } r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x67cb4; run_67c00(); return; } case 0x67a4c: f0 = readPages[(r28+-30876)>>>12][((r28+-30876)>>>2)&0x3ff]; f1 = readPages[(r28+-30880)>>>12][((r28+-30880)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x67a8c; continue; } f0 = readPages[(r28+-30868)>>>12][((r28+-30868)>>>2)&0x3ff]; f1 = readPages[(r28+-30872)>>>12][((r28+-30872)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x677d4; run_67600(); return; } case 0x67a8c: r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x67a9c; pc=0x5ba00; run_5ba00(); return; case 0x67a9c: r4 = r18 + r0; r5 = r21 + r0; /* Next insn is delay slot */ r31=0x67aac; pc=0x5ba00; run_5ba00(); return; case 0x67aac: r4 = r18 + r0; r5 = r19 + r0; /* Next insn is delay slot */ r31=0x67abc; pc=0x5ba00; run_5ba00(); return; case 0x67abc: r4 = r18 + r0; r5 = r23 + r0; /* Next insn is delay slot */ r31=0x67acc; pc=0x5ba00; run_5ba00(); return; case 0x67acc: r4 = r18 + r0; r5 = r20 + r0; /* Next insn is delay slot */ r31=0x67adc; pc=0x5ba00; run_5ba00(); return; case 0x67adc: /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x67ae4: r3 = r0 + 1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x679d8; run_67800(); return; } r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67fd0; run_67e00(); return; } r6 = r2 + r0; /* Next insn is delay slot */ pc=0x679dc; run_67800(); return; case 0x67b0c: r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = 848 << 16; r2 = r2 + r3; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x677bc; run_67600(); return; case 0x67b38: f0 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; f1 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f0; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x67744; run_67600(); return; case 0x67b58: f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r3 = 32768 << 16; f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; switch(fcsr & 3) { case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity } fcsr = r4; r2 = f2; r2 = r2 | r3; /* Next insn is delay slot */ pc=0x67720; run_67600(); return; case 0x67ba8: f0 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; f1 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = f0; writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x67764; run_67600(); return; case 0x67bc8: writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; r4 = r0 + r0; if(r7 != r0) { /* Next insn is delay slot */ pc=0x66edc; run_66e00(); return; } /* Next insn is delay slot */ pc=0x670bc; run_67000(); return; case 0x67be0: r7 = r20 + r0; r5 = r0 + r0; r3 = r0 + r0; case 0x67bec: r2 = r21 + -48; r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x67cf0; run_67c00(); return; } r5 = r5 + 1; case 0x67c00: pc=0x67c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67c00() throws ExecutionException { /* 0x67c00 - 0x67e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x67c00: r9 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x67e24; run_67e00(); return; } r2 = r0 + 1; r4 = r5 + r0; r6 = r7 < 17 ? 1 : 0; if(r5 == r2) { /* Next insn is delay slot */ pc=0x67c60; continue; } r2 = r7 + 1; r8 = r5 + r7; r6 = r7 < 17 ? 1 : 0; case 0x67c30: if(r6 == r0) { /* Next insn is delay slot */ pc=0x67c50; continue; } r4 = r2 < 10 ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x67ec4; run_67e00(); return; } r4 = r23 << 1; r23 = r23 << 3; r23 = r4 + r23; case 0x67c50: r2 = r2 + 1; r4 = r5 + r0; if(r2 != r8) { /* Next insn is delay slot */ pc=0x67c30; continue; } case 0x67c60: if(r6 == r0) { /* Next insn is delay slot */ pc=0x6850c; run_68400(); return; } case 0x67c68: r2 = r7 + r5; r2 = r2 < 10 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68674; run_68600(); return; } r2 = r23 << 1; r23 = r23 << 3; r23 = r2 + r23; r23 = r23 + r21; case 0x67c88: r3 = r3 + r4; r7 = r7 + r4; r5 = r0 + r0; /* Next insn is delay slot */ pc=0x67e24; run_67e00(); return; case 0x67c9c: r10 = r0 + r0; /* Next insn is delay slot */ pc=0x671a0; run_67000(); return; case 0x67ca8: r10 = r0 + r0; /* Next insn is delay slot */ pc=0x67190; run_67000(); return; case 0x67cb4: r3 = 15 << 16; r3 = r3 | 65535; r2 = r2 & r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67a4c; run_67a00(); return; } f0 = readPages[(r28+-30860)>>>12][((r28+-30860)>>>2)&0x3ff]; f1 = readPages[(r28+-30864)>>>12][((r28+-30864)>>>2)&0x3ff]; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x677d4; run_67600(); return; } /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; case 0x67cf0: r9 = r0 + 1; /* Next insn is delay slot */ pc=0x66ebc; run_66e00(); return; case 0x67cfc: r3 = r2 < 309 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x680f4; run_68000(); return; } r2 = r2 >> 4; r3 = r2 < 2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x68708; run_68600(); return; } f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r6 = 7 << 16; r6 = r6 + 2136; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r6 + r0; r4 = r0 + r0; case 0x67d30: r5 = r2 & 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x67d50; continue; } f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x67d50: r2 = r2 >> 1; r5 = r2 < 2 ? 1 : 0; r4 = r4 + 1; r3 = r3 + 8; if(r5 == r0) { /* Next insn is delay slot */ pc=0x67d30; continue; } writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; case 0x67d70: r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r4 = r4 << 3; r6 = r6 + r4; r2 = 64688 << 16; r2 = r2 + r3; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r2 = 32752 << 16; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r4 = 31904 << 16; r4 = r4 + 1; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; r5 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; r3 = r2 & r5; r4 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x680f4; run_68000(); return; } r4 = 31888 << 16; r4 = r4 + 1; r3 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x68578; run_68400(); return; } r2 = r2 + -1; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; r2 = r0 + -1; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r2; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r22 = r0 + r0; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; case 0x67e00: pc=0x67e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_67e00() throws ExecutionException { /* 0x67e00 - 0x68000 */ int addr, tmp; for(;;) { switch(pc) { case 0x67e00: /* Next insn is delay slot */ pc=0x673cc; run_67200(); return; case 0x67e08: r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r21 = r21 + -48; r9 = r16 + r0; r7 = r0 + r0; if(r21 != r0) { /* Next insn is delay slot */ pc=0x68370; run_68200(); return; } r5 = r0 + 1; case 0x67e24: r2 = r9 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r9+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r21 = tmp; /* Next insn is delay slot */ pc=0x67bec; run_67a00(); return; case 0x67e38: f0 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; f1 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ pc=0x67744; run_67600(); return; case 0x67e5c: r4 = r0 + 19999; /* Next insn is delay slot */ pc=0x67270; run_67200(); return; case 0x67e68: r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r2 = r29 + 36; r19 = 7 << 16; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; r4 = r18 + r0; r5 = r29 + 40; r6 = r19 + 12276; r7 = r29 + 32; /* Next insn is delay slot */ r31=0x67e94; pc=0x6b600; run_6b600(); return; case 0x67e94: r17 = r2 & 7; if(r17 == r0) { /* Next insn is delay slot */ pc=0x6728c; run_67200(); return; } r3 = r0 + 6; if(r17 != r3) { /* Next insn is delay slot */ pc=0x68380; run_68200(); return; } r16 = r16 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x67ec4: r4 = r30 << 1; r30 = r30 << 3; r30 = r4 + r30; /* Next insn is delay slot */ pc=0x67c50; run_67c00(); return; case 0x67ed8: f2 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; f3 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } /* Next insn is delay slot */ pc=0x66f18; run_66e00(); return; case 0x67ef4: if(r30 != r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = 15 << 16; r2 = r2 | 65535; r2 = r2 & r16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } r3 = 32752 << 16; r2 = 1712 << 16; r3 = r3 & r16; r2 = r2 + 1; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } r2 = readPages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67f64; continue; } r2 = readPages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff]; r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } case 0x67f64: r5 = r20 + r0; r4 = r18 + r0; r6 = r0 + 1; /* Next insn is delay slot */ r31=0x67f78; pc=0x5cc00; run_5cc00(); return; case 0x67f78: r4 = r2 + r0; r5 = r19 + r0; r20 = r2 + r0; /* Next insn is delay slot */ r31=0x67f8c; pc=0x5ce00; run_5ce00(); return; case 0x67f8c: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } r2 = r16 + r0; case 0x67f98: if(r22 == r0) { /* Next insn is delay slot */ pc=0x686b8; run_68600(); return; } r3 = 32752 << 16; r4 = 1712 << 16; r3 = r2 & r3; r4 = r4 + 1; r4 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x686b8; run_68600(); return; } r2 = 880 << 16; r2 = r2 + 1; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x68054; run_68000(); return; } case 0x67fd0: r2 = r0 + 34; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; case 0x67fe8: if(r30 == r0) { /* Next insn is delay slot */ pc=0x6833c; run_68200(); return; } r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = 15 << 16; r2 = r2 | 65535; r3 = r2 & r4; case 0x68000: pc=0x68000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68000() throws ExecutionException { /* 0x68000 - 0x68200 */ int addr, tmp; for(;;) { switch(pc) { case 0x68000: if(r3 == r2) { /* Next insn is delay slot */ pc=0x685a0; run_68400(); return; } r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; case 0x68010: r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6804c; continue; } f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x68030; pc=0x5d200; run_5d200(); return; case 0x68030: f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; case 0x6804c: if(r22 == r0) { /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; } case 0x68054: writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r0; f0 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r4 = 14672 << 16; f2 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r4; f1 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; f3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; } r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; } r2 = r0 + 34; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; case 0x680b4: r4 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r2 = r0 + -1; if(r4 != r2) { /* Next insn is delay slot */ pc=0x678f0; run_67800(); return; } r2 = r0 + 34; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = 32752 << 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x67a8c; run_67a00(); return; case 0x680f4: r2 = r0 + 34; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; case 0x680fc: r2 = 32752 << 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x672c4; run_67200(); return; case 0x68110: if(r2 == r0) { /* Next insn is delay slot */ pc=0x673b4; run_67200(); return; } r2 = r0 - r2; r3 = r2 & 15; if(r3 == r0) { /* Next insn is delay slot */ pc=0x68158; continue; } r4 = 7 << 16; r3 = r3 << 3; r4 = r4 + 2176; r3 = r3 + r4; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; case 0x68158: r2 = r2 >> 4; if(r2 == r0) { /* Next insn is delay slot */ pc=0x673b4; run_67200(); return; } r3 = r2 < 32 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x68254; run_68200(); return; } r3 = r2 & 16; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6871c; run_68600(); return; } r22 = r0 + r0; case 0x68180: if(r2 <= 0) { /* Next insn is delay slot */ pc=0x681d0; continue; } f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r3 = 7 << 16; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r3 + 4536; case 0x68198: r4 = r2 & 1; if(r4 == r0) { /* Next insn is delay slot */ pc=0x681b8; continue; } f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } case 0x681b8: r2 = r2 >> 1; r3 = r3 + 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x68198; continue; } writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; case 0x681d0: if(r22 == r0) { /* Next insn is delay slot */ pc=0x68218; run_68200(); return; } r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r4 = r0 + 107; r2 = r3 << 1; r2 = r2 >>> 21; r2 = r4 - r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x68218; run_68200(); return; } r4 = r2 < 32 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6876c; run_68600(); return; } case 0x68200: pc=0x68200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68200() throws ExecutionException { /* 0x68200 - 0x68400 */ int addr, tmp; for(;;) { switch(pc) { case 0x68200: r4 = r2 < 53 ? 1 : 0; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6878c; run_68600(); return; } r2 = 880 << 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; case 0x68218: f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f0 = r0; f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; f1 = r0; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (0!=0)) { /* Next insn is delay slot */ pc=0x673cc; run_67200(); return; } case 0x68254: r2 = r0 + 34; writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x6826c: f2 = readPages[(r28+-30940)>>>12][((r28+-30940)>>>2)&0x3ff]; f4 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; f3 = readPages[(r28+-30944)>>>12][((r28+-30944)>>>2)&0x3ff]; f5 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = f2; writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = f3; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f4; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f5; /* Next insn is delay slot */ pc=0x679a8; run_67800(); return; case 0x68294: r17 = r16 + r0; r30 = r0 + r0; r23 = r0 + r0; r20 = r0 + r0; /* Next insn is delay slot */ pc=0x66e64; run_66e00(); return; case 0x682ac: f4 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; f5 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } /* Next insn is delay slot */ pc=0x66f60; run_66e00(); return; case 0x682c8: r3 = r0 + 37; r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r3 = r3 - r7; r3 = r3 < r4 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x67354; run_67200(); return; } r2 = r0 + 15; r7 = r2 - r7; r2 = 7 << 16; r2 = r2 + 2176; r3 = r7 << 3; r3 = r3 + r2; f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r3 = r4 - r7; r3 = r3 << 3; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } r2 = r3 + r2; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x6833c: r2 = 15 << 16; r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r2 = r2 | 65535; r2 = r2 & r3; if(r2 != r0) { /* Next insn is delay slot */ pc=0x684a8; run_68400(); return; } r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r4 != r0) { /* Next insn is delay slot */ pc=0x684a8; run_68400(); return; } r2 = r3 + r0; /* Next insn is delay slot */ pc=0x67f98; run_67e00(); return; case 0x68370: r4 = r0 + 1; r5 = r0 + 1; /* Next insn is delay slot */ pc=0x67c68; run_67c00(); return; case 0x68380: r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; if(r6 == r0) { /* Next insn is delay slot */ pc=0x683b8; continue; } r5 = readPages[(r19+12276)>>>12][((r19+12276)>>>2)&0x3ff]; r4 = r29 + 24; writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ r31=0x683a4; pc=0x5dc00; run_5dc00(); return; case 0x683a4: r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r4 = r18 + r0; /* Next insn is delay slot */ r31=0x683b4; pc=0x5ba00; run_5ba00(); return; case 0x683b4: r2 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; case 0x683b8: r3 = (r17&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; r4 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x672a8; run_67200(); return; } r3 = 7 << 16; r17 = r17 << 2; r3 = r3 + 4508; r3 = r3 + r17; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r3; return; case 0x683e8: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r4; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x672a8; run_67200(); return; case 0x68400: pc=0x68400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68400() throws ExecutionException { /* 0x68400 - 0x68600 */ int addr, tmp; for(;;) { switch(pc) { case 0x68400: r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; r3 = 65519 << 16; r4 = r4 + 1075; r3 = r3 | 65535; r4 = r4 << 20; r3 = r5 & r3; r3 = r4 | r3; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x672a8; run_67200(); return; case 0x68430: r3 = 32767 << 16; r3 = r3 | 65535; r5 = r0 + -1; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; /* Next insn is delay slot */ pc=0x672a8; run_67200(); return; case 0x6844c: writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x672a8; run_67200(); return; case 0x6845c: r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; r3 = r4 < -22 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x67354; run_67200(); return; } r3 = 7 << 16; r2 = r4 << 3; r3 = r3 + 2176; r2 = r3 - r2; f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ pc=0x66cd8; run_66c00(); return; case 0x684a8: r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; } f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x684d0; pc=0x5d200; run_5d200(); return; case 0x684d0: f4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; f5 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } f0 = r0; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; f1 = r0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); if(((fcsr&0x800000)!=0) == (1!=0)) { /* Next insn is delay slot */ pc=0x67fd0; run_67e00(); return; } /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; case 0x6850c: r5 = r0 + r0; /* Next insn is delay slot */ pc=0x67e24; run_67e00(); return; case 0x68518: r2 = r0 + 73; if(r21 != r2) { /* Next insn is delay slot */ pc=0x66cc8; run_66c00(); return; } case 0x68524: r4 = 7 << 16; r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r4 = r4 + 4308; case 0x68530: r4 = r4 + 1; addr=r4+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; if(r5 == r0) { /* Next insn is delay slot */ pc=0x68618; run_68600(); return; } r2 = r2 + 1; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r6 = r3 + -65; r6 = r6 & 255; r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x68568; continue; } r3 = r3 + 32; case 0x68568: if(r3 == r5) { /* Next insn is delay slot */ pc=0x68530; continue; } /* Next insn is delay slot */ pc=0x66cc8; run_66c00(); return; case 0x68578: r2 = 848 << 16; r2 = r5 + r2; f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r22 = r0 + r0; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; /* Next insn is delay slot */ pc=0x673cc; run_67200(); return; case 0x685a0: r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; if(r22 == r0) { /* Next insn is delay slot */ pc=0x686fc; run_68600(); return; } r3 = 32752 << 16; r5 = 1696 << 16; r3 = r4 & r3; r5 = r5 + 1; r5 = ((r3 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x686fc; run_68600(); return; } r5 = r0 + 107; r3 = r3 >>> 20; r3 = r5 - r3; r5 = r0 + -1; r3 = r5 << (r3&0x1f); case 0x685dc: if(r2 != r3) { /* Next insn is delay slot */ pc=0x68010; run_68000(); return; } r2 = 32752 << 16; r4 = r4 & r2; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; r2 = 16 << 16; r2 = r4 + r2; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; case 0x68600: pc=0x68600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68600() throws ExecutionException { /* 0x68600 - 0x68800 */ int addr, tmp; for(;;) { switch(pc) { case 0x68600: f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; case 0x68618: r4 = 7 << 16; r7 = r2 + r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; r4 = r4 + 4312; case 0x68628: r4 = r4 + 1; addr=r4+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r2 = r2 + 1; if(r5 == r0) { /* Next insn is delay slot */ pc=0x68668; continue; } addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r6 = r3 + -65; r6 = r6 & 255; r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x6865c; continue; } r3 = r3 + 32; case 0x6865c: if(r3 == r5) { /* Next insn is delay slot */ pc=0x68628; continue; } r2 = r7 + 1; case 0x68668: writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x680fc; run_68000(); return; case 0x68674: r2 = r30 << 1; r30 = r30 << 3; r30 = r2 + r30; r30 = r30 + r21; /* Next insn is delay slot */ pc=0x67c88; run_67c00(); return; case 0x6868c: r2 = r4 + 1; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 40; if(r3 == r2) { /* Next insn is delay slot */ pc=0x68728; continue; } case 0x686a4: r4 = 32760 << 16; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r4; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x672c4; run_67200(); return; case 0x686b8: r3 = 32752 << 16; r2 = r2 & r3; r3 = 65520 << 16; r3 = r2 + r3; r5 = r0 + -1; r2 = 15 << 16; r2 = r2 | 65535; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; r2 = r3 | r2; f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; /* Next insn is delay slot */ pc=0x6804c; run_68000(); return; case 0x686fc: r3 = r0 + -1; /* Next insn is delay slot */ pc=0x685dc; run_68400(); return; case 0x68708: r6 = 7 << 16; r4 = r0 + r0; r6 = r6 + 2136; /* Next insn is delay slot */ pc=0x67d70; run_67c00(); return; case 0x6871c: r22 = r0 + 106; /* Next insn is delay slot */ pc=0x68180; run_68000(); return; case 0x68728: r5 = 7 << 16; r4 = r29 + 40; r5 = r5 + 12256; r6 = r29 + 24; /* Next insn is delay slot */ r31=0x68740; pc=0x6c200; run_6c200(); return; case 0x68740: r3 = r0 + 5; if(r2 != r3) { /* Next insn is delay slot */ pc=0x686a4; continue; } r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r3 = 32752 << 16; r2 = r3 | r2; r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x672c4; run_67200(); return; case 0x6876c: r3 = r0 + -1; r2 = r3 << (r2&0x1f); r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r2 = r2 & r3; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x68218; run_68200(); return; case 0x6878c: r4 = r0 + -1; r2 = r4 << (r2&0x1f); r2 = r2 & r3; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x68218; run_68200(); return; case 0x68800: pc=0x68800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68800() throws ExecutionException { /* 0x68800 - 0x68a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x68800: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x66c00; run_66c00(); return; case 0x68a00: pc=0x68a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68a00() throws ExecutionException { /* 0x68a00 - 0x68c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x68a00: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r29 = r29 + -32; r6 = r5 + r0; r5 = r2 + r0; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; /* Next insn is delay slot */ r31=0x68a28; pc=0x66c00; run_66c00(); return; case 0x68a28: f12 = f0; f13 = f1; f20 = f0; f21 = f1; /* Next insn is delay slot */ r31=0x68a38; pc=0x37a00; run_37a00(); return; case 0x68a38: if(r2 == r0) { /* Next insn is delay slot */ pc=0x68a60; continue; } f0=Float.floatToRawIntBits((float)(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x68a60: f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r4 = r0 + r0; r29 = r29 + 32; /* Next insn is delay slot */ pc=0x66a00; run_66a00(); return; case 0x68c00: pc=0x68c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68c00() throws ExecutionException { /* 0x68c00 - 0x68e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x68c00: r2 = r0 + -1; if(r5 == r2) { /* Next insn is delay slot */ pc=0x68d24; continue; } addr=r6+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r29 = r29 + -32; r2 = r2 & 65503; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; addr=r6+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r6+48)>>>12][((r6+48)>>>2)&0x3ff]; r16 = r5 & 255; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68cb0; continue; } r3 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; r2 = readPages[(r6+52)>>>12][((r6+52)>>>2)&0x3ff]; r2 = r3 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68c88; continue; } case 0x68c4c: r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; r3 = r2 + -1; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r3; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; r2 = r16 + r0; case 0x68c74: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x68c88: r5 = r6 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x68c98; pc=0x6a200; run_6a200(); return; case 0x68c98: r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68c4c; continue; } r2 = r0 + -1; /* Next insn is delay slot */ pc=0x68c74; continue; case 0x68cb0: r2 = readPages[(r6+16)>>>12][((r6+16)>>>2)&0x3ff]; r3 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68cdc; continue; } r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68cdc; continue; } addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r16) { /* Next insn is delay slot */ pc=0x68d30; continue; } case 0x68cdc: r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; addr=r6+66; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r6+60)>>>12][((r6+60)>>>2)&0x3ff] = r2; r2 = r6 + 64; writePages[(r6+48)>>>12][((r6+48)>>>2)&0x3ff] = r2; r2 = r0 + 3; writePages[(r6+52)>>>12][((r6+52)>>>2)&0x3ff] = r2; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r6 + 66; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; writePages[(r6+56)>>>12][((r6+56)>>>2)&0x3ff] = r3; r2 = r16 + r0; r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x68d24: r2 = r0 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x68d30: r3 = r3 + -1; writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r3; r3 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x68c74; continue; case 0x68e00: pc=0x68e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_68e00() throws ExecutionException { /* 0x68e00 - 0x69000 */ int addr, tmp; for(;;) { switch(pc) { case 0x68e00: r29 = r29 + -24; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = readPages[(r5+48)>>>12][((r5+48)>>>2)&0x3ff]; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; if(r5 == r0) { /* Next insn is delay slot */ pc=0x68e68; continue; } r2 = r16 + 64; if(r5 == r2) { /* Next insn is delay slot */ pc=0x68e30; continue; } /* Next insn is delay slot */ r31=0x68e30; pc=0x3ca00; run_3ca00(); return; case 0x68e30: r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x68e68; continue; } r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r2 = r0 + r0; case 0x68e54: r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 24; /* Next insn is delay slot */ pc=r31; return; case 0x68e68: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 | 32; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x68e54; continue; case 0x69000: pc=0x69000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69000() throws ExecutionException { /* 0x69000 - 0x69200 */ int addr, tmp; for(;;) { switch(pc) { case 0x69000: { long hilo = (r7) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } r29 = r29 + -56; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; r22 = r6 + r0; r21 = lo; r23 = r7 + r0; r16 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; if(r21 == r0) { /* Next insn is delay slot */ pc=0x6910c; continue; } r20 = r4 + r0; r19 = r5 + r0; r18 = lo; /* Next insn is delay slot */ pc=0x69094; continue; case 0x69058: r6 = r17 + r0; /* Next insn is delay slot */ r31=0x69064; pc=0x48fdc; run_48e00(); return; case 0x69064: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; r2 = r2 + r17; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r4 = r20 + r0; r5 = r16 + r0; r19 = r19 + r17; r18 = r18 - r17; /* Next insn is delay slot */ r31=0x6908c; pc=0x68e00; run_68e00(); return; case 0x6908c: if(r2 != r0) { /* Next insn is delay slot */ pc=0x69118; continue; } case 0x69094: r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r4 = r19 + r0; r3 = ((r17 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x69058; continue; } r6 = r18 + r0; /* Next insn is delay slot */ r31=0x690b8; pc=0x48fdc; run_48e00(); return; case 0x690b8: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 - r18; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r18 = r2 + r18; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; r2 = r23 + r0; case 0x690dc: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x6910c: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x690dc; continue; case 0x69118: r2 = r21 - r18; if(r22 != r0) { /* Next insn is delay slot */ if(r22!=0) { hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } pc=0x69128; continue; } if(r22!=0) { hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); case 0x69128: r2 = lo; /* Next insn is delay slot */ pc=0x690dc; continue; case 0x69200: pc=0x69200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69200() throws ExecutionException { /* 0x69200 - 0x69400 */ int addr, tmp; for(;;) { switch(pc) { case 0x69200: addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -416; writePages[(r29+380)>>>12][((r29+380)>>>2)&0x3ff] = r17; r17 = r4 + r0; r4 = r2 & 8192; writePages[(r29+408)>>>12][((r29+408)>>>2)&0x3ff] = r30; writePages[(r29+376)>>>12][((r29+376)>>>2)&0x3ff] = r16; writePages[(r29+412)>>>12][((r29+412)>>>2)&0x3ff] = r31; writePages[(r29+404)>>>12][((r29+404)>>>2)&0x3ff] = r23; writePages[(r29+400)>>>12][((r29+400)>>>2)&0x3ff] = r22; writePages[(r29+396)>>>12][((r29+396)>>>2)&0x3ff] = r21; writePages[(r29+392)>>>12][((r29+392)>>>2)&0x3ff] = r20; writePages[(r29+388)>>>12][((r29+388)>>>2)&0x3ff] = r19; writePages[(r29+384)>>>12][((r29+384)>>>2)&0x3ff] = r18; r30 = r5 + r0; r16 = r6 + r0; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r7; if(r4 != r0) { /* Next insn is delay slot */ pc=0x69264; continue; } r2 = r2 | 8192; r4 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; addr=r5+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + -8193; r2 = r4 & r2; writePages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff] = r2; case 0x69264: r19 = 7 << 16; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r0; r18 = r0 + r0; r23 = r0 + r0; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r0; r19 = r19 + 4576; case 0x6927c: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r16 + 1; writePages[(r29+328)>>>12][((r29+328)>>>2)&0x3ff] = r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69484; run_69400(); return; } case 0x69290: r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r4 = r5 + r2; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 8; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6932c; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x69308; continue; } case 0x692c0: r4 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r5 + r2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6927c; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r4 = r4 + 1; r2 = r2 + -1; r23 = r23 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; if(r2 > 0) { /* Next insn is delay slot */ pc=0x692c0; continue; } case 0x69308: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69318; pc=0x68e00; run_68e00(); return; case 0x69318: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6927c; continue; } r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x692c0; continue; case 0x6932c: r4 = r0 + 37; if(r2 != r4) { /* Next insn is delay slot */ pc=0x69500; run_69400(); return; } r21 = r0 + r0; r22 = r0 + r0; case 0x69340: r16 = r16 + 1; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r2 = r4 & 255; r6 = (r2&0xffffffffL) < (121&0xffffffffL) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x69374; continue; } r2 = r2 << 2; r2 = r19 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x69374: r4 = r5 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r2 = r0 + 1; r4 = r4 & 3; if(r4 != r2) { /* Next insn is delay slot */ pc=0x69390; continue; } case 0x6938c: r21 = r21 | 1; case 0x69390: r3 = 4 << 16; r3 = r3 + 12800; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; r18 = r0 + 10; r20 = r0 + 3; case 0x693a4: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x6956c; run_69400(); return; } case 0x693b4: r2 = r21 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x694a8; run_69400(); return; } case 0x693c0: r2 = r0 + 2; if(r20 == r2) { /* Next insn is delay slot */ pc=0x69714; run_69600(); return; } r2 = r0 + 3; if(r20 == r2) { /* Next insn is delay slot */ pc=0x696a0; run_69600(); return; } r2 = r0 + 1; if(r20 == r2) { /* Next insn is delay slot */ pc=0x695e0; run_69400(); return; } if(r22 != r0) { /* Next insn is delay slot */ pc=0x693f0; continue; } r22 = r0 + 1; case 0x693f0: r2 = r21 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69cd8; run_69c00(); return; } r21 = r21 & 16; case 0x69400: pc=0x69400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69400() throws ExecutionException { /* 0x69400 - 0x69600 */ int addr, tmp; for(;;) { switch(pc) { case 0x69400: if(r21 == r0) { /* Next insn is delay slot */ pc=0x69e78; run_69e00(); return; } r21 = r0 + r0; /* Next insn is delay slot */ pc=0x69440; continue; case 0x69414: r4 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r21 = r21 + r2; r22 = r22 - r2; r2 = r4 + r2; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69438; pc=0x68e00; run_68e00(); return; case 0x69438: if(r2 != r0) { /* Next insn is delay slot */ pc=0x69fa4; run_69e00(); return; } case 0x69440: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r4 = r2 < r22 ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x69414; continue; } r2 = r2 - r22; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r21 = r21 + r22; r9 = r2 + r22; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r9; case 0x6946c: r23 = r23 + r21; case 0x69470: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r16 = r16 + 1; writePages[(r29+328)>>>12][((r29+328)>>>2)&0x3ff] = r2; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69290; run_69200(); return; } case 0x69484: r2 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x695ac; continue; case 0x69490: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x694a0; pc=0x68e00; run_68e00(); return; case 0x694a0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x69584; continue; } case 0x694a8: r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x694c0; continue; case 0x694b8: r2 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; case 0x694c0: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r5 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 8; if(r4 == r0) { /* Next insn is delay slot */ pc=0x693c0; run_69200(); return; } r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r23 = r23 + 1; r4 = r4 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; if(r4 > 0) { /* Next insn is delay slot */ pc=0x694b8; continue; } /* Next insn is delay slot */ pc=0x69490; continue; case 0x69500: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x69fb8; run_69e00(); return; } case 0x69510: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r5 = tmp; if(r5 != r4) { /* Next insn is delay slot */ pc=0x69484; continue; } r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r23 = r23 + 1; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69548: r21 = r21 | 1; case 0x6954c: r3 = 6 << 16; r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r3 = r3 + -2048; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; r18 = r0 + 8; r20 = r0 + 3; if(r2 > 0) { /* Next insn is delay slot */ pc=0x693b4; run_69200(); return; } case 0x6956c: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x6957c; pc=0x68e00; run_68e00(); return; case 0x6957c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x693b4; run_69200(); return; } case 0x69584: r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x695a8; continue; } addr=r30+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; r2 = r2 & 64; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69484; continue; } case 0x695a8: r2 = r0 + -1; case 0x695ac: r31 = readPages[(r29+412)>>>12][((r29+412)>>>2)&0x3ff]; r30 = readPages[(r29+408)>>>12][((r29+408)>>>2)&0x3ff]; r23 = readPages[(r29+404)>>>12][((r29+404)>>>2)&0x3ff]; r22 = readPages[(r29+400)>>>12][((r29+400)>>>2)&0x3ff]; r21 = readPages[(r29+396)>>>12][((r29+396)>>>2)&0x3ff]; r20 = readPages[(r29+392)>>>12][((r29+392)>>>2)&0x3ff]; r19 = readPages[(r29+388)>>>12][((r29+388)>>>2)&0x3ff]; r18 = readPages[(r29+384)>>>12][((r29+384)>>>2)&0x3ff]; r17 = readPages[(r29+380)>>>12][((r29+380)>>>2)&0x3ff]; r16 = readPages[(r29+376)>>>12][((r29+376)>>>2)&0x3ff]; r29 = r29 + 416; /* Next insn is delay slot */ pc=r31; return; case 0x695e0: if(r22 != r0) { /* Next insn is delay slot */ pc=0x695ec; continue; } r22 = r0 + -1; case 0x695ec: r21 = r21 & 16; if(r21 == r0) { /* Next insn is delay slot */ pc=0x69a10; run_69a00(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r21 = r0 + r0; case 0x69600: pc=0x69600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69600() throws ExecutionException { /* 0x69600 - 0x69800 */ int addr, tmp; for(;;) { switch(pc) { case 0x69600: r10 = r29 + 24; case 0x69604: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r10 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6968c; continue; } case 0x69620: r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; if(r22 == r21) { /* Next insn is delay slot */ pc=0x6946c; run_69400(); return; } if(r4 > 0) { /* Next insn is delay slot */ pc=0x69604; continue; } r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x6965c; pc=0x68e00; run_68e00(); return; case 0x6965c: r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6946c; run_69400(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r10 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x69620; continue; } case 0x6968c: if(r21 == r0) { /* Next insn is delay slot */ pc=0x69484; run_69400(); return; } r23 = r23 + r21; /* Next insn is delay slot */ pc=0x69470; run_69400(); return; case 0x696a0: r2 = r22 + -1; r2 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69a00; run_69a00(); return; } r13 = r0 + r0; case 0x696b4: r11 = r29 + 280; r2 = 7 << 16; r10 = r21 | 3456; r12 = r0 + r0; r21 = r11 + r0; r14 = r0 + 512; r7 = r2 + 5372; case 0x696d0: r6 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r6+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r2 = r4 + -43; r2 = r2 & 255; r5 = (r2&0xffffffffL) < (78&0xffffffffL) ? 1 : 0; if(r5 == r0) { /* Next insn is delay slot */ pc=0x69898; run_69800(); return; } r3 = 7 << 16; r2 = r2 << 2; r3 = r3 + 5060; r2 = r3 + r2; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=r2; return; case 0x69714: if(r22 == r0) { /* Next insn is delay slot */ pc=0x697b0; continue; } r2 = r21 & 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x697c0; continue; } case 0x69728: r21 = r21 & 16; if(r21 == r0) { /* Next insn is delay slot */ pc=0x69c10; run_69c00(); return; } r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r21 = r0 + r0; case 0x69740: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r5 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6946c; run_69400(); return; } r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; r4 = r4 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; if(r22 == r21) { /* Next insn is delay slot */ pc=0x6946c; run_69400(); return; } if(r4 > 0) { /* Next insn is delay slot */ pc=0x69740; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69798; pc=0x68e00; run_68e00(); return; case 0x69798: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6946c; run_69400(); return; } r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x69740; continue; case 0x697b0: r2 = r21 & 1; r22 = r0 + -1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69728; continue; } case 0x697c0: r4 = r29 + 320; r5 = r0 + r0; r6 = r0 + 8; r20 = r21 & 16; /* Next insn is delay slot */ r31=0x697d8; pc=0x48fec; run_48e00(); return; case 0x697d8: if(r20 != r0) { /* Next insn is delay slot */ pc=0x69ed0; run_69e00(); return; } r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r21 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; case 0x697f4: r6 = r0 + r0; case 0x697f8: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; case 0x69800: pc=0x69800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69800() throws ExecutionException { /* 0x69800 - 0x69a00 */ int addr, tmp; for(;;) { switch(pc) { case 0x69800: addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r4 + r2; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r2 & 8; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69828; continue; } if(r22 != r0) { /* Next insn is delay slot */ pc=0x69ff0; run_69e00(); return; } case 0x69828: if(r20 != r0) { /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; } writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r0; case 0x69834: r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x6984c: r2 = r10 & 1536; if(r2 != r14) { /* Next insn is delay slot */ pc=0x69898; continue; } r2 = r0 + -513; r10 = r10 & r2; r10 = r10 | 1280; r18 = r0 + 16; case 0x69868: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; addr=r21+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r2 + -1; r21 = r21 + 1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x69994; continue; } case 0x69884: r6 = r6 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r6; case 0x6988c: r22 = r22 + -1; if(r22 != r0) { /* Next insn is delay slot */ pc=0x696d0; run_69600(); return; } case 0x69898: r2 = r10 & 256; if(r2 == r0) { /* Next insn is delay slot */ pc=0x698b8; continue; } r2 = ((r11 & 0xffffffffL) < (r21 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69f3c; run_69e00(); return; } case 0x698b0: if(r21 == r11) { /* Next insn is delay slot */ pc=0x69484; run_69400(); return; } case 0x698b8: r2 = r10 & 16; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69e04; run_69e00(); return; } case 0x698c4: r11 = r21 - r11; r12 = r11 + r12; r23 = r23 + r12; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x698d8: r2 = r18 < 11 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69898; continue; } r2 = r0 + -2945; r10 = r10 & r2; /* Next insn is delay slot */ pc=0x69868; continue; case 0x698f4: r2 = r18 << 1; r2 = r2 + r7; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r18 = tmp; r2 = r18 < 9 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69898; continue; } r2 = r0 + -2945; r10 = r10 & r2; /* Next insn is delay slot */ pc=0x69868; continue; case 0x69920: r2 = r18 << 1; r2 = r2 + r7; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r18 = tmp; r2 = r0 + -2945; r10 = r10 & r2; /* Next insn is delay slot */ pc=0x69868; continue; case 0x6993c: r2 = r10 & 2048; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69868; continue; } if(r18 != r0) { /* Next insn is delay slot */ pc=0x69958; continue; } r10 = r10 | 512; r18 = r0 + 8; case 0x69958: r2 = r10 & 1024; if(r2 != r0) { /* Next insn is delay slot */ pc=0x69ec0; run_69e00(); return; } r2 = r0 + -897; r10 = r10 & r2; if(r13 == r0) { /* Next insn is delay slot */ pc=0x6997c; continue; } r13 = r13 + -1; r22 = r22 + 1; case 0x6997c: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r12 = r12 + 1; r2 = r2 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; if(r2 > 0) { /* Next insn is delay slot */ pc=0x69884; continue; } case 0x69994: r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff] = r7; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r13; writePages[(r29+356)>>>12][((r29+356)>>>2)&0x3ff] = r14; /* Next insn is delay slot */ r31=0x699bc; pc=0x68e00; run_68e00(); return; case 0x699bc: r7 = readPages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff]; r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; r13 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; r14 = readPages[(r29+356)>>>12][((r29+356)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6988c; continue; } /* Next insn is delay slot */ pc=0x69898; continue; case 0x699e4: r2 = r10 & 128; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69898; continue; } r2 = r0 + -129; r10 = r10 & r2; /* Next insn is delay slot */ pc=0x69868; continue; case 0x69a00: pc=0x69a00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69a00() throws ExecutionException { /* 0x69a00 - 0x69c00 */ int addr, tmp; for(;;) { switch(pc) { case 0x69a00: r13 = r22 + -39; r22 = r0 + 39; /* Next insn is delay slot */ pc=0x696b4; run_69600(); return; case 0x69a10: r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r10 = r29 + 24; r3 = r3 + 4; writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r21 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r20 = r21 + r0; case 0x69a34: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r10 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r4 = tmp; if(r4 == r0) { /* Next insn is delay slot */ pc=0x69abc; continue; } r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r20 = r20 + 1; r4 = r4 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; r4 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r22 = r22 + -1; addr=r20+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r22 == r0) { /* Next insn is delay slot */ pc=0x69abc; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x69a34; continue; } r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x69aa8; pc=0x68e00; run_68e00(); return; case 0x69aa8: r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69a34; continue; } if(r21 == r20) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } case 0x69abc: r21 = r20 - r21; if(r21 == r0) { /* Next insn is delay slot */ pc=0x69484; run_69400(); return; } r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; addr=r20+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r3 = r3 + 1; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; r23 = r23 + r21; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x69470; run_69400(); return; case 0x69aec: r3 = 6 << 16; r3 = r3 + -2048; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; r18 = r0 + 10; r20 = r0 + 3; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69b08: r20 = r0 + 2; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69b14: r21 = r21 | 544; case 0x69b18: r3 = 6 << 16; r3 = r3 + -2048; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; r18 = r0 + 16; r20 = r0 + 3; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69b34: r2 = r21 & 16; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; } r2 = r21 & 4; r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x69fd8; run_69e00(); return; } r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r23&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69b68: r21 = r21 | 1; /* Next insn is delay slot */ pc=0x69340; run_69200(); return; case 0x69b74: r3 = 4 << 16; r3 = r3 + 12800; writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; r18 = r0 + r0; r20 = r0 + 3; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69b90: r21 = r21 | 4; /* Next insn is delay slot */ pc=0x69340; run_69200(); return; case 0x69b9c: r21 = r21 | 64; r20 = r0 + r0; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69bac: r5 = r16 + r0; r4 = r29 + 24; /* Next insn is delay slot */ r31=0x69bbc; pc=0x66800; run_66800(); return; case 0x69bbc: r16 = r2 + r0; r21 = r21 | 64; r20 = r0 + 1; /* Next insn is delay slot */ pc=0x693a4; run_69200(); return; case 0x69bd0: r21 = r21 | 512; /* Next insn is delay slot */ pc=0x69b18; continue; case 0x69bdc: r21 = r21 | 2; /* Next insn is delay slot */ pc=0x69340; run_69200(); return; case 0x69be8: r21 = r21 | 16; /* Next insn is delay slot */ pc=0x69340; run_69200(); return; case 0x69bf4: r2 = r22 << 1; r9 = r22 << 3; r2 = r2 + r9; case 0x69c00: pc=0x69c00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69c00() throws ExecutionException { /* 0x69c00 - 0x69e00 */ int addr, tmp; for(;;) { switch(pc) { case 0x69c00: r4 = r4 + -48; r22 = r4 + r2; /* Next insn is delay slot */ pc=0x69340; run_69200(); return; case 0x69c10: r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r20 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r21 = r20 + r0; case 0x69c34: r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r5 + r4; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r4 & 8; if(r4 != r0) { /* Next insn is delay slot */ pc=0x69cb0; continue; } r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r21 = r21 + 1; r4 = r4 + -1; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; r4 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r22 = r22 + -1; addr=r21+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r22 == r0) { /* Next insn is delay slot */ pc=0x69cb0; continue; } r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x69c34; continue; } r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69ca8; pc=0x68e00; run_68e00(); return; case 0x69ca8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x69c34; continue; } case 0x69cb0: r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; r6 = r21 - r20; r3 = r3 + 1; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; addr=r21+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r23 = r23 + r6; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69cd8: r4 = r29 + 320; r5 = r0 + r0; r6 = r0 + 8; r21 = r21 & 16; /* Next insn is delay slot */ r31=0x69cf0; pc=0x48fec; run_48e00(); return; case 0x69cf0: writePages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff] = r21; if(r21 != r0) { /* Next insn is delay slot */ pc=0x69f08; run_69e00(); return; } r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; case 0x69d20: r21 = r0 + r0; case 0x69d24: /* Next insn is delay slot */ r31=0x69d2c; pc=0x5a800; run_5a800(); return; case 0x69d2c: if(r2 == r21) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r3 = r29 + 24; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r6 = r3 + r21; addr=r6+256; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r4 = r4 + -1; r2 = r29 + 320; r20 = r21 + 1; r5 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; r6 = r29 + 280; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r17 + r0; r7 = r20 + r0; /* Next insn is delay slot */ r31=0x69d80; pc=0x66000; run_66000(); return; case 0x69d80: r3 = r0 + -1; if(r2 == r3) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } if(r2 != r0) { /* Next insn is delay slot */ pc=0x69f80; run_69e00(); return; } r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; if(r3 != r0) { /* Next insn is delay slot */ pc=0x69db0; continue; } r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; case 0x69db0: r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; r23 = r23 + r20; r22 = r22 + -1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x69f98; run_69e00(); return; } r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; r21 = r0 + r0; r3 = r3 + 4; writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; case 0x69dd4: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 <= 0) { /* Next insn is delay slot */ pc=0x69f14; run_69e00(); return; } case 0x69de4: if(r22 != r0) { /* Next insn is delay slot */ pc=0x69d24; continue; } case 0x69dec: r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x69834; run_69800(); return; } /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69e00: pc=0x69e00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_69e00() throws ExecutionException { /* 0x69e00 - 0x6a000 */ int addr, tmp; for(;;) { switch(pc) { case 0x69e00: case 0x69e04: r3 = readPages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff]; addr=r21+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = r17 + r0; r5 = r11 + r0; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; r6 = r0 + r0; r7 = r18 + r0; /* Next insn is delay slot */ pc=r3; r31=0x69e30; return; case 0x69e30: r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; r4 = r10 & 32; r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x69edc; continue; } case 0x69e48: r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; case 0x69e60: r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x698c4; run_69800(); return; case 0x69e78: r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r4 = r17 + r0; r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r6 = r0 + 1; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r30; r7 = r22 + r0; r21 = r3 + 4; /* Next insn is delay slot */ r31=0x69e9c; pc=0x69000; run_69000(); return; case 0x69e9c: if(r2 == r0) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; r23 = r2 + r23; r3 = r3 + 1; writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r21; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69ec0: r2 = r0 + -1409; r10 = r10 & r2; /* Next insn is delay slot */ pc=0x69868; run_69800(); return; case 0x69ed0: r21 = r29 + 328; /* Next insn is delay slot */ pc=0x697f4; run_69600(); return; case 0x69edc: r4 = r10 & 4; if(r4 == r0) { /* Next insn is delay slot */ pc=0x69e48; continue; } r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x69e60; continue; case 0x69f08: writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=0x69d20; run_69c00(); return; case 0x69f14: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69f24; pc=0x68e00; run_68e00(); return; case 0x69f24: if(r2 == r0) { /* Next insn is delay slot */ pc=0x69de4; run_69c00(); return; } if(r21 == r0) { /* Next insn is delay slot */ pc=0x69dec; run_69c00(); return; } /* Next insn is delay slot */ pc=0x69584; run_69400(); return; case 0x69f3c: addr=r21+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r7 = r21 + -1; r4 = r17 + r0; r6 = r30 + r0; writePages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff] = r7; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; /* Next insn is delay slot */ r31=0x69f64; pc=0x68c00; run_68c00(); return; case 0x69f64: r7 = readPages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff]; r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; r21 = r7 + r0; r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x698b0; run_69800(); return; case 0x69f80: r3 = r0 + -2; if(r2 != r3) { /* Next insn is delay slot */ pc=0x69db0; run_69c00(); return; } r21 = r20 + r0; /* Next insn is delay slot */ pc=0x69dd4; run_69c00(); return; case 0x69f98: r21 = r0 + r0; /* Next insn is delay slot */ pc=0x69dd4; run_69c00(); return; case 0x69fa4: if(r21 == r0) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } r23 = r23 + r21; /* Next insn is delay slot */ pc=0x69470; run_69400(); return; case 0x69fb8: r4 = r17 + r0; r5 = r30 + r0; /* Next insn is delay slot */ r31=0x69fc8; pc=0x68e00; run_68e00(); return; case 0x69fc8: if(r2 == r0) { /* Next insn is delay slot */ pc=0x69510; run_69400(); return; } /* Next insn is delay slot */ pc=0x69584; run_69400(); return; case 0x69fd8: r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r23; writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6927c; run_69200(); return; case 0x69ff0: writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x69ffc; pc=0x5a800; run_5a800(); return; case 0x69ffc: r6 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; case 0x6a000: pc=0x6a000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6a000() throws ExecutionException { /* 0x6a000 - 0x6a200 */ int addr, tmp; for(;;) { switch(pc) { case 0x6a000: if(r2 == r6) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; r3 = r29 + 24; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r10 = r6 + 1; r6 = r3 + r6; addr=r6+256; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; r4 = r4 + -1; r2 = r29 + 320; writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; r7 = r10 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; r4 = r17 + r0; r5 = r21 + r0; r6 = r29 + 280; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x6a05c; pc=0x66000; run_66000(); return; case 0x6a05c: r3 = r0 + -1; r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; if(r2 == r3) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a0c4; continue; } r3 = r0 + -2; r6 = r10 + r0; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6a154; continue; } case 0x6a084: r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; if(r2 > 0) { /* Next insn is delay slot */ pc=0x697f8; run_69600(); return; } r4 = r17 + r0; r5 = r30 + r0; writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x6a0a8; pc=0x68e00; run_68e00(); return; case 0x6a0a8: r6 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x697f8; run_69600(); return; } if(r6 != r0) { /* Next insn is delay slot */ pc=0x69584; run_69400(); return; } /* Next insn is delay slot */ pc=0x69828; run_69800(); return; case 0x6a0c4: writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r0; r4 = r0 + r0; case 0x6a0cc: writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x6a0d8; pc=0x65e00; run_65e00(); return; case 0x6a0d8: r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a128; continue; } if(r10 == r0) { /* Next insn is delay slot */ pc=0x69828; run_69800(); return; } case 0x6a0ec: r10 = r10 + -1; r3 = r29 + 280; r2 = r3 + r10; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r5 = tmp; r4 = r17 + r0; r6 = r30 + r0; writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; /* Next insn is delay slot */ r31=0x6a110; pc=0x68c00; run_68c00(); return; case 0x6a110: r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; if(r10 != r0) { /* Next insn is delay slot */ pc=0x6a0ec; continue; } /* Next insn is delay slot */ pc=0x69828; run_69800(); return; case 0x6a128: r23 = r23 + r10; r22 = r22 + -1; if(r20 != r0) { /* Next insn is delay slot */ pc=0x6a148; continue; } r21 = r21 + 4; r6 = r0 + r0; /* Next insn is delay slot */ pc=0x6a084; continue; case 0x6a148: r6 = r0 + r0; /* Next insn is delay slot */ pc=0x6a084; continue; case 0x6a154: r4 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x6a0cc; continue; case 0x6a200: pc=0x6a200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6a200() throws ExecutionException { /* 0x6a200 - 0x6a400 */ int addr, tmp; for(;;) { switch(pc) { case 0x6a200: r29 = r29 + -40; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r16 = r5 + r0; r5 = readPages[(r5+48)>>>12][((r5+48)>>>2)&0x3ff]; r2 = r16 + 64; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; if(r5 == r2) { /* Next insn is delay slot */ pc=0x6a2a0; continue; } r18 = readPages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff]; r19 = r18 << 1; r6 = r19 + r0; /* Next insn is delay slot */ r31=0x6a248; pc=0x40800; run_40800(); return; case 0x6a248: r17 = r2 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a30c; continue; } r20 = r2 + r18; r4 = r20 + r0; r5 = r2 + r0; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x6a26c; pc=0x48fdc; run_48e00(); return; case 0x6a26c: writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r20; writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r17; writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r19; r2 = r0 + r0; case 0x6a27c: r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x6a2a0: r5 = r0 + 1024; /* Next insn is delay slot */ r31=0x6a2ac; pc=0x3ec00; run_3ec00(); return; case 0x6a2ac: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a30c; continue; } r3 = r0 + 1024; writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r3; addr=r16+66; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r2; addr=r2+1023; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r16+65; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r2 + 1021; addr=r2+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r16+64; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r2 = r0 + r0; r29 = r29 + 40; /* Next insn is delay slot */ pc=r31; return; case 0x6a30c: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x6a27c; continue; case 0x6a400: pc=0x6a400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6a400() throws ExecutionException { /* 0x6a400 - 0x6a600 */ int addr, tmp; for(;;) { switch(pc) { case 0x6a400: r29 = r29 + -32; r2 = r0 + -1; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; r18 = r5 + r0; if(r5 == r2) { /* Next insn is delay slot */ pc=0x6a52c; continue; } r17 = r4 + r0; r16 = r6 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6a444; continue; } r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a538; continue; } case 0x6a444: addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 8192; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6a46c; continue; } r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; r3 = r0 + -8193; r3 = r4 & r3; r2 = r2 | 8192; writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r3; case 0x6a46c: r3 = r0 + -33; r2 = r2 & r3; r3 = r2 & 65535; r4 = r3 & 4; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6a4a8; continue; } r4 = r3 & 16; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6a52c; continue; } r3 = r3 & 8; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6a548; continue; } r2 = r2 | 4; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; case 0x6a4a8: r2 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; r18 = r18 & 255; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a588; continue; } r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = readPages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff]; r2 = r3 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a514; continue; } case 0x6a4d0: r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; r3 = r2 + -1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r2 = r2 + 1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; r2 = r18 + r0; case 0x6a4f8: r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x6a514: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x6a524; pc=0x6a200; run_6a200(); return; case 0x6a524: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a4d0; continue; } case 0x6a52c: r2 = r0 + -1; /* Next insn is delay slot */ pc=0x6a4f8; continue; case 0x6a538: /* Next insn is delay slot */ r31=0x6a540; pc=0x3a600; run_3a600(); return; case 0x6a540: /* Next insn is delay slot */ pc=0x6a444; continue; case 0x6a548: r4 = r17 + r0; r5 = r16 + r0; /* Next insn is delay slot */ r31=0x6a558; pc=0x39800; run_39800(); return; case 0x6a558: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6a52c; continue; } addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; r2 = tmp; writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; r2 = r2 & 65527; r2 = r2 << 16; r2 = r2 >> 16; r2 = r2 | 4; writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; addr=r16+12; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; /* Next insn is delay slot */ pc=0x6a4a8; continue; case 0x6a588: r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a5b4; continue; } r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6a5b4; continue; } addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r18) { /* Next insn is delay slot */ pc=0x6a604; run_6a600(); return; } case 0x6a5b4: r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; addr=r16+66; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; writePages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff] = r2; r2 = r16 + 64; writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r2; r2 = r0 + 3; writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r2; r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r2 = r16 + 66; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; writePages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff] = r3; r2 = r18 + r0; r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r29 = r29 + 32; /* Next insn is delay slot */ pc=r31; return; case 0x6a600: pc=0x6a600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6a600() throws ExecutionException { /* 0x6a600 - 0x6a800 */ int addr, tmp; for(;;) { switch(pc) { case 0x6a600: case 0x6a604: r3 = r3 + -1; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; r3 = r3 + 1; writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; /* Next insn is delay slot */ pc=0x6a4f8; run_6a400(); return; case 0x6a800: pc=0x6a800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6a800() throws ExecutionException { /* 0x6a800 - 0x6aa00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6a800: r2 = r4 + r0; r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r6 = r5 + r0; r5 = r2 + r0; /* Next insn is delay slot */ pc=0x6a400; run_6a400(); return; case 0x6aa00: pc=0x6aa00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6aa00() throws ExecutionException { /* 0x6aa00 - 0x6ac00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6aa00: r29 = r29 + -64; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; r16 = r4 + r0; r17 = r7 + r0; r18 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6aa8c; continue; } writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x6aa38; pc=0x5a600; run_5a600(); return; case 0x6aa38: r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r6 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; r4 = r16 + r0; r7 = r2 + r0; /* Next insn is delay slot */ pc=r18; r31=0x6aa54; return; case 0x6aa54: r3 = r0 + -1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6aa70; continue; } r2 = r0 + 138; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; case 0x6aa70: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x6aa8c: /* Next insn is delay slot */ r31=0x6aa94; pc=0x5a600; run_5a600(); return; case 0x6aa94: r7 = r2 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; r4 = r16 + r0; r5 = r29 + 24; r6 = r0 + r0; /* Next insn is delay slot */ pc=r18; r31=0x6aab0; return; case 0x6aab0: /* Next insn is delay slot */ pc=0x6aa54; continue; case 0x6ac00: pc=0x6ac00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6ac00() throws ExecutionException { /* 0x6ac00 - 0x6ae00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6ac00: r29 = r29 + -64; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r20; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r19; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; r16 = r4 + r0; r17 = r6 + r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6aca0; continue; } r20 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r18 = r5 + r0; r19 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x6ac40; pc=0x5a600; run_5a600(); return; case 0x6ac40: r7 = r2 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; r4 = r20 + r0; r5 = r16 + r0; r6 = r18 + r0; /* Next insn is delay slot */ pc=r19; r31=0x6ac5c; return; case 0x6ac5c: r3 = r0 + -1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6ac7c; continue; } r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r3 = r0 + 138; writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r2 = r0 + -1; case 0x6ac7c: r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r29 = r29 + 64; /* Next insn is delay slot */ pc=r31; return; case 0x6aca0: r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; r16 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x6acb0; pc=0x5a600; run_5a600(); return; case 0x6acb0: r7 = r2 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; r4 = r18 + r0; r5 = r29 + 24; r6 = r0 + r0; /* Next insn is delay slot */ pc=r16; r31=0x6accc; return; case 0x6accc: /* Next insn is delay slot */ pc=0x6ac5c; continue; case 0x6ae00: pc=0x6ae00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6ae00() throws ExecutionException { /* 0x6ae00 - 0x6b000 */ int addr, tmp; for(;;) { switch(pc) { case 0x6ae00: if(r5 == r0) { /* Next insn is delay slot */ pc=0x6ae24; continue; } r2 = (r6&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6ae30; continue; } addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; r2 = r0 + 1; /* Next insn is delay slot */ pc=r31; return; case 0x6ae24: r2 = r0 + r0; /* Next insn is delay slot */ pc=r31; return; case 0x6ae30: r2 = r0 + 138; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; r2 = r0 + -1; /* Next insn is delay slot */ pc=r31; return; case 0x6b000: pc=0x6b000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6b000() throws ExecutionException { /* 0x6b000 - 0x6b200 */ int addr, tmp; for(;;) { switch(pc) { case 0x6b000: r29 = r29 + -56; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; r17 = r7 + r0; r16 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x6b02c; pc=0x5a600; run_5a600(); return; case 0x6b02c: r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r6 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; r7 = r2 + r0; /* Next insn is delay slot */ pc=r16; r31=0x6b048; return; case 0x6b048: r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r29 = r29 + 56; /* Next insn is delay slot */ pc=r31; return; case 0x6b200: pc=0x6b200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6b200() throws ExecutionException { /* 0x6b200 - 0x6b400 */ int addr, tmp; for(;;) { switch(pc) { case 0x6b200: r7 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; r2 = r5 >> 5; r6 = r2 < r7 ? 1 : 0; r3 = r4 + 20; if(r6 == r0) { /* Next insn is delay slot */ pc=0x6b2bc; continue; } r7 = r7 << 2; r2 = r2 << 2; r5 = r5 & 31; r7 = r3 + r7; r11 = r3 + r2; if(r5 == r0) { /* Next insn is delay slot */ pc=0x6b2cc; continue; } r2 = r11 + 4; r8 = readPages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff]; r10 = r0 + 32; r6 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; r10 = r10 - r5; r8 = r8 >>> (r5&0x1f); if(r6 == r0) { /* Next insn is delay slot */ pc=0x6b324; continue; } r6 = r3 + r0; case 0x6b258: r9 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r6 = r6 + 4; r9 = r9 << (r10&0x1f); r8 = r8 | r9; r2 = r2 + 4; writePages[(r6+-4)>>>12][((r6+-4)>>>2)&0x3ff] = r8; r8 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; r9 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; r8 = r8 >>> (r5&0x1f); if(r9 != r0) { /* Next insn is delay slot */ pc=0x6b258; continue; } r2 = r7 - r11; r2 = r2 + -5; r2 = r2 >>> 2; r2 = r2 + 1; r2 = r2 << 2; r2 = r3 + r2; case 0x6b29c: writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r8; if(r8 == r0) { /* Next insn is delay slot */ pc=0x6b2ac; continue; } r2 = r2 + 4; case 0x6b2ac: r3 = r2 - r3; r3 = r3 >> 2; /* Next insn is delay slot */ pc=0x6b310; continue; case 0x6b2bc: writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r0; case 0x6b2c0: writePages[(r4+20)>>>12][((r4+20)>>>2)&0x3ff] = r0; /* Next insn is delay slot */ pc=r31; return; case 0x6b2cc: r2 = ((r11 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6b2bc; continue; } r2 = r11 + r0; case 0x6b2dc: r2 = r2 + 4; r5 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; r3 = r3 + 4; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; r5 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x6b2dc; continue; } r3 = ~(r0 | r11); r3 = r3 + r7; r3 = r3 >>> 2; r3 = r3 + 1; r3 = r3 << 2; r3 = r3 >> 2; case 0x6b310: writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r3; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6b2c0; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x6b324: r2 = r3 + r0; /* Next insn is delay slot */ pc=0x6b29c; continue; case 0x6b400: pc=0x6b400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6b400() throws ExecutionException { /* 0x6b400 - 0x6b600 */ int addr, tmp; for(;;) { switch(pc) { case 0x6b400: r5 = 7 << 16; r2 = 7 << 16; r5 = r5 + 5425; r4 = r0 + 16; r3 = r0 + 48; r2 = r2 + 30712; case 0x6b418: r3 = r2 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r4 = r4 + 1; r4 = r4 & 255; r5 = r5 + 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6b418; continue; } r5 = 7 << 16; r5 = r5 + 5417; r4 = r0 + 26; r3 = r0 + 97; case 0x6b448: r3 = r2 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r4 = r4 + 1; r4 = r4 & 255; r5 = r5 + 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6b448; continue; } r5 = 7 << 16; r5 = r5 + 5409; r4 = r0 + 26; r3 = r0 + 65; case 0x6b478: r3 = r2 + r3; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; addr=r5+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r4 = r4 + 1; r4 = r4 & 255; r5 = r5 + 1; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6b478; continue; } /* Next insn is delay slot */ pc=r31; return; case 0x6b600: pc=0x6b600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6b600() throws ExecutionException { /* 0x6b600 - 0x6b800 */ int addr, tmp; for(;;) { switch(pc) { case 0x6b600: r29 = r29 + -88; writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r21; writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r20; writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r19; writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r4; r19 = r5 + r0; writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r6; writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r7; writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r30; writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r23; writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r22; writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; /* Next insn is delay slot */ r31=0x6b644; pc=0x5ae00; run_5ae00(); return; case 0x6b644: r17 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r17 + r0; /* Next insn is delay slot */ r31=0x6b658; pc=0x10268; run_10200(); return; case 0x6b658: r9 = 7 << 16; r18 = r2 + r0; r20 = r9 + 30712; r2 = r17 + r2; addr=r2+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r21 = tmp; addr=r20+48; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bb30; run_6ba00(); return; } case 0x6b67c: r3 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; r2 = r0 + 48; addr=r3+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r23 = r3 + 2; if(r8 != r2) { /* Next insn is delay slot */ pc=0x6be30; run_6be00(); return; } r3 = r3 + 3; r22 = r0 + r0; case 0x6b69c: r23 = r3 + r0; r3 = r3 + 1; addr=r3+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r8 = tmp; r22 = r22 + 1; if(r8 == r2) { /* Next insn is delay slot */ pc=0x6b69c; continue; } case 0x6b6b4: r8 = r20 + r8; addr=r8+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6baac; run_6ba00(); return; } addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r7 = r0 + r0; r2 = r2 + r20; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r30 = r0 + r0; case 0x6b6dc: r16 = r23 + r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6b708; continue; } case 0x6b6e8: r16 = r16 + 1; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r2 = r20 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6b6e8; continue; } case 0x6b708: r4 = r16 + r0; r5 = r17 + r0; r6 = r18 + r0; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r7; /* Next insn is delay slot */ r31=0x6b720; pc=0x43000; run_43000(); return; case 0x6b720: r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6b7a8; continue; } if(r30 == r0) { /* Next insn is delay slot */ pc=0x6be6c; run_6be00(); return; } addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; case 0x6b738: r30 = r30 - r16; r30 = r30 << 2; case 0x6b740: r3 = r0 + 80; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6b7c0; continue; } case 0x6b74c: r3 = r0 + 112; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6b7c0; continue; } case 0x6b758: r2 = r16 + r0; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; if(r7 == r0) { /* Next insn is delay slot */ pc=0x6b868; run_6b800(); return; } case 0x6b768: if(r22 != r0) { /* Next insn is delay slot */ pc=0x6bd74; run_6bc00(); return; } r2 = r0 + 6; case 0x6b774: r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; r30 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; r23 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; r22 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; r21 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; r20 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; r19 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; r29 = r29 + 88; /* Next insn is delay slot */ pc=r31; return; case 0x6b7a8: addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r30 != r0) { /* Next insn is delay slot */ pc=0x6b738; continue; } r3 = r0 + 80; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6b74c; continue; } case 0x6b7c0: addr=r16+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r0 + 43; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6bd80; run_6bc00(); return; } r3 = r0 + 45; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6bcfc; run_6bc00(); return; } r4 = r16 + 1; r6 = r0 + r0; case 0x6b7e4: r2 = r20 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; r2 = r3 + -1; r2 = (r2&0xffffffffL) < (25&0xffffffffL) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6b758; continue; } case 0x6b800: pc=0x6b800; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6b800() throws ExecutionException { /* 0x6b800 - 0x6ba00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6b800: r2 = r4 + 1; r3 = r3 + -16; addr=r4+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; /* Next insn is delay slot */ pc=0x6b830; continue; case 0x6b814: r5 = r3 << 1; r3 = r3 << 3; r3 = r5 + r3; r2 = r2 + 1; r3 = r3 + r4; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r3 = r3 + -16; case 0x6b830: r4 = r4 + r20; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r5 = r4 + -1; r5 = (r5&0xffffffffL) < (25&0xffffffffL) ? 1 : 0; if(r5 != r0) { /* Next insn is delay slot */ pc=0x6b814; continue; } if(r6 == r0) { /* Next insn is delay slot */ pc=0x6b858; continue; } r3 = r0 - r3; case 0x6b858: r30 = r30 + r3; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; if(r7 != r0) { /* Next insn is delay slot */ pc=0x6b768; run_6b600(); return; } case 0x6b868: r2 = r16 - r23; r2 = r2 + -1; r3 = r2 < 8 ? 1 : 0; r5 = r0 + r0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6b894; continue; } case 0x6b880: r2 = r2 >> 1; r3 = r2 < 8 ? 1 : 0; r5 = r5 + 1; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6b880; continue; } case 0x6b894: r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x6b8a0; pc=0x5b800; run_5b800(); return; case 0x6b8a0: r19 = r2 + 20; r22 = r2 + r0; r2 = ((r23 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; r11 = r19 + r0; r8 = r0 + r0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6b9a0; continue; } addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r14 = r0 + 1; r3 = r0 + r0; r14 = r14 - r18; r12 = r0 + 32; r7 = r16 + -1; if(r6 == r21) { /* Next insn is delay slot */ pc=0x6b92c; continue; } case 0x6b8dc: if(r3 == r12) { /* Next insn is delay slot */ pc=0x6ba90; run_6ba00(); return; } r2 = r3 + r0; r3 = r3 + 4; case 0x6b8ec: addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r4 = tmp; r4 = r20 + r4; addr=r4+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r6 = r6 & 15; r6 = r6 << (r2&0x1f); r8 = r8 | r6; r6 = ((r23 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r6 == r0) { /* Next insn is delay slot */ pc=0x6b9a0; continue; } case 0x6b918: r16 = r7 + r0; addr=r16+-1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r6 = tmp; r7 = r16 + -1; if(r6 != r21) { /* Next insn is delay slot */ pc=0x6b8dc; continue; } case 0x6b92c: r15 = r7 + r14; r2 = ((r15 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6b8dc; continue; } r4 = r15 + r0; r5 = r17 + r0; r6 = r18 + r0; writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r7; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r8; writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r11; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r12; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r14; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r15; /* Next insn is delay slot */ r31=0x6b96c; pc=0x43000; run_43000(); return; case 0x6b96c: r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r8 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r11 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; r12 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r14 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r15 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6b8dc; continue; } r7 = r15 + r0; r6 = ((r23 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; if(r6 != r0) { /* Next insn is delay slot */ pc=0x6b918; continue; } case 0x6b9a0: r2 = r11 + 4; r2 = r2 - r19; r2 = r2 >> 2; writePages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff] = r8; r4 = r8 + r0; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; r16 = r2 << 5; /* Next insn is delay slot */ r31=0x6b9c4; pc=0x5c000; run_5c000(); return; case 0x6b9c4: r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r2 = r16 - r2; r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r3 = r16 < r2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6bd8c; run_6bc00(); return; } r3 = r2 < r16 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6be00; run_6be00(); return; } r17 = r0 + r0; case 0x6b9f0: r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; case 0x6ba00: pc=0x6ba00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6ba00() throws ExecutionException { /* 0x6ba00 - 0x6bc00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6ba00: r3 = r3 < r30 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6bcd4; run_6bc00(); return; } r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r3 = r30 < r2 ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6bd28; run_6bc00(); return; } r30 = r2 - r30; r3 = r30 < r16 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6bb40; continue; } r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r3 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; r4 = r0 + 2; if(r3 == r4) { /* Next insn is delay slot */ pc=0x6bf1c; run_6be00(); return; } r4 = r0 + 3; if(r3 == r4) { /* Next insn is delay slot */ pc=0x6becc; run_6be00(); return; } r4 = r0 + 1; if(r3 == r4) { /* Next insn is delay slot */ pc=0x6bf34; run_6be00(); return; } case 0x6ba68: r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x6ba78; pc=0x5ba00; run_5ba00(); return; case 0x6ba78: r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r2 = r0 + 80; /* Next insn is delay slot */ pc=0x6b774; run_6b600(); return; case 0x6ba90: writePages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff] = r8; r3 = r0 + 4; r11 = r11 + 4; r8 = r0 + r0; r2 = r0 + r0; /* Next insn is delay slot */ pc=0x6b8ec; run_6b800(); return; case 0x6baac: r4 = r23 + r0; r5 = r17 + r0; r6 = r18 + r0; /* Next insn is delay slot */ r31=0x6bac0; pc=0x43000; run_43000(); return; case 0x6bac0: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6bd10; run_6bc00(); return; } r16 = r23 + r18; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r2 + r20; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6be3c; run_6be00(); return; } r4 = r0 + 48; r23 = r16 + r0; if(r2 != r4) { /* Next insn is delay slot */ pc=0x6bb1c; continue; } r3 = r0 + 48; case 0x6bafc: r23 = r23 + 1; addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6bafc; continue; } r2 = r20 + r2; addr=r2+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; case 0x6bb1c: r7 = (r3&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; r30 = r16 + r0; r22 = r0 + 1; /* Next insn is delay slot */ pc=0x6b6dc; run_6b600(); return; case 0x6bb30: /* Next insn is delay slot */ r31=0x6bb38; pc=0x6b400; run_6b400(); return; case 0x6bb38: /* Next insn is delay slot */ pc=0x6b67c; run_6b600(); return; case 0x6bb40: r18 = r30 + -1; if(r17 != r0) { /* Next insn is delay slot */ pc=0x6bec0; run_6be00(); return; } if(r18 <= 0) { /* Next insn is delay slot */ pc=0x6bb68; continue; } r4 = r22 + r0; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x6bb64; pc=0x5de00; run_5de00(); return; case 0x6bb64: r17 = r2 + r0; case 0x6bb68: r2 = r18 >> 5; r2 = r2 << 2; r2 = r19 + r2; r3 = r0 + 1; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r18 = r3 << (r18&0x1f); r2 = r18 & r2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bb90; continue; } r17 = r17 | 2; case 0x6bb90: r5 = r30 + r0; r4 = r22 + r0; /* Next insn is delay slot */ r31=0x6bba0; pc=0x6b200; run_6b200(); return; case 0x6bba0: r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r16 = r16 - r30; r30 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; r18 = r0 + 2; case 0x6bbb0: if(r17 == r0) { /* Next insn is delay slot */ pc=0x6bd58; run_6bc00(); return; } r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; r3 = r0 + 2; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6bd34; run_6bc00(); return; } r3 = r0 + 3; if(r2 == r3) { /* Next insn is delay slot */ pc=0x6bd44; run_6bc00(); return; } r3 = r0 + 1; if(r2 != r3) { /* Next insn is delay slot */ pc=0x6bd54; run_6bc00(); return; } r2 = r17 & 2; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bd54; run_6bc00(); return; } r2 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; r2 = r17 | r2; case 0x6bc00: pc=0x6bc00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6bc00() throws ExecutionException { /* 0x6bc00 - 0x6be00 */ int addr, tmp; for(;;) { switch(pc) { case 0x6bc00: r2 = r2 & 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bd54; continue; } case 0x6bc0c: r17 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; r3 = r19 + r0; r23 = r17 << 2; r5 = r19 + r23; r2 = r0 + -1; /* Next insn is delay slot */ pc=0x6bc3c; continue; case 0x6bc28: r3 = r3 + 4; r4 = ((r3 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r0; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6bf74; run_6be00(); return; } case 0x6bc3c: r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; if(r4 == r2) { /* Next insn is delay slot */ pc=0x6bc28; continue; } r4 = r4 + 1; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; r2 = r19 + r0; case 0x6bc58: r3 = r0 + 2; if(r18 == r3) { /* Next insn is delay slot */ pc=0x6bfb4; run_6be00(); return; } r3 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; r17 = r17 < r3 ? 1 : 0; if(r17 != r0) { /* Next insn is delay slot */ pc=0x6bca8; continue; } r16 = r16 & 31; if(r16 == r0) { /* Next insn is delay slot */ pc=0x6bf04; run_6be00(); return; } r2 = r2 + r23; r4 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; /* Next insn is delay slot */ r31=0x6bc94; pc=0x5c000; run_5c000(); return; case 0x6bc94: r3 = r0 + 32; r16 = r3 - r16; r2 = r2 < r16 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bf04; run_6be00(); return; } case 0x6bca8: r4 = r22 + r0; r5 = r0 + 1; /* Next insn is delay slot */ r31=0x6bcb8; pc=0x6b200; run_6b200(); return; case 0x6bcb8: r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r30 = r30 + 1; r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; r2 = r2 < r30 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bf04; run_6be00(); return; } case 0x6bcd4: r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x6bce4; pc=0x5ba00; run_5ba00(); return; case 0x6bce4: r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; r2 = r0 + 163; /* Next insn is delay slot */ pc=0x6b774; run_6b600(); return; case 0x6bcfc: r6 = r0 + 1; case 0x6bd00: r4 = r16 + 2; addr=r16+2; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; /* Next insn is delay slot */ pc=0x6b7e4; run_6b600(); return; case 0x6bd10: addr=r23+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r16 = r23 + r0; r30 = r0 + r0; r7 = r0 + 1; /* Next insn is delay slot */ pc=0x6b740; run_6b600(); return; case 0x6bd28: r18 = r0 + 1; /* Next insn is delay slot */ pc=0x6bbb0; run_6ba00(); return; case 0x6bd34: r4 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; r2 = r0 + 1; r4 = r2 - r4; writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r4; case 0x6bd44: r2 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6bc0c; continue; } case 0x6bd54: r18 = r18 | 16; case 0x6bd58: r4 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; r3 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r22; r2 = r18 + r0; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r30; /* Next insn is delay slot */ pc=0x6b774; run_6b600(); return; case 0x6bd74: r2 = r0 + r0; /* Next insn is delay slot */ pc=0x6b774; run_6b600(); return; case 0x6bd80: r6 = r0 + r0; /* Next insn is delay slot */ pc=0x6bd00; continue; case 0x6bd8c: r18 = r2 - r16; r4 = r22 + r0; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x6bda0; pc=0x5de00; run_5de00(); return; case 0x6bda0: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6be4c; run_6be00(); return; } r2 = r18 + -1; r3 = r2 >> 5; r3 = r3 << 2; r3 = r19 + r3; r4 = r0 + 1; r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; r4 = r4 << (r2&0x1f); r3 = r4 & r3; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6beb4; run_6be00(); return; } r2 = r2 < 2 ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6bf10; run_6be00(); return; } r4 = r22 + r0; r5 = r18 + -2; /* Next insn is delay slot */ r31=0x6bdec; pc=0x5de00; run_5de00(); return; case 0x6bdec: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bf10; run_6be00(); return; } r17 = r0 + 3; /* Next insn is delay slot */ pc=0x6be50; run_6be00(); return; case 0x6be00: pc=0x6be00; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6be00() throws ExecutionException { /* 0x6be00 - 0x6c000 */ int addr, tmp; for(;;) { switch(pc) { case 0x6be00: r17 = r16 - r2; r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r5 = r22 + r0; r6 = r17 + r0; /* Next insn is delay slot */ r31=0x6be18; pc=0x5cc00; run_5cc00(); return; case 0x6be18: r30 = r30 - r17; r22 = r2 + r0; r19 = r2 + 20; r17 = r0 + r0; /* Next insn is delay slot */ pc=0x6b9f0; run_6b800(); return; case 0x6be30: r22 = r0 + r0; /* Next insn is delay slot */ pc=0x6b6b4; run_6b600(); return; case 0x6be3c: r30 = r0 + r0; r7 = r0 + 1; /* Next insn is delay slot */ pc=0x6b740; run_6b600(); return; case 0x6be4c: r17 = r0 + r0; case 0x6be50: r4 = r22 + r0; r5 = r18 + r0; /* Next insn is delay slot */ r31=0x6be60; pc=0x6b200; run_6b200(); return; case 0x6be60: r30 = r30 + r18; /* Next insn is delay slot */ pc=0x6b9f0; run_6b800(); return; case 0x6be6c: r30 = r16 + r18; addr=r30+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r16 = r30 + r0; r3 = r20 + r2; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6b738; run_6b600(); return; } case 0x6be8c: r16 = r16 + 1; addr=r16+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r3 = r20 + r2; addr=r3+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r3 = tmp; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6be8c; continue; } /* Next insn is delay slot */ pc=0x6b738; run_6b600(); return; case 0x6beb4: r17 = r0 + 1; /* Next insn is delay slot */ pc=0x6be50; continue; case 0x6bec0: r17 = r0 + 1; /* Next insn is delay slot */ pc=0x6bb68; run_6ba00(); return; case 0x6becc: r3 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6ba68; run_6ba00(); return; } case 0x6bedc: r3 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; r4 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; r2 = r0 + 1; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r22; r2 = r0 + 98; /* Next insn is delay slot */ pc=0x6b774; run_6b600(); return; case 0x6bf04: r18 = r0 + 33; /* Next insn is delay slot */ pc=0x6bd58; run_6bc00(); return; case 0x6bf10: r17 = r0 + 2; /* Next insn is delay slot */ pc=0x6be50; continue; case 0x6bf1c: r4 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; if(r4 == r0) { /* Next insn is delay slot */ pc=0x6bedc; continue; } /* Next insn is delay slot */ pc=0x6ba68; run_6ba00(); return; case 0x6bf34: if(r30 != r16) { /* Next insn is delay slot */ pc=0x6ba68; run_6ba00(); return; } r3 = r16 < 2 ? 1 : 0; if(r3 != r0) { /* Next insn is delay slot */ pc=0x6bedc; continue; } r4 = r22 + r0; r5 = r16 + -1; /* Next insn is delay slot */ r31=0x6bf58; pc=0x5de00; run_5de00(); return; case 0x6bf58: if(r2 == r0) { /* Next insn is delay slot */ pc=0x6ba68; run_6ba00(); return; } r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x6bedc; continue; case 0x6bf74: r2 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; r2 = r17 < r2 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6bfdc; continue; } r2 = r19 + r0; r3 = r17 + r0; case 0x6bf90: r4 = r3 + 1; r3 = r3 + 4; r3 = r3 << 2; writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r4; r3 = r22 + r3; r4 = r0 + 1; writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; /* Next insn is delay slot */ pc=0x6bc58; run_6bc00(); return; case 0x6bfb4: r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; r3 = r3 + -1; if(r3 == r16) { /* Next insn is delay slot */ pc=0x6c034; run_6c000(); return; } r18 = r0 + 34; /* Next insn is delay slot */ pc=0x6bd58; run_6bc00(); return; case 0x6bfdc: r5 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r5 = r5 + 1; /* Next insn is delay slot */ r31=0x6bff0; pc=0x5b800; run_5b800(); return; case 0x6bff0: r6 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; r5 = r22 + 12; r6 = r6 + 2; r4 = r2 + 12; case 0x6c000: pc=0x6c000; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6c000() throws ExecutionException { /* 0x6c000 - 0x6c200 */ int addr, tmp; for(;;) { switch(pc) { case 0x6c000: r6 = r6 << 2; r19 = r2 + r0; /* Next insn is delay slot */ r31=0x6c010; pc=0x48fdc; run_48e00(); return; case 0x6c010: r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; r5 = r22 + r0; /* Next insn is delay slot */ r31=0x6c020; pc=0x5ba00; run_5ba00(); return; case 0x6c020: r22 = r19 + r0; r3 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; r2 = r19 + 20; /* Next insn is delay slot */ pc=0x6bf90; run_6be00(); return; case 0x6c034: r3 = r16 >> 5; r3 = r3 << 2; r2 = r2 + r3; r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = r0 + 1; r16 = r3 << (r16&0x1f); r18 = r16 & r2; r18 = ((r0 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; r2 = r0 + 34; r18 = r2 - r18; /* Next insn is delay slot */ pc=0x6bd58; run_6bc00(); return; case 0x6c200: pc=0x6c200; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6c200() throws ExecutionException { /* 0x6c200 - 0x6c400 */ int addr, tmp; for(;;) { switch(pc) { case 0x6c200: r29 = r29 + -48; writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; r16 = 7 << 16; r16 = r16 + 30712; addr=r16+48; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r18; writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r17; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c4d8; run_6c400(); return; } case 0x6c228: r24 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r15 = r24 >> 5; r15 = r15 << 2; r24 = r24 & 31; r15 = r6 + r15; if(r24 == r0) { /* Next insn is delay slot */ pc=0x6c24c; continue; } r15 = r15 + 4; case 0x6c24c: r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; writePages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff] = r0; addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r10 = r15 + -4; r12 = r10 + r0; r5 = r10 + r0; r8 = r0 + r0; r14 = r0 + r0; r11 = r0 + r0; r17 = r0 + 8; r25 = r0 + 32; r9 = r3 + 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c334; continue; } case 0x6c284: r7 = r16 + r2; addr=r7+0; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r7 = tmp; if(r7 != r0) { /* Next insn is delay slot */ pc=0x6c430; run_6c400(); return; } r7 = (r2&0xffffffffL) < (33&0xffffffffL) ? 1 : 0; if(r7 == r0) { /* Next insn is delay slot */ pc=0x6c4ac; run_6c400(); return; } r2 = r14 < r11 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c320; continue; } r2 = ((r5 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c310; continue; } r2 = r8 < 8 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c310; continue; } r8 = r17 - r8; r8 = r8 << 2; r18 = r25 - r8; r7 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r2 = r5 + r0; /* Next insn is delay slot */ pc=0x6c2e8; continue; case 0x6c2e4: r7 = r3 + r0; case 0x6c2e8: r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 + 4; r13 = r3 << (r18&0x1f); r7 = r7 | r13; r3 = r3 >>> (r8&0x1f); writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r7; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r7 = ((r2 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; if(r7 != r0) { /* Next insn is delay slot */ pc=0x6c2e4; continue; } case 0x6c310: r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6c48c; run_6c400(); return; } r8 = r0 + 8; case 0x6c320: r3 = r9 + r0; case 0x6c324: addr=r3+1; tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; r2 = tmp; r9 = r3 + 1; if(r2 != r0) { /* Next insn is delay slot */ pc=0x6c284; continue; } case 0x6c334: if(r11 == r0) { /* Next insn is delay slot */ pc=0x6c4b8; run_6c400(); return; } case 0x6c33c: r2 = ((r5 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c3a4; continue; } r2 = r8 < 8 ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c3a4; continue; } r2 = r0 + 8; r8 = r2 - r8; r8 = r8 << 2; r9 = r0 + 32; r9 = r9 - r8; r7 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r2 = r5 + r0; /* Next insn is delay slot */ pc=0x6c37c; continue; case 0x6c378: r7 = r3 + r0; case 0x6c37c: r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; r2 = r2 + 4; r4 = r3 << (r9&0x1f); r4 = r7 | r4; r3 = r3 >>> (r8&0x1f); writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r4; writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; r4 = ((r2 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; if(r4 != r0) { /* Next insn is delay slot */ pc=0x6c378; continue; } case 0x6c3a4: r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c500; run_6c400(); return; } r2 = r6 + r0; case 0x6c3b4: r5 = r5 + 4; r3 = readPages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff]; r2 = r2 + 4; writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r3; r3 = ((r10 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6c3b4; continue; } case 0x6c3d0: r2 = r2 + 4; r3 = ((r10 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r0; if(r3 == r0) { /* Next insn is delay slot */ pc=0x6c3d0; continue; } case 0x6c3e4: r2 = readPages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff]; case 0x6c3ec: if(r2 != r0) { /* Next insn is delay slot */ pc=0x6c410; run_6c400(); return; } case 0x6c3f4: if(r6 == r10) { /* Next insn is delay slot */ pc=0x6c528; run_6c400(); return; } r10 = r10 + -4; case 0x6c400: pc=0x6c400; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private final void run_6c400() throws ExecutionException { /* 0x6c400 - 0x6c600 */ int addr, tmp; for(;;) { switch(pc) { case 0x6c400: r2 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c3f4; run_6c200(); return; } case 0x6c410: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 5; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x6c430: r8 = r8 + 1; r2 = r8 < 9 ? 1 : 0; r11 = r11 + 1; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c468; continue; } r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; r2 = r2 << 4; case 0x6c450: r7 = r7 & 15; r7 = r2 | r7; writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r7; r3 = r9 + r0; /* Next insn is delay slot */ pc=0x6c324; run_6c200(); return; case 0x6c468: r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; if(r2 == r0) { /* Next insn is delay slot */ pc=0x6c320; run_6c200(); return; } writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; r2 = r0 + r0; r5 = r5 + -4; r8 = r0 + 1; /* Next insn is delay slot */ pc=0x6c450; continue; case 0x6c48c: r12 = r5 + -4; writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; r14 = r11 + r0; r5 = r12 + r0; r8 = r0 + r0; r3 = r9 + r0; /* Next insn is delay slot */ pc=0x6c324; run_6c200(); return; case 0x6c4ac: r7 = r0 + 41; if(r2 == r7) { /* Next insn is delay slot */ pc=0x6c550; continue; } case 0x6c4b8: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 4; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x6c4d8: writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r6; /* Next insn is delay slot */ r31=0x6c4ec; pc=0x6b400; run_6b400(); return; case 0x6c4ec: r6 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; r5 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; /* Next insn is delay slot */ pc=0x6c228; run_6c200(); return; case 0x6c500: if(r24 == r0) { /* Next insn is delay slot */ pc=0x6c3e4; run_6c200(); return; } r2 = readPages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff]; r24 = r0 - r24; r3 = r0 + -1; r3 = r3 >>> (r24&0x1f); r2 = r3 & r2; writePages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff] = r2; /* Next insn is delay slot */ pc=0x6c3ec; run_6c200(); return; case 0x6c528: r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; r2 = r0 + 1; writePages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff] = r2; r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; r2 = r0 + 5; r29 = r29 + 48; /* Next insn is delay slot */ pc=r31; return; case 0x6c550: r3 = r3 + 2; writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; if(r11 != r0) { /* Next insn is delay slot */ pc=0x6c33c; run_6c200(); return; } /* Next insn is delay slot */ pc=0x6c4b8; continue; case 0x6c5fc: case 0x6c600: pc=0x6c600; return; default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); } /* NOT REACHED */ } } private static final int[] _data1 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001",0x2); private static final int[] _data2 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001",0x2); private static final int[] _data3 = decodeData("\022\\h6{UXd\020\033Mw!\001`a9\034lR\001\034Js\023KA \000\000\000\000\022\\jVs-\\o;[D\006{Uhp:]\004\0063=dm0]\004\002CUfe\020\011l6\0234N,\020\011n\006c\005Rn\023H\rw\021\000Na8\034\rF)\034R.\005\000\000\000\002\005\006M\"H\005R\003QPe\020\020(4j\024@C9\033n7\033\005fs2[,&c\025d 3\033n\"\0025jl:\032.\006c\024@E7\035M\027\023=\\m2[NG\030(@ ![n\007KIRg4\035\004\002B\014R \030N'\023A4d0\030M$\004k\005dc7H\010&\013eJ\000\000\000\nFC%f 4\\d\004\n\r\032E\026\010\016&+1Ja9Y$\003\0018r5\027\rD\002A\011\014e7\030m\007+IFh\021\n%B\001H` %\035-b\001H`1\032BD\002\002AXa:\031Mw\0234@i7\031\014W\003\025\\d2[NB\003YJr9Z-vq8\000A!S(R\003\r^m2\\d\007;%hh\020\020(%\032=\030U*\021)EI\001\034O\020\025h\025\022I\002N*\026'2\003\031^r\020\031\014W#\005Rl9H\016&+\005H :\032\014R\003!Jl8\010\014fK1J.\005\010\004\005#!Rs\020\032.2\003\031de2H\0166{\031hw0\\LRa\001Bn2\010\017\026{T@a9\031$\007;\025Xc7[,R\003Q^ 9\031,FKMhr4XNW#\024@i:\010\016Vs\021Jr\005\010\004\006\033\025dt0Z-b\003\r^n2\032.FK=\\s\035H\014\027\031\001^u:\033\r\026s\025H 4[D\007#!J #SJR\002\035Jn2\\L\026a\001 u1\033\r\026\031\001\030i1Y-g\033\024\\\n\"\031,FK\rBt2Y\004\007#<@t4\031$\007;%fe9]\004\006\023\025Rn3H\011\022\003\025le9\010\r\006\013\020@t4\031$\007\0031Ja9].&)\001^f\020\034LV\013\021Rn3BD\002\003\011^o5\\d\006{\030@(1].'\023\025\\t6\036$\007\033AJn2\032-f9\001fo6Y$\007#%Ze\020\031\014V\013\020@f7\\D\007#\005p 9\031,\027\033=\\s\024KA%#!J 7\031.v+Mh ;\031.'\033%^n\020\030l\026q\001De\020\031Mw+9H 0]\004\007#!J PiT)\001Po6Y.\006\013\035J:\005\010\004\006CQhp\035\013ew\033=jr1Y,f{INe\027\033LW!=`/0XmV)5Fr7\\n6\013Mf/\005\002JW\033\005Ne\035\002L\026\0335J -Sj\005\"%\036N\027\013Eei\0016F$S\010Ui8\\.\005\002Iw\003QRo7\034g Q\000@-4\013\004\002i5Pe6\034\004\002\001\000@ \020\010\004\002\001\000@ \020\034m\006{\\@t4\032.2\003!Jl8\010\014\026s\020@e<\032.@Q\000@-3\013\004\002i5Lo9\033,\027!\001\014O)\023(\025!\000@ \020\034lW!\001^u:\034\016W!\001Li6\031$\0063=dm0]\001\"\001\000Zo\026\010\005Rk=jt3\032-F)\001\014I&\021$\002\001\000@ 9Y.B\003=jt8\035.B\003\031Rl2H\rf\0135J\n\020\010\005W\0210@-\026\\LW\003=dt\020\021I\024b\024@ \020\010\004\002\003MJt\020\034LW\003=dt\020\031M\026c\024@n0[,PQ\000@-6\013\004\002i5fy6XMvc1Rs:\010\010dJ1\n \020\034lW!\001fy6XMva\001Xi9]\004\0063%Xe\020\033L\026k\024\024 \020\010\004\002\001\000Z-6\030,&+1Hu6\\\004\002\001\000@ \020\010\004\002C=Xd\020\033L\026k\024@f7\\D\002i5fy6XMvc1Rs:\n!\"\001\000@ \020\010\005RkYRc2[\014\026\023\025Xs\020\021I\024b\024@ 9Y.B\003\031Rl2H\rf\0135J 3\033n\"\0031Bb2[\004\006#UZp\020\032-b\002Y\022C\"H\014f{IZa:\002D\002\001\000@ \020\013%W\033\025hp1H\011e*5\004E)\010\004\002\001\000@s2]\004\007\003I^g9\030-R\003\r^u7\035\014W\020(@ \020\010\004\002\0014Zc8\035$\004\032A* \020\010\004\002\001\000@ \020\010\0166+P@t0\\Lv+P@p9\033l6+Mfo9\002D\002\001\000@ \020\013%VK9Rt6Y-R\0029*M!\021*\"\001\000@d2YM\026s\024@'2[.\007#dN 6Y-V{Ir\n\020\010\004\002\001\000@-\026[,\027C\025dr7\\N2\0029*M!\021*\"\003MJt\020\033NVk\011Jr\020\033lb\003\025dr7\\N2\003\011Jf7\\LR\003\025pi:\032-f8(@ \020\010\004\002\0014Zm0^\014F+Ahh\020\023JTj\011\nR\020\010\0166+P@r2XnW\023MRo7\010\014F+Ahh\020\031Mw\021\001Za1\\Mr\003\rBl6\034d\006\0139H \020\\n&\030(@ \026]HDJ\035\022T\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\0166+P@v2\\L&{MRt<H\rF+YJl\005\010\004\002j\021&Y&PItau,A&\025(R\001\000@ \020\010\004\002\001\001He3\032-f)\001Nl7XL\026a\001fy6XMv`(@ \026Umfy5Xa1\031-Bk%\\d2[NB\001\000@ \020\010\0167+A`r2\\n2\003]Br7\032-f;L@a1\033nW!\001Rn2\031-g#\025H 6\030,&+1f\n\020\010\005U;9^-7[\014Bk\031^r\020\010\004\002\001\000@ \020\010\004\002\003Mjp8\034LW\033L@w0\\MfK9Ns\020\030,&{Uh 7[\014B\001\010Bf7\\D\"\003Mrn:\030/\000Q\000@-+]\017\027\003\024Zm4\\mV\013QFh\020\010\004\002\001\000@ \020\031-f\013\011Xe\020\035\017\027\003\024@c4\031,6[%\\g\020\n\016v\013I\\ 0XMw+P@t<\\\014R\0035Rs6X.F\033 R\n\020\010\004\002\001\000@-\026].6)5ft2\033nW!\000@ \020\010\004\002\003\031Rx\020\031Mw\021\000NR2[\014\027+9Fh\033\r\004r\002%\010E\020\n\0166+\024@d7Xn2H(@ \020\010\004\002\0014Zm9]L2\001\000@ \020\010\004\002\001\000@ \020\010\0166+P@o:]\016\007+P@e9\034Mw\021\001Ze9\\l\026;\024@f7\\MV\013P@t7H\016FC\005h 7YD\004jL@V4\\nV\0130@S:\035,FK<\024 \020\013*ba\000Z-;\031.'\033%^n\020\010\004\002\001\000@ \020\010\004\007\033!^w\020\035LW\023MRo7\010\014\026s\020@e<\032.@P\000\000\0007].G\003Uh 3\033n&k\005h\000\000\000\rfy5Xa1\031-Bk%\\d2[N@\0039^-7[\014Bk\031^r\000\000\016GKAJ-6Z.6k\005hc4\000\000\000\001\025fU7\032mf{]\\ ;X.&s%\\g\020\033\014W3\025X.\005\000\000\000\003!Jl8\000\000\000\000\001Lo9\033,\027 \000\000o:]\014fK1J\0006\030,&+1Hu6\\\000\000\000\001fy6XMvc1Rs:\000\000\0073%Fe6\030,&+1f\000\000\034LW\003=dt\000\000\0166+Q`c\000\000\000\007\003I^g9\030-R\003\r^u7\035\014W\020\000Js(\034Mv;IBm\020\030mw+9he9\010\rw+P@o3\010\016&\0139Ne\020\n\006\002iApf3\031LbI8\024\0001\\\016P\002\r U\020\035\017\027\003\024\000\000\000\000\004W\032U\\k7\033nvq\001\006P*H\016GKAJ \024\035.6)\000l5\030\014EB\001Xj1\030\013\004\006\031Xhd:\035F\"a\000l51L\006\"\003=d \033\r'\003\011XR.\005\000\000\006K9Rt6Y-P\003%\\i:\033,Vi\001la6\035,P\000\000\000%9R-fKQZe6H\016f\0131je\020\033nW!\001^f\020\034L\026s\035J \024\014\005S\003aLf\024KA \0035Bx2\\N&{If\000\000\000\rV\013aRm:[$\006+Ido9\010\0146{U\\t\000\033,\027C\021Jp:\032\000\000\000\000\000r2XnW\023MRo7\010\014F+Ahh\000\035.6)5ft2\033nW \000\000m9]L0\000\000\000\000;\031.'\033%^n\000\021.'\023=d:\020\020l\026s9^t\020\033n\006+8@s<[,&{0@l4\\nB\003\031Rl2H\004\"+LD.\005\000\000\004+Ido9\016D\004\033\005\\n7]\004\006{AJn\020\025I\024\032\024@l0XLVa\001Hu6\\\004\0063%Xe\020\010DW\031\010\\\n\000\000\010W\023I^r\035\010\0106\0139\\o:\010\rw\003\025\\ :\033n\006c\025le6\010\014fK1J \021\011.2\0218\024\000'\033d\007#=` 6\031.f+0@s7].&\033\025f 3Z.f+8\000\000#\032.'\033P@p0\\n2p\001\014u9\035\r\006+H@p0\\n2p\000\000\000\"^\016G\023\004@p0\\n2\003Q^ 3Y-f+IBt2H\rFKMhi7\031d\007\023\025`o9\035\005`\000\001\nr9\033n#Q\001\006a7\033Mw!\001^p2[D\007\023\025`o9\035\004\0063%Xe\020\010DW\031\010\\\n\000\000\000\004+ahr0H\016\006\013Mf 7\031,V#\025H :\033d\0063%\\d\020\031.'\023=d.\000\000\000\000\0029^ 7].G\003Uh 3\032-F)\001fp2Xm\0263%Jd\020\n\016W\033\024@t4\031$\002\0215^\"\020\033n\007#%^n\020\033n\"\003QPe\020\010D\027#<D 8\034lW+\021^ 7\\\0146{\021J)\027\002@\004+Ido9\016D\004\033\005\\n7]\004\006{AJn\020\033nW#Ajt\020\031M\026c\024@\"\022\\d\"p(\000\000\000\000\000\020l \000\001\006D\000\000\0104 \000\000C\"\000\000\004\032\020\000\000!Q\000\000\002\r\010\000\000\020h@\000\001\006D\000\000\0104 \000\000C\"\000\000\004\032\020\000\000!Q\000\000\002\r\010\000\000\020h@\000\001\006D\000\000\0104 \000\000C\"\000\000\004\033p\000\000!f@\000\002\r\010\000\000\020h@\000\001\006D\000\000\0104 \000\000C\"\000\000\004\032\020\000\000!Q\000\000\002\r\010\000\000\020h@\000\001\006D\000\000\0104 \000\000C\"\000\000\004\032\020\000\000!Q\000\000\002\016j\000\000\020h@\000\001\007\003\000\000\0104 \000\000C\"\000\000\004\032\020\000\000!a \000\002\r\010\000\000\020h@\000\001\007\014\000\000\0104 \000\000C\"\000\000\004\034L\000\000!Q\000\000\002\r\010\000\000\020h@\000\001\006N\ndJ\r\n 6\030,&+1f 3\032-F+9Bm2@\000\000\000\001de8\033n'!\001Li6\031-f\0135J\0009^-V\023=X 6\032.7!\001Li6\031-f\0135J\000\000\000\000\006{Uhp:]\004\0063%Xe7\030-V(\001\002r3]-V+9h 7].B\003=L 9\030-f;\024\\\000\000\022-Fc\025Na6\010\0167K5Do6\010\rf\0135J 6\031-f;QP\000\000\025\r\006+IJ'9H\rV{IJ :\032\014\026q\001^n2H\0146C\005da1]\014W\0218\000\000\000\000\005 \000\000\000U7\032mf{]\\ 3\035-f\033QRo7\013@\000\000\001\006-9]\017\026c\024@\"\036O$\"\003\r^m8\030.&KM^n\020\031\014W#\025Ft2Y\005`\000\000\000U7\032mf{]\\ 7\\\014W\023\005ho9\013@\000\000\001&t9\030-f;\025 a9\031-g#!Js4\\`\000\002Q^o\020\033,\026sd@'\024Ie`\000\000\000E<\034\rvs\025\\t\020\032.2\0039Jg0]\r\0273\024\\\000\000\000\0106{9le9\035\014V!\001ho\020\032-g#\025Ne9\010\014f{H@b4[L\027\023d@l7Ym\026\031\001^p2\\L\027#=d.\000\010HTzHD 4\\d\006#\025`r2Xl\027#\025H;\020\035.6)\000DX'TD\"\003%\\s:\031,\026!8\000I6\033\014V;\005XO8\031.&\013Q^r$\030-f#1J\000\000\000\011w\003\025da7\031\n7#\005Fk'\033nD+5`t<@\000\000\000\001\036p2\\L\027#=dS:\030,6Z9^t\"[.\007#d\000\000\000\025L\026cUJ 7\033nB\003\021Jf4[LV!\000P\0000Y\014G\020\000\000\000\000\030,F#IJs9@\r\026sP\000f6\033l\027 \000\000\0006\034m@\003\021Rv\000\033-v \000\000\001!W\000\000\n\006\000\000\000Ou@\000\004~(\000\000(\022 \000\002>L\000\000\023r\000\000\001\036t\000\000\n\011\030\000\000P!@\000\005\003t\000\000'o\000\000\002@&\000\000\023\177\000\000\001 *\000\000\011tP\000\000O\001\000\000\004wT\000\000'\025`\000\0028|\000\000\023S`\000\001\034\177\000\000\011m \000\000Ms@\000\004pp\000\000'\001\000\000\0027\024\000\000\0235P\000\001\033\023\000\000\011WP\000\000M1\000\000\004j$\000\000'W\000\000\002<b\000\000\023b@\000\001 f\000\000\011A8\000\000L\r@\000\004N,\000\000&\003@\000\0020\034\000\000\023\001`\000\001\024{\000\000\011'p\000\000L\007\000\000\004`8\000\000% \000\002*\010\000\000\022> \000\001\030\016\000\000\011(8\000\000L\007\000\000\004T(\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000JF@\000\004Tl\000\000%)@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011'@\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004U\014\000\000%F`\000\002.2\000\000\022@\020\000\001\026B\000\000\0116x\000\000K\017\000\000\004\\d\000\000%O`\000\002(@\000\000\022_P\000\001\027<\000\000\011 \010\000\000Kw\000\000\004V<\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004Ul\000\000%\000 \000\002+\022\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000Jf\005#=^ 6X-gI\000N(\023K@\000\000\001\034o\020\035L\026cUJ 3Z.f+8\\\000\"\032.fKMRo7\010\014'I\001te9\033e`\000\000\000%9U-f[9^w7\010\rw\003QRo7\010\005\002i4Js\024KA \000\000\000%9U-f[9^w7\010\0167;%hc4\010\005\002i\025F)\027\002@\000\000\000\000%9S-\027\033MRn3H\004W\0318\024\000\000\011.2+L\\\n\000\000\010W\023I^r\020\032-b\002\r\030I\020\030.&;UZe7\035\0163Q\000\000\000\000\000\0106C=fe7\010\0105\002T@d7Y.2\0039^t\020\034nW\003A^r:\010\rF{9N 9\031,vKMhe9\034e`\001Xj0\031\000\000\000\000\000l5\030L\000\000\000\000\000c\033\r\014G#Xd\000\033\r,3\001H\000\000\000\021.'\023=d:\020\023Mr\0035Jm7\\O\022\003\031^r\020\031\017\026s\005Zi1H\014'+\031Le9\013A \000\000\000C7[Nf+Ifi7[D\007#\005Dl2H\r\026s\r^m8\033\014W#\024\\\000\000\000\000\005+9Vn7]mb\003\025\\c7Y\r\026s\034\\\000\000\000\011\026c1Jg0[\010&c=Fk*\031.&k%\\a:\033n \000\001nh4[\014P\000\000\000u7\035\r\026`\000\000\0002[\0166(\000\000\000\000\024\014\027\023MRn3H\0166{Udc2H\014fK1J \023I.28(\000\000\000\021Mw+9H \023_$r\003%\\s:\031,\026!\001^f\020\031-f!5^f\026YM\026c\024\\\000\000\000\004W\031 Jd\024H\007\"\001\025f \024\011.2\001\025f)\035\010\004W\030(\000\000\000\000\004W\031\000Z #\032-F)\000Js\026\010\rFK9J \022Y\004\002A\025f \022\\e\023Q\000Js\005\000\000\005;\005dn4[Lp\0021Bb2[\004\006s\005Ze\020\034nF\013Ihs\020\035m\027# @a\020\034m\006K\031h-9\\\014\026\033\024@c4\030.&\013\rhe9\013@\005\033\025di7].2\003\025dr7\\@\000\000\001\004u3H\r\026q\001\002C&Q%B\003\r^d2H\014f{1Xo;\\`\000\000\000P0<\011/\003Q$\000\000\000i\031@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003$Z\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032%@\000\001SO\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000iT\000\000\006LL\000\0004u`\000\003%4\000\000\032) 0\000\000\000\000\000\000\000\000\000\010\004\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000 \000\000\004\000\000\000\002\001\000@ \020\010\004\002\001\000@\010\004\000\000\000\000\000\000p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\000\000\000\000\000\030\000\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\000\000\000@\000\000`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\n7K9ha<\010\014W\023I^r\027\000\000\000\002Ado3\\L\026i\001Fo:[NF+H@u7\031\014V3%\\e2\013@\000\0029jm1\031.\"\003=jt\020\033lb\003IBn3Y%`\000\000\000\000#\033nVs\020@e7\031\005V{\030Zf4[\014R\003%\\s:\031,\026!\001^f\020\011oR98\000\000\000\023nW!\001^f\020\033,Vk=dy\027\000\000\004k%fs4[Lr\001\035v'\027\000\000\000\000\001\034o\020\034nG\023%\\g\020\031m\0273\025\\.\000\000\000\000\002\rBn7\033nB\003=`e7\010\r\026sAjt\020\031M\026c\024\\\000\005\016d\002Q(T*\025\nE\"Q\001&o:\\L6)h@%9B@\002)YH \020\000\000\000\001\024`4<\000\000\000\000\000J0\031\036\000\000\000\000\000%\026M\0162\001\024Z1\034\\`\000\002M^u9\030lR\003\031Rl2H\0146{9ha4[N2\003%Xl2Yl\026a\001Fh0\\L\026\033QJr\027\000\n7#IBn3Y)\026sAjt&[lF(\000\000\000\000\024.V{QJs\020\034nFK1X 7\\\014Vq\001Bt\020\031-f!\001^f\020\033\r\026s\024\\\000\000\000\010v\013IDa3Y$\006#\005ha\020\030.B\003\025\\d\020\033lb\003Mha:\031-V+9h.\000\000\000\005;IRt4[Lr\003Q^ 6\032,'\023\005dy\020\033Mw!\001fu8\034\rw\023QJd\027\000\000\000\001\011\002C&Q$\"\003\025\\v4\\Mvs5Jn:\010\016f\013IRa1\033\014R\0039^t\020\031Mw+9H.\000\000\010fK1J 7\030-V)\001bu7]\014W\031\001\\o:\010\014f{U\\d\020\n\004\"\021\001^r\020\017\007bI8\000\000'\033d\0063%Xe\020\033L\026k\024@g4]LVq8\000I6\033\014V;\005X 8\033n7#\031Rx\027\000\000\000\000\000xn7[LSp\000\000\000\000p.@\000\007\003\\\000\0008'\000\000\003C\026\000\000\034\032\000\000\001aV\000\000\016\004\020\000\000p{\000\000\007\007l\000\0009\034\000\000\003J\024\000\000\034\\@\000\001e_\000\000\016-H\000\000r\\@\000\007\022<\000\0009-\000\000\003L$\000\000\034~@\000\001h\016\000\000\016C\010\000\000tC\000\000\007$\000\000\000:\030\000\000\003O2\000\000\035\0130\000\001i\034\000\000\016x`\000\000wS\000\000\007@\010\000\000<\r \000\003_x\000\000\035{@\000\001nk\000\000\016}8\000\000x\030\000\000\007Ld\000\000<l`\000\003h(\000\000\036H \000\001t\011\000\000\017\036H\000\000y<\000\000\007O\020\000\000=\003`\000\003n$\000\000\036u@\000\001x\010\000\000\017CX\000\000|\001\000\000\007_\010\000\000=\\ \000\003o:\000\000\037\006`\000\001{\027\000\000\017[\010\000\000~\006@\000\007r\000\000\000?\001`\000\003wN\000\000\037.`\000\001{b\000\000\017cXo9\032,vK9Bl\000\000\000\000\003\021Jf4[M\027#%^n\000\000\nF{<@d2Y.\006cd@n2\\nF+\020\\ )\031,7+Ifi;\031$\006k\005Fr7H\0146\0131Xs\037@\000\000\0025Bc9\033d\006s=h 2\031,fK9Jd\020\n\rw\021\001nr7[Lr\003MRg7\030.G+IJ)\027\000\011V\013\rdo\000\000\000\004k\005Fr7H\016\006\013IBm2]\014W\021\001hw4XlRp\000\000M0Xn&y\001Bl9\031,\026#d@d2YM\026s\025H.\000\000\011\026c1Jg0[\004\006\033=Zb4[L\027#%^n\020\033lb\003\r^m6X-f!\001Bn2\010\016\006{Mhf4^\005`\0029Jg0]\r\0273\024@v0[\016V)\000Z 1X-fs=h 1Z\rv{MJ 0Y\014G\023\025fs4[Lr\0035^d2K@\004\013Mfe6XMFK9N :[N7#\005Dl2H\010\024r\024@#'\023ieR\025$O\020\032-g\033Qdu1]\r\026{8\000\000\000\000\010\027\033MJm1\033\r\026s\034@u7\034nF\013\011Xe\020\023\013\004\011\000FN'SK$*I\036 4[N7#Ijc:\032-vp\000\000\000\000\020.7\033\025Zb6\032-f9\001Du3Yo\022\002)\032P\024\011\017\007C\031L)\020\032-g\033Qdu1]\r\026{8\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%`\002%Xl2Yl\026b\035do:\\\011\026s\021Jx\000\000\000\006{IB\0000Y\0140\003Mha\000\033\014F\010\001Fm8\000\0166\023\014\000p2Z \006S5`\0005\034n \003)Zl\000\032N6`\001Zv8\000\rW38\000p2\\@\006\033=`\0009\031.\000\003MJp\000\034\014V\010\001`h2\000\016F\033L\000p6\031\000\007#MF\000;Y\rP\003APk\000\035\0146 \001dt6\000\016F#\014\000p4\030@\007#ar\0008\033\014 \003Qrx\000\036\014&\010\001pc2@\0167#@\000w0Z \006\023%h\0002\031,0\003%\\c\000\034\r\007H\001`l<@\016\006C`\000p6\036\000\007#MD\000:\034L \003Mhz\000\034l\026\030\001fi9\000\014\026s\014\000s6\033`\007\0231B\0009\\LP\003Ida\000\034l\027@\001Xa<\000\014F\033@\000i9X`\006c\005f\000:\030.0\003MPa\000\034m\007@\001fh<@\014\027\023H\000s1\036\000\006#=`\000:\033n\000\003)Bm\000\030-f(\001Xx0@\016&{0\000s:\036 \007\033Qp\0006\031\017\020\0031Hx\000\030n\007H\001Fp<\000\014'\0030\000b6Z \006\023YF\0001\035N0\003\011Fc\000\030L7\030\001Dn2@\014&+D\000b9\032`\007\003!`\0001[\0140\003AXp\000\034lV\030\001dt4@\016\006C\004\000c6\032 \007\023Qf\0008\033\014\020\003MJi\000\031\014WH\001hx0@\016GK\004\000t<\034`\007#\005r\000:\030/\000\003\rXv\000\035\0167@\001Rn<@\014F+`\000c6\031\000\006K9p\0007\033n\000\003MJd\000\000\000!/@\000\002\n\177\000\000\020Wx\000\001\005?@\000\010+|\000\000BZ\000\000\004\025r\000\000!/p\000\002\n\177\000\000\020Wx\000\001\005?@\000\010+|\000\000B_`\000\004\025~\000\000!/p\000\002\n\177\000\000\020Wx\000\001\005?@\000\010+|\000\000B_`\000\004\025~\000\000!/p\000\002\n\177\000\000\020Wx\000\001\005?@\000\010+|\000\000B_`\000\004\025~\000\000!/p\000\002\n\177\000\000\020Wx\000\001\005?@\000\010+p\000\000B_`\000\004\025~\000\000!/p\000\002\n\177\000\000\020V@\000\001\005<@\000\010.D\000\000By@\000\004\027L\000\000!<`\000\002\013f\000\000\020Z \000\001\005j\000\000\010/\030\000\000By@\000\004\027L\000\000!<`\000\002\013f\000\000\020^0\000\001\005s\000\000\010/\030\000\000By@\000\004\027L\000\000!<`\000\002\013f\000\000\020^0\000\001\005s\000\000\010/\030\000\000By@\000\004\027L\000\000!<`\000\002\013f\000\000\020^0\000\001\005s\000\000\010/\030\000\000By@\000\004\027L\000\000!<`\000\002\013Q\000\000\020^0\000\001\005s\000\000\010/\030\000\000By@\000\004\026H\000\000!:@\000\002\013`\000\000\020^h\000\001\005v@\000\010/4\000\000B{ \000\004\027.\000\000!<0\000\002\013m\000\000\020^h\000\001\005v@\000\010/4\000\000B{ \000\004\027Z\000\000!=P\000\002\013m\000\000\020^h\000\001\005v@\000\010/4\000\000B{ \000\004\027Z\000\000!=P\000\002\013m\000\000\020^h\000\001\005v@\000\010/4\000\000B{ \000\004\027Z\000\000!=P\000\002\013m\000\000\020^h\000\001\005v@\000\010/4\000\000Bx\000\000\004\027Z\000\000!=P\000\002\013m\000\000\020^h\000\001\005k@\000\010/\014\000\000CE\000\000\004\034L\000\000!i0\000\002\016i\000\000\020ih\000\001\006p@\000\0108\030\000\000Co`\000\004\036h\000\000\"\000`\000\002\020\001\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000!\177P\000\002\020\017\000\000\021\000x\000\001\007|@\000\010@<\000\000D\003`\000\004 \036\000\000!~P\000\002\017q\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000X\000\001\010\007@\000\010@<\000\000C{ \000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004 \036\000\000\"\001p\000\002\020\017\000\000\021\000x\000\001\010\007@\000\010@<\000\000D\003`\000\004\037\026\000\000\"L@\000\002\0248\000\000\021!P\000\001\n\010@\000\010M \000\000D{\000\000\004),\000\000\"Y0\000\002\025G\000\000\021+X\000\001\n[\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021-\000\000\001\nh\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021+\020\000\001\nh\000\000\010V@\000\000E+@\000\004+ \000\000\"Z\000\000\002\025P\000\000\021*P\000\001\nS\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021-\000\000\001\nh\000\000\010U\010\000\000E4\000\000\004+ \000\000\"Rp\000\002\025P\000\000\021-\000\000\001\nh\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021-\000\000\001\nh\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021-\000\000\001\nh\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\025P\000\000\021-\000\000\001\nh\000\000\010V@\000\000E4\000\000\004+ \000\000\"Z\000\000\002\024v\000\000\021N\010\000\001\014b\000\000\010e\034\000\000F'`\000\0041F\000\000#\007p\000\002\031s\000\000\021U\020\000\001\r'\000\000\010j\014\000\000FO@\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010j\\\000\000FU`\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010i8\000\000FU`\000\0045.\000\000#% \000\002\032W\000\000\021U8\000\001\r+@\000\010ih\000\000FH\000\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010j\\\000\000FU`\000\0044l\000\000#*p\000\002\032W\000\000\021S\020\000\001\r+@\000\010j\\\000\000FU`\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010j\\\000\000FU`\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010j\\\000\000FU`\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r+@\000\010j\\\000\000FU`\000\0045.\000\000#*p\000\002\032W\000\000\021U8\000\001\r\000\000\000\010{\004\000\000GQ\000\000\004<N\000\000#cp\000\002\035c\000\000\021kx\000\001\0179@\000\010~H\000\000Gs@\000\004?\006\000\000#w`\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004>\\\000\000#zp\000\002\037W\000\000\021zP\000\001\017k@\000\010~\\\000\000Gu`\000\004>t\000\000#t\000\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\0376\000\000\021}8\000\001\017k@\000\010}H\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000G`\000\000\004GH\000\000$8`\000\002#(\000\000\022\031x\000\001\0211\000\000\011\011X\000\000H}@\000\004I2\000\000$JP\000\002$I\000\000\022$ \000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$4\000\000\022%p\000\001\022/\000\000\011\021@\000\000I\027@\000\004I<\000\000$K`\000\002$@\000\000\022\"(\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022\036\000\000\011\022x\000\000I\027@\000\004Hp\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$@@\000\002(g\000\000\022DP\000\001\024\026@\000\011!\024\000\000Iz \000\004O\n\000\000%\017\020\000\002)X\000\000\022M \000\001\024d@\000\011&\020\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024Z\000\000\011&t\000\000J7 \000\004R`\000\000%\033P\000\002)]\000\000\022Mh\000\001\024`\000\000\011%\030\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J/\000\000\004S:\000\000%\033P\000\002)8\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022H0U9Z-f9\001^v2\\N6KiJd\020\030,F#IJs9Z-f9\001Zo2\031%`\000\000\000\000$[\rF+\035Bl\020\030mvk\011Rn0]\r\026{8@o3\010\0146{5Za7\031\004\006\0139H 0Y\014G\023\025fs4[Lr\0035^d2K@\000\000\000\000\000\000\000\033@\006p\000\000\000\000\000\000\000\000\000\000\000\000\017@\003p\000\000\000?\000\000\000\000\000\0006\000\000\000\0030\000l\000\000\000\000\000\000\000\000\000\000\000\000\0020\000\000\000\010\000\000\000\001\030\000\000\027\011@\000\0018\000\000\000\004\"\000\000\000\"\000\000\000\000Q)\024j\000\000\000\000\000\000\000\000\000\000\000\000\001h4\000\000\000\000\000\000\000\000\000\000 \001@\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000P(X\016\000\000\000\000\000\" \000\000\000\001Bq\000\0014[/\027\000\000\000\0258X\000\000\000\000\014H \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004X\000\000_-@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001;\000&`\011p\000\000\000\000\000\000\000\000\000\000\036\013\017FerY|v\000%\000\000\005rh\000\000\000\000\000\000\003=V\177=@\000\000\000\000<\0327ZowZ<t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004p\000\000\000\000\000\002a\020\034\006\027\011Id39M\014B#Pje\022]&f1\035N&;\rns\003\000A`PX$g1]n4qH\000\001\000\000\000\000\003h\000\000\000\000\000\000\000\000\000\000\000\000@`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\nW;ev}?\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016'#Ypz>\037N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\031Tn9\035O's\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Hh6\034\016GCq@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\014J'\024JeRy\004F%\023J%2i<Z@\000\000\000\000\000\000\000\000\000\000\000\000\004J)\026H\002SItB%\024K$\001)dz!\022J%R\000Tr=\020\000\000\000\000\000\000\000\000\000\000\000\000\000\004&\025\013F#1h|\"\023\nEc\021Xt>\021\011E\"qHl:\037\010\000&3)\\`\013\036Og\023\000\000\000\022\n\005C\001Pp<\020\011\005\002a@h8\036\010\004BA0`4\034\017\004\000\003\021Pl8\035\017\007c\000\000\000\001H\000r\000,@\017\020\004d\0019\0006 \017H\0002\000\034@\013\020\003d\001\031\000. \rH\003r\000\014@\007\020\002d\000y\000& \013H\0032\000|@\000\000\000l\000;\000\026`\007X\000\001\027_m{0\007l\001\037\000\000\000\001hT\000\000\036M \000\002u*\000\000\037.P\000\002;\025\000\000\027[(\000\001]j@\000\017oT\000\000\016E \000\001tj\000\000\027*P\000\001zu\000\000\023Y(\000\001=Z@\000\rnT\000\000~} \001xt*\000\037O&P\002}:U\000\037oW(\002?\035J@\027{mT\001_nu \017\177wj\000\000\000\000\000\000\000>\027\000\000\007s8\000\000_+@\000\007{\\\000\000\000\000\000\000\000\000\000\000\0007zp\000\003\177w\000\000\000\000\000\000\000\r\002@\000\002i\024\000\000&Q \000\0035J\000\000#0P\000\002[%\000\000\031\\(\000\001mr@\000\000h\024\000\000\026I \000\0025\n\000\000\033,P\000\002\033\005\000\000\025Z(\000\001Mb@\000\016o\024\000\017\006A \002y4J\000'S(P\003=Ze\000#qX(\002_-R@\031|n\024\001ovy \000\000\000\000\000\000\003`p\000\000^'\000\000\011t8\000\000o3@\000\010|\034\000\000Wi`\000\006?\016\000\000;|p\000\000\000\000(\034Mv#UFe2\010\016F{<@m:Xm\002\003\r^d2K@\005\033\025Nm2[NB\003IJa1Z\014V!\001Bn7]\r\006+H@o7\031%B\003=le9\035n&KQRn3H\r\027!8\000\000\000\000\011V+5^r<H\014\026cIJa2\036$\006K9Rt4X-FKMJd\027\000\011w+Q`u:\010\014fK1J 0[\016&+\005Hy\020\030m\006{MJn\027\000\n6\013YRn3H\004Vc\020@(\030\036\004Vc`R 1\036.F+L@(\030\036\004Vc`@-\020\014\017\002+1p 2^\0146cUfi;\031%\022p(\000\000\000\000\n6+\035Ze7\035\004\007\033%te\020\032.2\001\025Xd\020\n\006\007A\025Xx\024H\014'KQJs\020\n\006\007A\025Xx\020\013$\003\003`Jl<\010\014WC\rXu9Z.f)$\\\n\000\000\000\005\033\025Nm2[NB\003Mha9\035\0162\003%\\s4Y\014R\003\005\\o:\032\014W\021\001^n2K\004\006{YJr;\\M\027#%\\g\020\032.Bp\000\000a8\034\rF(\000\000\0008\033\014\026K8\000\000\000\020(4j\024\000\000\000\000\004\"\013\rDm\021\010\r\027\031\001^b9[mF+QJ;\020\035.6)\000D!1]\004\007\003\025h\"\020\032-g\033QJa2\013@\000\001\024\\3\030\031`\000\000\000xU'\021\010T2%\034E\"\010\010db=\002T\037\000\000\000\001\025Xd\020\n\006\007A\025Xx\024@\007E*9\010E#\022)d*\020@I'\025\007`\001\005fe9\032-w+Lt \000\000\004\026+Ido9\016D\000\000\000\000\000\020]l\027\0238t \000\021Mw+9H 7\031.r\001\010Bf7\\D\"\003Mrn:\030/\002p\000\000\000\000\025n&{9N :\036.\006)\001Lo9\010\rF{=`'9H\010Tr\020@v0[\016V)\000Z 6].7!\001Za:\030m\002\003Qrp2H\rv1\001&T TJB\003YBl:Y%`\000\000\000F7]-f!\001^l2\010\004\"\013\031^r\021\010\0167K9ha<\013@\000\000\000\000L7[n\002\003\r^u7\035\004\006KL@n2Yl\027#%le\027\000\n7+\011to7\031 \005+9Vn7]mb\003Ado1Y.7\033=d.\000\000\011f+\035Bt4]LR\003MRz2H\014\027\023\035jm2[NBp\001 a2\031\r\026s\034@w4]\r\002\003iJr7Y.2p\000\000\000\000\023\rv\013\021Jd\020\011,B\001 `x\022L\006GA$@b<]\014W\031\001Lr7[$\0063%Xe\020\033lf3MJt\020\011-F!\000P0<\011&\003#1p)\027\002@\000\000\001(o7H\014F+\025`l<H\rf+Mhe2\013D\005\023\025Fu9\034m\0273\024@\"\020\\mw+IFe\021\017`\005\033eZb7[\004\006c%ft\020\031M\026c\024@n0[,R\003\005Xr2X,GI\001Fh7\\lVq8\000\000\000\025.6+\020@\"\020]\rr\021\001ni:\032\rw+P@f4[\014R\003\031^r6X.B\003%\\d4Xl\027#=d.\020\021\014V3\005jl:\032-f9\001ho\020\010L6\0234D.\000\000\nVs-\\o;[D\006{Uhp:]\004\0063=dm0]\005`\000\000D!9],'S=\\e\020\036oR\021\001Rs\020\033l'\033=Xe:\031'2\003Ufe\020\010D\027S=\\e\020\036oR\021\001Rn9]\014V\013\020\\\000\000\033nf+IXa<@\r\026sYRs4XMF(\000\000\000*[M6s=nn\020\010E\"\001tD 9Y,vk\025\\t\020\033-v#%Li2\\E`\002U\\k7\033nvq\001`s2],Fy\001^p1[lF)8\000\000:\033`\000\003\011r\000\000\030O\027#\024\000\000\000\000\016vx\000\000w7\\L@\000\000\000\000\031\r\000\000\001Ld\000\000\030n@\000\001Fo7\035NF\013\010\000t<\000\000\007#\025pt\000\000\000\000\003\011Rn\000\030M\026s\005dy\000\000\014fH\000\000f4[\r@\000\000\000\0000[\r\026;8\000\000\000\034\0166+UHo8\030`\000\000\000\000r2X-G\003\014\000\0000[\000\000\003\005f\000\000\034N0\000\001fe:\000\017&p\000\000s=\000\000\007\033IF\0009[nW\023\rJ\000\000\032,`\000\001Rf2\031,`\000\000\000i3\033LF+\030\000\0003\033n \003\021^\000\000\033,\026\033I^\000\000\000\016v\013I\\\000\000\000\000\007\033\025di7].0\003\025^f\000\031-f#=Lf4[\014P\000\000\000\"\020\\\0166+UHo8\030er\013IJa6\034\0142\021\001Rs\020\033l'\033=Xe:\031'2\003Ufe\020\010D\027\003MJu2\033n\006\031\001v}\021\010\r\026sMhe0Y\005`\000\000\000\0002\035.&K9N\000\000\032-fKP\000\000\000\000\014\026a\001\006:\022L\006GA\000\\%9B@\000\001\005Bd2\034@\000\000\000\022%9@\0053\020$z \000\000\000\002YL\022=\020\000\000\000\000$z \000\011%c\031AL\000\000\000\004B+`\000 \037@\000\000Il@?\000\000\000\000\000$v :[NW\033\025H\000\000\000\nF{<@l0]\014R\003\031^r\020\034\rw\033QLi<\013@\000\000\001&y6XMva\001Bl9\031,\026#d@d2YM\026s\025H.\000\023\014\026\023\025X 7\030-V)\001\\o:\010\r\026q\001Xe3\035\rV{Mh 1[mG+5\\.\000\000\nw\023=\\g\020\035\017\027\003\024@-\020\031/\007\003\025Ft2Y\004\006K9he3Y.\"p\000\000W9\033mf9\001hy8\031$\002i\001Jx8\031,7#\025H 0Y\014G\023\025fs\027\000\000\000\000\000\000\000\036\036E7y\010^eq\017\020\0321\030f\024.\001gG\000\036\020zx2wSdFL&\031E\013@9\177;,3A,\033Z<\177i\020~jD!40?w\\a=\024\007m\033\037~$\037ZQ\010-\014\030,6{L\000\000\000\000\014\027\033%\\\000\000\000\000\007\003=n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000|L~zh<~@\014\000\000\000\000\000\000\000\000\000\037xW\000\032\000\000\000\000\017~\000\000\000\000\000\000\000\007\177@\000\000\000\000\000\000\003\177dC{ \002$\037Z\000%Y>\020\003\022\017m\000\0375\036H\002\026ex@\022\17774\001$C{ \013\010cR\000^j=\020\006\024:q\0002l_\010\003#.8@\032\17774\001^\037[ \016$\037Z\000u4\rP\007D1i\000=l\026H\003{)t@ \037ID\002\005\016\\ \020B\006b\001\005Y>\020\010:\0241\000D5g\010\004)RX@\"\17774\002\033\rK \021q}Z\001\020XuP\011\022\017l\001\"|``\006r9\010\000\nJ?@\001\035/Q\000=&Mh\003\001[1\000\022YIp\000CH\020 \017rEF\000UwW0\006\025C7\000\011\rcP\001\004Mi\000\034\0002$\000.u\002 \r\014H8\000\177\007=0\000rb)\000)gn@\002\0045z@\005kZ\020\001\004tg\000\007\001\032h\000/_H\020\001f#V\000\01605\030\000stN\000\020E|,\001=|J\000\003X\177p\000K\177{`\000\0260\017\000;eq\010\002\026Z\005\000\rQ{4\0006?3`\002>,\022\000[Sh`\001}M\036\000\027}\"h\001j']\000\030~_\024\001q=O \0009gn\000E\024R \007)W{\000\027v\021x\002\032]\004\000\n`\031@\000F~\036`\006]/`\000go\004\000\004kh6\000\0075\036\030\002\"a/\000\034aX \000eLa \005xR@\0004\020\021P\007\1771\000\000\023.28\000b\006\003\000\002U6(\000sT2 \006\007\011v\000`#\r3\177dC{ \000\000\000\001yhD\026@\000\000\000\000yx#&\020\000\000\000\000;<3\n\026\000\000\000\000\034|\0038\034\000\000\000\000\016\017\")\001\000\000\000\000\006n\034\010E\000\000\000\000\003+'f\035\000\000\000\000\000\000\000\000\001\000\000\000\000\014\000\000\000\001\000\000\000\000\014C\030\000\000\000\000\000\000\000aL\000\000\000\000\000\000\000\020`\000\000\001\022N#\000\r\026s\030\000N S@\006s\005\\\000\030\014&#\031Pj6\033N\007\024\n\011\006D\"Q@\000\000\000\0000\030LF3!Tl7\034\016,\026\023\rHe3\000\000\000\000\000Pn:[\rBH\000\0000\000\000\000\000\000\020\1770\000\001\010R`\000\010E\026\000\000D\022p\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000CNP\000\004\035*\000\000\"\024X\000\002\016>@\000\020\177H\000\001\010R`\000\010@\024\000\000D\001`\000\004 \016\000\000\"\000p\000\002\020\007\000\000\021\0008\000\001\010\003@\000\010@\034\000\000D\001`\000\004 \016\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\0101\000\000\010CZ\000\000D)0\000\004!m\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010DB\000\000D)0\000\004\"K\000\000\"\001`\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004 E\000\000\"\024X\000\002\021%@\000\021\002P\000\001\010R`\000\010E\026\000\000D)0\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004!\005\000\000\"\007\000\000\002\020v@\000\021\0074\000\001\010; \000\010B\002\000\000D\016\000\000\004\"K\000\000\"\024X\000\002\0168@\000\021\n,\000\001\010&`\000\010Dl\000\000D\025p\000\004\034q\000\000\"\024X\000\002\016W\000\000\021\n,\000\001\010I \000\010E\026\000\000D)0\000\004![\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@\000\002\031\026\000\000\021T\020\000\001\r!\000\000\010dd\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010^\024\000\000F\000\000\000\0045\004\000\000\"y\020\000\002\031\033\000\000\021T\020\000\001\014j \000\010f\014\000\000F0`\000\0043\006\000\000#\0300\000\002\031C\000\000\021L\030\000\001\014a@\000\010f\014\000\000F0`\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021Q \000\001\014p@\000\010j\010\000\000F8 \000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\014}@\000\010j\010\000\000FP@\000\0042N\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000F.p\000\0045\004\000\000#( \000\002\031}\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FB`\000\0043\024\000\000#\034\020\000\002\031a\000\000\021N\010\000\001\014i \000\010f(\000\000FP@\000\0045\004\000\000\"x0\000\002\032B\000\000\021R(\000\001\r\027@\000\010fZ\000\000Ep`\000\0045\004\000\000#\000 \000\002\032B\000\000\021S<\000\001\r!\000\000\010j\010\000\000FG\000`0\030\014\006\003\001@`0\030\014\006\003\001@`0\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\nt\nI\034I'\021g\"\003ABt4\030mvs\030t *[M6s=nn\020\010Mf\0135J\"\035\010\004V (\000\000+P*$r%\034G\035\010\0167KMFt6\016D\005+9Vn7]mb\0039Bm2ND\002+\020\024\000\000\013lF+X^c7[N6{1J\000\000\000\000\002+T\\%:KDW)8Ju\000\025-f[9^w7\010\010W\023I^r\000\000\000\002+Lt \022\\a \001=Jt1Klw\023=jp\000\000\004UZxt]\035\011+5qi::\022Z\016P\001=Jt1Kn\006\013Mfw2\000\004UZxt]\035\011+5qi::\022Y\007\"+\020t%-WG%ihJ[/\016KSQ\025f\n\000\000\000\005*M\nR\000\000\000\000\001<\000\000\000\013lF+X^n:[\r@\000\000\000N7H\010W\023I^r\000\000\000\000\002U\\k7\033nvq\001Po9]\000\000\000\000\000H7\\nB\0039Bm2H\rF{=Vu8\010\014f\013%Xu9\031 \000\000\000\000U7\032mf{]\\ 9Y.'3\025d 2\\N&{H\000\000\000\000\011fy\001Bd2\034LW\033L@a9\\mv\033%Bt2Y\004\007;%hh\020\033L\026k\024\000\000\003A @\000\034\n\020\000\001`R\000\000\016\005\036\000\000p*P\000 \020\010\004\002\001\000@ \020\n\005\002A P \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\010@@ \020\010\004\002\001\000@ \020\010\004\002\001\000@\010\004\002\001\000@ \020\010\004\002\004\002\001\000@ \020\010\020(\024\n\005\002A\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\020\010\004\002\001\000A\004B!\020H$\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@!\000@ \020\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\004\002\001\000@ \020\010\004\002A P(\024\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\002\020\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\002\001\000@ \020\010\004\002\001\000A\000@ \020\010\004\002\004\n\005\002A P \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000D\002\001\000@ \020!\020H$\022\011\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010 \020\010\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\022n3\032-fKQr\000\000\000\000\004s\005\034\000(\023j4J`\000\000\000\000\000\000\000\024\000\000\000\006 \000\000\001z<N4V)>b\023<\034R>b\036VQ'\031LTP\177u\011tSO$U]h\021OF%sPV \014(2+\rt\032\r\003C<M|\010\000\001\r\023\\-6P+8.M\034\023`>I\177su- NtGd`\035\031\035\"T~u~s_O\007\177\000\000\000\000\000\000\000\004\001\020\000\000\000\000\000\000\002\0012\000\000\000\000\000\000\001\001\017 \000\000\000\000\000\000@ab\000\000\000\000\000\000 >\r \000\000\000\000\000\020%h$\000\000\000\000\000\010\026\030K \000\000\000\000\004\014_/\004\000\000\000\000\002\007\033M2@\000\000\000\001\004\002P\027d\000\000\000\000B\033R\016n@\000\000\000!\033#)%\010\000\000\000\020T#\004sJ@\000\000\010-5s\010\036H\000\000\004\0301Wu\023\r\000\000\002\r\003C<M|\010\000\001\006v\032\025p]E\000\000CUp-V:;\020\000!x+\016#\002\"=\000\021\002Zxuq5F\020\010DXkIVq;j\004$\003aO\003\023:Y\022\022j-\0011|\024WY\011j<\020o\035Lvh\000\003\001o\000\000\030\021\\\000\001A\r`\000\014\011@\000\000`Fp\000\006\0047\000\0000#8\000\003\002\033@\000\030\021\\\000\001A\r`\000\014\003P\000\000`\036@\000\006\0047\000\0000\017\000\000\003\002$\000\000\030\021\\\000\001A\021\000\000\014\010N\000\000`Dp\000\006\004'\000\0000\"8\000\003\002\023@\000\030\021\034\000\001A\011`\000\014\010N\000\000`Dp\000\006\0047\000\0000#8\000\003\002\033@\000\030\021\\\000\001A\r`\000\014\010n\000\000`Fp\000\006\0047\000\0000#8\000\003\002\033@\000\030\020<\000\001A\r`\000\014\010n\000\000`Fp\000\006\0047\000\0000#8\000\003\002\033@\000\030\021\\\000\001A\r`\000\014\010n\000\000`Fp\000\006\003@\000\0000#8\000\003\002\033@\000\030\021\\\000\001A\r`\000\014\010n\000\000`5\020\000\006\0047\000\0000#8\000\003\001\\@\000\030\021\\\000\001A\r`\000\014\010n\000\000`Fp\000\006\0047\000\0000#8\000\003\002\033@\000\030\021\\\000\001A\r`\000\014\010n\000\000`*`\000\006\002E\000\0000#8\000\003\002\033@\000\030\021\\\000\001@P \000\014\005\n\000\000`Fp\000\006\0047\000\0000\016 \000\003\002\033@\000\030\007`\000\001A\031\000\000\014\007\032\000\000`\034@\000\006\0047\000\0000\037\020\000\003\002\033@\000\030\017\020\000\001A\r`\000\014\010n\000\000` p`0\030\014\006\003\001@`0\030\014\006\003\001@`0\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\014R+1H\000\000\000\000\000\000\030/0\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\026v\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030C\\\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\0108\000\000\030C@\000\001D\034\000\000\014!`\000\000b\016\000\000\006\020p\000\0001\007\000\000\003\0108\000\000\030C@\000\001D\034\000\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000V(\000\003\0106@\000\030*|\000\001D\033 \000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\0105\000\000\030*|\000\001BW`\000\014\027&\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\020a\000\0000Ux\000\003\005/@\000\030B`\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001D\025\000\000\014\025L\000\000b\rP\000\006\020m\000\0001\006h\000\003\010(@\000\030B\034\000\001BW`\000\014\025>\000\000b\011`\000\006\n_\000\0001\010@\000\003\005j\000\000\030D\024\000\001BW`\000\014\025>\000\000b\020 \000\006\n_\000\0001\007P\000\003\005/@\000\030*|\000\001D\030 \000\014\035\024\000\000aUP\000\006\016J\000\0000t\010\000\003\006V@\000\0308`\000\001C&`\000\014\0326\000\000aS0\000\006\r\033\000\0000iX\000\003\006M@\000\0304l\000\001C&`\000\014\0326\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\03054\000\001C+ \000\014\032Z\000\000as \000\006\r-\000\0000jh\000\003\006V@\000\030<\010\000\001C_\000\000\014\032Z\000\000aUP\000\006\016n\000\0000jh\000\003\006V@\000\03054\000\001C+ \000\014\035:\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\03054\000\001CU`\000\014\032Z\000\000aUP\000\006\r-\000\0000jh\000\003\007(@\000\03054\000\001C+ \000\014\032Z\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\030<h\000\001C+ \000\014\032Z\000\000aUP\000\006\017\002\000\0000w`\000\003\006V@\000\03054\000\001C[@\000\014\032Z\000\000aUP\000\006\r-\000\0000jh\000\003\007.@\000\03054\000\001C+ \000\014\032Z\000\000aUP\000\006\r-\000\0000u8\000\003\006V@\000\03054\000\001C+ \000\014\032Z\000\000aj\020\000\006\017M\000\0000{\030\000\003\007f@\000\030=L\000\001Cl`\000\014\0376\000\000az@\000\006\017T\000\0000} \000\003\007j\000\000\030>P\000\001Cu\000\000\014\037(\000\000b\0000\000\006\020\003\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000|0\000\003\007c\000\000\030>\030\000\001Cq@\000\014\037\014\000\000ax`\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=\000\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\037\014\000\000ax`\000\006\017F\000\0000|0\000\003\007c\000\000\030>\030\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\017 \000\000P\000\002\000\001\000\0000\000\020\000\005\000\001@\0008\000\020\000\004@\001 \000,\000\014\000\003 \000p\000\036\000\010\000\000\000\000\031\010L\000\001HW`\000\014E>\000\000d#\020\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d\014p\000\006 s\000\0002\025x\000\003\0207@\000\031\005\010\000\001HW`\000\014C\n\000\000d\031\020\000\006!I\000\0002\014H\000\003\020d@\000\031\006$\000\001H2 \000\014C\022\000\000d\031\020\000\006!I\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001H5`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0001a@\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\034\n\000\0002\025x\000\003\021/@\000\031\007,\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006!{\000\0002\020@\000\003\021/@\000\031\n|\000\001HW`\000\014B<\000\000d!\000\000\006\"_\000\0002\025x\000\003\016\003\000\000\031\n|\000\001H\035`\000\01482\000\000d&p\000\006\034\006\000\0002\025x\000\003\021\016@\000\031\n|\000\001G\002`\000\014E>\000\000d+p\000\006!\006\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@n3\000\000\006K9Rt<@\000\000\003\005\\\000\000\000\000ff \000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003?@\000\003\033|\000\000\031_`\000\001M~\000\000\014op\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031_`\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0066^\000\0003@\000\000\003\034\014@\000\032\010L\000\001P@\000\000\r\003t\000\000g\024p\000\006B\014\000\0004\020\000\000\003!\011Cds%2Kv\021\033ae\023v\021u5\n9Le%\007\177(O%\034z%-nA\014|2/\035\007\006\000bC\022Xo!@\000i- \000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004T\000\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i_ \000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\033z\000\000i_P\000\006M}\000\0004oh\000\003&~@\000\0327t\000\001S? \000\r\033z\000\000i_P\000\006M}\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R8`\000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\033n\000\000i\033P\000\006I]\000\0004U\020\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\0327P\000\001R7 \000\r\023:\000\000i]0\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006Mg\000\0004N \000\003$n@\000\032&t\000\001R7 \000\r\033H\000\000i[P\000\006I]\000\0004Mh\000\003&m\000\000\032&t\000\001S3 \000\r\025&\000\000iXP\000\006I]\000\0004Mh\000\003&a\000\000\032&t\000\001S.`\000\r\023:\000\000i\033P\000\006Mt\000\0004gH\000\003&\023\000\000\0323d\000\001S\011@\000\r\030L\000\000iIp\000\006LH\000\0004d@\000\003&$\000\000\0322 \000\001S\022\000\000\r\031\020\000\000iI\000\000\006L=\000\0004ch\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\033\000\000\0321X\000\001S\r@\000\r\030l\000\000iF`\000\006L6\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\004`\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iF`\000\006L6\000\0004c0\000\003&\033\000\000\0321X\000\001S\r@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004a\030\000\005\000\000\020\000\010\000\003\000\001\000\000(\000\014\000\003@\001\000\000$\000\n\000\002`\000`\000\032\000\007\000\001p\000@\000\000 PH4\"\025\014\000\000\030,&\033\021Jf\000\000\006\003\011Hf4\032MFsAd\000\000\000\000\000\000\000\000\000\000\000\000 \020\010\004\002\001",0x1151); private static final int[] _data4 = decodeData("\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006n]\000\0009Ah\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r]>\000\000s\003P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033;\004\000\001f\006`\000\000\000\000\000\000\000\000\000\000\000\000\000 \0006v\020\000\003L\014@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\0130\000\007\030\021\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\026 \000\0160\036\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L+@\000\034`4\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030[`\0009A8\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\01613@\000s\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034b_\000\001f\004`\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H\020\000\003L\031@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\0170\000\007\0301\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f `\000\0160j\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\00372\000\000\034aT\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006ne\000\0009B8\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r]L\000\000s\004P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034d\020\000\001f\022 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0009Gr\000\003L'@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\017`\000\007\030M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001f\0368\000\0161\026\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\0038-\000\000\034.l\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006p\\\000\0008]@\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\ra<\000\000q:P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033C\000\000\001bt@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0009H(\000\003Eg@\000\011\034\000\000\000\000\000\027(\000\000\000\000\000$ \000\000\000\000\000\035 \000\000\000\000\001\016@\000\000\000\000\005u\000\000\000\000\000\0040\000\000\000\000\000\027T\000\000\000\000\000\021\030\000\000\000\000\000\036P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030t\000\0009F`\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0161f\000\000s\rP\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034cH\000\001f\032aqjn:\032.Fc\025H>\000\000\000\0007\033\030\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:6\000\000\000\002\020\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\004\000\000\000\004\"\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0161|\000\000\000\010H\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S4\000\000\000\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007&p\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nMp\000\000\000E \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\034\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:8@\000\000\002\027\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006tr\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rif\000\000\000@\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033SP\000\000\001\000(\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'(\000\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nN`\000\000\004\001@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\035`\000\000\030\"\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:<\000\000\0000T\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006ty\000\000\000QD\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\000\000\000\001$\010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Sh\000\000\000A\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'X\000\000\001\002@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nO@\000\000\002\005 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\037 \000\000\004\013\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:?\000\000\000\030\013\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006t\177\000\000\00006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj\000\000\000\000a,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033T\004\000\000\001CX\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007(\020\000\000\003\010 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nP0\000\000\006\022`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]!\000\000\000\014-@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:B@\000\000\030k\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\006\000\000\0001v\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj\016\000\000\000d,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033T \000\000\001IX\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007(H\000\000\003\0250\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nQ \000\000\006.`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\"`\000\000\014u@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:F\000\000\000\031{\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\r\000\000\00036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rj\034\000\000\000f,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S0\000\000\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H \000\000\000!\020\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\017`\000\000\000B@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\033 \000\000\001\005@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:7\000\000\000\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006to\000\000\000\004\032\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\ri`\000\000\000\0108\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033SD\000\000\000\020x\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'\030\000\000\002\000 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nQp\000\000\002C`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]$\000\000\000\004\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:H@\000\000\010\021\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\001\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj$\000\000\000bh\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033TL\000\000\001GP\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007) \000\000\003\033 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nRP\000\000\006>@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]%@\000\000\004\006@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:K@\000\000\010\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006u\030\000\000\000\020$\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\002\000\000\001\000H\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Td\000\000\000B \000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007)P\000\000\001\004P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nS0\000\000\002\005`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]'\000\000\000\000\014@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:N@\000\000\000\032\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\036\000\000\000\0006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj>\000\000\000\000p\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U\000\000\000\000\001h\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*\010\000\000\000\003`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nT \000\000\000\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001](`\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:R\000\000\000\010 \000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u%\000\000\000\020B\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjL\000\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U\034\000\000\000B\020\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*@\000\000\001\0040\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\020 \000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]* \000\000\004\014@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:U\000\000\000\010\032\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u+\000\000\000\0206\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjX\000\000\000 p\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U4\000\000\000Ah\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*p\000\000\001\003p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nUp\000\000\002\007@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\033\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003LB\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030~\000\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\riZ\000\000\000\010\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S8\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0007&x\000\000\000 P\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nN\000\000\000\000A@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\034 \000\000\001\003@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:G@\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\003\000\000\000\020\002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj`\000\000\000 \010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034cl\000\000\000@\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009Gd\000\000\001\000@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nV\020\000\000\002\001 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001],@\000\000\004\003\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:Y@\000\000\014\007\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u4\000\000\000\030\020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjj\000\000\0000$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033UX\000\000\000`P\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007)\000\000\000\001\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nR\020\000\000\002\003\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]-`\000\000\020\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:\\\000\000\000 0\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u9\000\000\000A \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjt\000\000\001\003@\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Ul\000\000\002\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007+`\000\000\004\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nWP\000\000\0104\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]/@\000\000\020x\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:9@\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006tt\000\000\000 \002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj~\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V\000\000\000\001@@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,\010\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nX \000\000\006\n\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]0`\000\000\014\034\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:b\000\000\000\030@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uE\000\000\0001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk\014\000\000\000b`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V\034\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,@\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nY\020\000\000\006\036\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]2@\000\000\014D\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:e@\000\000\031\n\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uL\000\000\00020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk\032\000\000\000dh\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V8\000\000\001J@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,x\000\000\003\025 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nZ\000\000\000\006.\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]4 \000\000\014]\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:i\000\000\000\031H\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uS\000\000\0003\024\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk(\000\000\000f`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033VT\000\000\001N@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007-0\000\000\003\035 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nZp\000\000\006>\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_\026`\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L?@\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006|]\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rXB\000\000,\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033xL\000\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009HR\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\021 \000\002b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_E\000\000\005D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\n@\000\013\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\005`\000\026\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|.\000\000,0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033x`\000\000X`\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007qP\000\0012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000oc0\000\002e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\037`\000\005\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\016\000\000\n|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~\035\000\000\025x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|>\000\000-P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y\000\000\000[ \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009G\030\000\0016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\016@\000\002[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\034@\000\005\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L<@\000\013,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~\"\000\000\025H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|F\000\000+\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y\024\000\000V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007r0\000\001,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000oe\000\000\002^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_J@\000\005$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\026@\000\n\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006l\r\000\000\0258\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|^\000\000,p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y@\000\000Y@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H\002\000\001+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000of\020\000\002h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001[W \000\005*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\0037/@\000\nT\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~2\000\000\025 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\006@\000+P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033/P\000\000W \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007s\030\000\001)@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\016\\\000\002S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_M\000\000\005T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L:@\000\013(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~5\000\000\025`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|l\000\000+@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y`\000\000T \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007sH\000\0014@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000og0\000\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_O \000\005\034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\037\000\000\n4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~?\000\000\024`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r}\002\000\000)0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034cp\000\000R@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007t\030\000\001$@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ohP\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001_Q@\000\005\014\000\000\000\000\000\000\000\006~Y\000\0007uX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016*\022\000\000rT0\000\007\025=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034\001P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Laj^4$4s\033;n`\000\n\000\005@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000r[\000\000\007\025X\000\0009-P\000\003Jm\000\000\034Vp\000\001e7\000\000\016+<\000\000r[`\000\007\025`\000\0009.\000\000\003Jq\000\000\034W\010\000\001e9\000\000\016+H\000\000r\\`\000\007\025f\000\0009.@\000\003Jt\000\000\034W(\000\001e:@\000\016+X\000\000r]@\000\007\025n\000\0009.p\000\003Jx\000\000\034W@\000\001e<@\000\016+d\000\000r^@\000\007\025t\000\0009/0\000\003J{\000\000\034W`\000\001e>\000\000\016+t\000\000r_ \000\007\025|\000\0009/`\000\003J\177\000\000\034Wx\000\001e@\000\000\016,\000\000\000r` \000\007\026\002\000\00090 \000\003K\002\000\000\034X\030\000\001eA@\000\016,\020\000\000ra\000\000\007\026\n\000\00090P\000\003K\006\000\000\034X0\000\001eC@\000\016,\034\000\000rb\000\000\007\026\020\000\00091\020\000\003K\011\000\000\034XP\000\001eE\000\000\016,,\000\000rb`\000\007\026\030\000\00091@\000\003K\r\000\000\034Xh\000\001eG\000\000\016,8\000\000rc`\000\007\026\036\000\00092\000\000\003K\020\000\000\034Y\010\000\001eH@\000\016,H\000\000rd@\000\007\026&\000\000920\000\003K\024\000\000\034Y \000\001eJ@\000\016,T\000\000re@\000\007\026,\000\00092p\000\003K\027\000\000\034Y@\000\001eL\000\000\016,d\000\000rf \000\007\0264\000\00093 \000\003K\033\000\000\034YX\000\001eN\000\000\016,p\000\000rg \000\007\026:\000\00093`\000\003K\036\000\000\034Yx\000\001eO@\000\016-\000\000\000rh\000\000\007\026B\000\00094\020\000\003K\"\000\000\034Z\020\000\001eQ@\000\016-\014\000\000ri\000\000\007\026H\000\00094P\000\003K%\000\000\034Z0\000\001eS\000\000\016-\034\000\000ri`\000\007\026P\000\00095\000\000\003K)\000\000\034ZH\000\001eU\000\000\016-(\000\000rj`\000\007\026V\000\00095@\000\003K,\000\000\034Zh\000\001eV@\000\016-8\000\000rk@\000\007\026^\000\00095p\000\003K0\000\000\034[\000\000\001eX@\000\016-D\000\000rl@\000\007\026d\000\000960\000\003K3\000\000\034[ \000\001eZ\000\000\016-T\000\000rm \000\007\026l\000\00096`\000\003K7\000\000\034[8\000\001e\\\000\000\016-`\000\000rn \000\007\026r\000\00097 \000\003K:\000\000\034[X\000\001e]@\000\016-p\000\000ro\000\000\007\026z\000\00097P\000\003K>\000\000\034[p\000\001e_@\000\016-|\000\000rp\000\000\007\027\000\000\00098\020\000\003KA\000\000\034\\\020\000\001ea\000\000\016.\014\000\000rp`\000\007\027\010\000\00098@\000\003KE\000\000\034\\(\000\001ec\000\000\016.\030\000\000rq`\000\007\027\016\000\00099\000\000\003KH\000\000\034\\H\000\001ed@\000\016.(\000\000rr@\000\007\027\026\000\000990\000\003KL\000\000\034\\`\000\001ef@\000\016.4\000\000rs@\000\007\027\034\000\00099p\000\003KO\000\000\034]\000\000\001eh\000\000\016.D\000\000rt \000\007\027$\000\0009: \000\003KS\000\000\034]\030\000\001ej\000\000\016.P\000\000ru \000\007\027*\000\0009:`\000\003KV\000\000\034]8\000\001ek@\000\016.`\000\000rv\000\000\007\0272\000\0009;\020\000\003KZ\000\000\034]P\000\001em@\000\016.l\000\000rw\000\000\007\0278\000\0009;P\000\003K]\000\000\034]p\000\001eo\000\000\016.|\000\000rw`\000\007\027@\000\0009<\000\000\003Ka\000\000\034^\010\000\001eq\000\000\016/\010\000\000rx`\000\007\027F\000\0009<@\000\003Kd\000\000\034^(\000\001er@\000\016/\030\000\000ry@\000\007\027N\000\0009<p\000\003Kh\000\000\034^@\000\001et@\000\016/$\000\000rz@\000\007\027T\000\0009=0\000\003Kk\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 Th4J$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\\R\000\000m\000`\000\006h\006\000\0006@0\000\0034\003\000\000\033 \030\000\001Z\001@\000\rP\014\000\000m\000`\000\006h\006\017w{}~\177?_ow{}~\177?_`\000\000\000\000\000\032?\177\177^8\000\000\001r`\000\000\000\002\000\000\000\000\000\000\000\0005\177\177\177<p\000\000\003e@\000\000\000\004\000\000\000\000\000\020\010\004\002\001",0x6b0); private static final int[] _data5 = decodeData("\000\000\000\000\000\000\000\000 \000\000\000\002\000\000\000\000@\037\177\177\177~w1\000\000\0078\000\000\000\000\000\000\000@\000\000\000\004\000\000\000\000(@\000\000\000\000\000\000\000\022 \000\000\000\000\000\000\000\010\020\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\001D\000\000\000\000\000\000\000\000R\000\000\000\000\000\000\000\000!\000\000\000\000\000\000\000\000\014@\000\000\000\000\000\000\000\004 \000\000\000\000\000\000\000\014\017\000\000\000\000\000\000\000\011\007 \000\000\000\000\000\000\003#@\000\000\000\000\000\000\002aP\000\000\000\000\000\000\001(h\000\000\000\000\000\000\000P4\000\000\000\000\000\000\000&\032\000\000\000\000\000\000\000\033\014\000\000\000\000\000\000\000\r\006\000\000\000\000\000\000\000\006\"`\000\000\000\000\000\000\003\0010\000\000\000\000\000\000\0018X\000\000\000\000\000\000\000@(\000\000\000\000\000\000\000\036\024\000\000\000\000\000\000\000\016\n\000\000\000\000\000\000\000\020\004@\000\000\000\000\000\000\007b \000\000\000\000\000\000\003a\020\000\000\000\000\000\000\001hH\000\000\000\000\000\000\001\004 \000\000\000\000\000\000\0008\016\000\000\000\000\000\000\000\"\006\000\000\000\000\000\000\000\022B@\000\000\000\000\000\000\011\001 \000\000\000\000\000\000\0040@\000\000\000\000\000\000\000X\030\000\000\000\000\000\000\000D\010\000\000\000\000\000\000\000\002\002\000\000\000\006\013IFt0[@\000\003\005dc1[n0\000\001Br1\\m\026p\000\000\000\000\000\000\013\177@\000\000\000\000\000\000\001\177`\000\000\000\000\000\000\001\000$\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000 \033|\000\000\000\000\000\0000\014\000\000\000\000\000\000\000\000\000\014 \000\000\000b@\000\000\006\014\000\000\0000@\000\000\016<x\000\000\000\000(\000\000\000\000 \000\000\000\002s1\\@\007\023\005n\0008\031.@\003Mjb=\033mf(\0014o7\031 \000\000\000\000s1\\O\006{H\000\0006\034n \003\025dr7\\@\000\000\001Jo9\000\0146\0234\000b9\033\000\006\023IB\0000\\n \003\005fl\000\030-f \000l5\034\014&`\000\000\000\000\003Ex\007\023\010\000\000\000\000\000\000!@p\000\000\000\000r9\020\177y\020~jD!41?|H?5\"\020Z\030?\r|Cd \000uN\017~\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\003\177`\000\000\000\000\000\000\005\177`\000\000\000\000\000\000\000\177\020VN\\2\026h\"?T^i2#X\033k\037l!V5\003 =(Ovt.7\nL\020\033G|\022$I\022\000 \177s~U*U*U*Pm~E4\"\013\r&a<\177-o\013*-wv4?Yl\036*{R4m\037o\016\0347xF\0268Oy\031Lf3\030uq\007\177\000\000\000\000\000\000\000\003\177@\000\000\000\000\000\000\001\177`\000\000\000\000\000\000\003\177p\000\000\000\000\000\000\000Gw\177\177~\000\000\000\000\037x\000\000\000\000\000\000\0001}\177\177\177@\000\000\000\017\177\000\000\000\000\000\000\000\004\000$C{*\021\005QA\177r!}U\010Bh`~\002\036x!_o\\\022?${|\007(\006e\010\037i\020\"EUQ\017\035Oy\034\nT\035\010\"\025'}&X$\003u[oS~\025*U*U*U)~g8bl%i\024\010\177f\003\033\0038h\0052@\000\n\\Ybf\025H \000g\"8r\024-%O~\000\000\000\000\000\000\000\007I\r\030L3\n\027\000s\177\000\000\000\000\000\000\000\001\177r!}U\010Bh`y\021S\011F1\"p\016~\033y\007H@\001k\034\037|\000\000\000\000\000\000\000\017`#o\004\033}{B'tO?@u\000lQ\003}\022\004(ZZ\021sY\177\023A*CQ\004\"T\177Tk\004@>[=z?bU*U*U*U\037lw\014-D]\022A\017|`307\r\000V(\000\001+K\034,bY\004\000\014t'\016\"ETY\177@\000\000\000\000\000\000\000\177i\020~jD!40?x\000\000\000\000\000\000\000_|\000\000\000\000\000\000\000\037F~!r\020\000:g\007\1778U\016`\000\000\000\003rR\\\013|\027;t!\177 \000\000\000\000\000\000\000\177U*U*U*U*?p\000\000\000\000\000\000\000\037}bT;\024W\002\177\020h\000\000\000\000\000\000\000\007|SxPJ\"S]s~6\014JIr;6)\177\"t0*#T\010\004\177U*U*\030y\031\032?m[6m[>W\177\037xf3\031Lf3\001P\001\000\000\000\000\000\000\000\007~v\034\023`\000\000\000\013qx_`\n\026`\037)\177]G\004w\007 \037ty\027\nQlR\\\013|\001R[C|\027cfY\037yEd\030\000\000\000\000\017|br\013}z\034{wb\002qB\014T\033\007\023s\030ni9/TM\001zw= q:&_D~\021+\032Ur.xX?30-A5z{\023\037q*U*U*U\037\020\000\000\000\000\000\000\000\000\007\177I\007vT \000\000\003nBha\r\030L3\011w!40FL\000\000\000w#\014bE`\033Af?r\027f\006n'\021\003\037x\000\000\000\000\000\000\000\016t1L(\\\000\000\000\007\027\\\0164%\020\0228\024\013@\000\000\000\000\000\000\001\177N\000\000\000\000\000\000\000\177R\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000^j\037.Mz\0208j\017D\036tz{4Xq\007i\023y\037\000N\024USwh\003 \014rbY\001}-A6\005X\025\013\\\177%*U*U*U\030?p\000\000\000\000\000\000\000\037\034\000\000\000\000\000\000\000\020.\000\000\000\000\000\000\000\007|\000\000\000\000\000\000\000\004\001\000\000\000\000\000\000\000\001\177@\000\000\000\000\000\000\000\177p\000\000\000\000\000\000\000=rv'%V?*|\037\026\\^4(W\034uOXqo\r/1\177\037'rP\006@\031`X:S|\004\"\021\010D\037\n1\177\nU*U*U*$\177`\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000_|\000\000\000\000\000\000\000\017}\022\017m(D\026F\007H\r\030L3\n\027\000{wMkKmX\n7\031|(~D(\006y\025\030~C\"6\036/\023\024\002?6[$,JX\006(\037eLO$\020\rV\033Ox\021\010D\"\020\177\036GoY)`t_^ZCxJp\017\031<\024~I|`&{FQQ\003 ~Wmr\037n\004\014*?A\011\\>K:\011\023\037jt\033PnfA\177\017zU*U*U*Xoc?\020y\010\000\0353@\000\000\000\001\000\000\000\000\002\r \000\000\000\000\000\000\000\003%7\007x/GM2~\033y\007H@\001k\034\036$\000\000\000\000\000\000\000\000\000sBP\000\007\023N\000\0009\034q\177\177\177\177p\000\010\000\000\000\001`pZ\007`\000\000\000\000\000\000\000\177x\000\000\000\000\000\000\000?i!tv\033=\006a\037qQ\"D-AHYOz4 M!\037<~g\177\000\000\000\000\000\000\000\004\001\020\000\000\000\000\000\000\002\0008\000\000\000\000\000\000\001\000\024\000\000\000\000\000\000\000?p\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\017~\000\000\000\000\000\000\000\010\002 \000\000\000\000\000\000\000\000\031H\000?p\000\000\005\177@\000\000\000\000\000\000\000\177`\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000 |\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\027\177\000\000\000\000\000\000\000\004\016\177\177\177\177p\000\000\002\007@\000\000\000\000\000\000\000\177_\177\177rJ\001V*?p\000\000\003-?J5\037s\177\177|R@5J@\000jp\000\002\001",0x1df); private final void trampoline() throws ExecutionException { while(state == RUNNING) { switch(pc>>>9) { case 0x80: run_10000(); break; case 0x81: run_10200(); break; case 0x82: run_10400(); break; case 0x83: run_10600(); break; case 0x84: run_10800(); break; case 0x85: run_10a00(); break; case 0x86: run_10c00(); break; case 0x87: run_10e00(); break; case 0x88: run_11000(); break; case 0x89: run_11200(); break; case 0x8a: run_11400(); break; case 0x8b: run_11600(); break; case 0x8c: run_11800(); break; case 0x8d: run_11a00(); break; case 0x8e: run_11c00(); break; case 0x8f: run_11e00(); break; case 0x90: run_12000(); break; case 0x91: run_12200(); break; case 0x92: run_12400(); break; case 0x93: run_12600(); break; case 0x94: run_12800(); break; case 0x95: run_12a00(); break; case 0x96: run_12c00(); break; case 0x97: run_12e00(); break; case 0x98: run_13000(); break; case 0x99: run_13200(); break; case 0x9a: run_13400(); break; case 0x9b: run_13600(); break; case 0x9c: run_13800(); break; case 0x9d: run_13a00(); break; case 0x9e: run_13c00(); break; case 0x9f: run_13e00(); break; case 0xa0: run_14000(); break; case 0xa1: run_14200(); break; case 0xa2: run_14400(); break; case 0xa3: run_14600(); break; case 0xa4: run_14800(); break; case 0xa5: run_14a00(); break; case 0xa6: run_14c00(); break; case 0xa7: run_14e00(); break; case 0xa8: run_15000(); break; case 0xa9: run_15200(); break; case 0xaa: run_15400(); break; case 0xab: run_15600(); break; case 0xac: run_15800(); break; case 0xad: run_15a00(); break; case 0xae: run_15c00(); break; case 0xaf: run_15e00(); break; case 0xb0: run_16000(); break; case 0xb1: run_16200(); break; case 0xb2: run_16400(); break; case 0xb3: run_16600(); break; case 0xb4: run_16800(); break; case 0xb5: run_16a00(); break; case 0xb6: run_16c00(); break; case 0xb7: run_16e00(); break; case 0xb8: run_17000(); break; case 0xb9: run_17200(); break; case 0xba: run_17400(); break; case 0xbb: run_17600(); break; case 0xbc: run_17800(); break; case 0xbd: run_17a00(); break; case 0xbe: run_17c00(); break; case 0xbf: run_17e00(); break; case 0xc0: run_18000(); break; case 0xc1: run_18200(); break; case 0xc2: run_18400(); break; case 0xc3: run_18600(); break; case 0xc4: run_18800(); break; case 0xc5: run_18a00(); break; case 0xc6: run_18c00(); break; case 0xc7: run_18e00(); break; case 0xc8: run_19000(); break; case 0xc9: run_19200(); break; case 0xca: run_19400(); break; case 0xcb: run_19600(); break; case 0xcc: run_19800(); break; case 0xcd: run_19a00(); break; case 0xce: run_19c00(); break; case 0xcf: run_19e00(); break; case 0xd0: run_1a000(); break; case 0xd1: run_1a200(); break; case 0xd2: run_1a400(); break; case 0xd3: run_1a600(); break; case 0xd4: run_1a800(); break; case 0xd5: run_1aa00(); break; case 0xd6: run_1ac00(); break; case 0xd7: run_1ae00(); break; case 0xd8: run_1b000(); break; case 0xd9: run_1b200(); break; case 0xda: run_1b400(); break; case 0xdb: run_1b600(); break; case 0xdc: run_1b800(); break; case 0xdd: run_1ba00(); break; case 0xde: run_1bc00(); break; case 0xdf: run_1be00(); break; case 0xe0: run_1c000(); break; case 0xe1: run_1c200(); break; case 0xe2: run_1c400(); break; case 0xe3: run_1c600(); break; case 0xe4: run_1c800(); break; case 0xe5: run_1ca00(); break; case 0xe6: run_1cc00(); break; case 0xe7: run_1ce00(); break; case 0xe8: run_1d000(); break; case 0xe9: run_1d200(); break; case 0xea: run_1d400(); break; case 0xeb: run_1d600(); break; case 0xec: run_1d800(); break; case 0xed: run_1da00(); break; case 0xee: run_1dc00(); break; case 0xef: run_1de00(); break; case 0xf0: run_1e000(); break; case 0xf1: run_1e200(); break; case 0xf2: run_1e400(); break; case 0xf3: run_1e600(); break; case 0xf4: run_1e800(); break; case 0xf5: run_1ea00(); break; case 0xf6: run_1ec00(); break; case 0xf7: run_1ee00(); break; case 0xf8: run_1f000(); break; case 0xf9: run_1f200(); break; case 0xfa: run_1f400(); break; case 0xfb: run_1f600(); break; case 0xfc: run_1f800(); break; case 0xfd: run_1fa00(); break; case 0xfe: run_1fc00(); break; case 0xff: run_1fe00(); break; case 0x100: run_20000(); break; case 0x101: run_20200(); break; case 0x102: run_20400(); break; case 0x103: run_20600(); break; case 0x104: run_20800(); break; case 0x105: run_20a00(); break; case 0x106: run_20c00(); break; case 0x107: run_20e00(); break; case 0x108: run_21000(); break; case 0x109: run_21200(); break; case 0x10a: run_21400(); break; case 0x10b: run_21600(); break; case 0x10c: run_21800(); break; case 0x10d: run_21a00(); break; case 0x10e: run_21c00(); break; case 0x10f: run_21e00(); break; case 0x110: run_22000(); break; case 0x111: run_22200(); break; case 0x112: run_22400(); break; case 0x113: run_22600(); break; case 0x114: run_22800(); break; case 0x115: run_22a00(); break; case 0x116: run_22c00(); break; case 0x117: run_22e00(); break; case 0x118: run_23000(); break; case 0x119: run_23200(); break; case 0x11a: run_23400(); break; case 0x11b: run_23600(); break; case 0x11c: run_23800(); break; case 0x11d: run_23a00(); break; case 0x11e: run_23c00(); break; case 0x11f: run_23e00(); break; case 0x120: run_24000(); break; case 0x121: run_24200(); break; case 0x122: run_24400(); break; case 0x123: run_24600(); break; case 0x124: run_24800(); break; case 0x125: run_24a00(); break; case 0x126: run_24c00(); break; case 0x127: run_24e00(); break; case 0x128: run_25000(); break; case 0x129: run_25200(); break; case 0x12a: run_25400(); break; case 0x12b: run_25600(); break; case 0x12c: run_25800(); break; case 0x12d: run_25a00(); break; case 0x12e: run_25c00(); break; case 0x12f: run_25e00(); break; case 0x130: run_26000(); break; case 0x131: run_26200(); break; case 0x132: run_26400(); break; case 0x133: run_26600(); break; case 0x134: run_26800(); break; case 0x135: run_26a00(); break; case 0x136: run_26c00(); break; case 0x137: run_26e00(); break; case 0x138: run_27000(); break; case 0x139: run_27200(); break; case 0x13a: run_27400(); break; case 0x13b: run_27600(); break; case 0x13c: run_27800(); break; case 0x13d: run_27a00(); break; case 0x13e: run_27c00(); break; case 0x13f: run_27e00(); break; case 0x140: run_28000(); break; case 0x141: run_28200(); break; case 0x142: run_28400(); break; case 0x143: run_28600(); break; case 0x144: run_28800(); break; case 0x145: run_28a00(); break; case 0x146: run_28c00(); break; case 0x147: run_28e00(); break; case 0x148: run_29000(); break; case 0x149: run_29200(); break; case 0x14a: run_29400(); break; case 0x14b: run_29600(); break; case 0x14c: run_29800(); break; case 0x14d: run_29a00(); break; case 0x14e: run_29c00(); break; case 0x14f: run_29e00(); break; case 0x150: run_2a000(); break; case 0x151: run_2a200(); break; case 0x152: run_2a400(); break; case 0x153: run_2a600(); break; case 0x154: run_2a800(); break; case 0x155: run_2aa00(); break; case 0x156: run_2ac00(); break; case 0x157: run_2ae00(); break; case 0x158: run_2b000(); break; case 0x159: run_2b200(); break; case 0x15a: run_2b400(); break; case 0x15b: run_2b600(); break; case 0x15c: run_2b800(); break; case 0x15d: run_2ba00(); break; case 0x15e: run_2bc00(); break; case 0x15f: run_2be00(); break; case 0x160: run_2c000(); break; case 0x161: run_2c200(); break; case 0x162: run_2c400(); break; case 0x163: run_2c600(); break; case 0x164: run_2c800(); break; case 0x165: run_2ca00(); break; case 0x166: run_2cc00(); break; case 0x167: run_2ce00(); break; case 0x168: run_2d000(); break; case 0x169: run_2d200(); break; case 0x16a: run_2d400(); break; case 0x16b: run_2d600(); break; case 0x16c: run_2d800(); break; case 0x16d: run_2da00(); break; case 0x16e: run_2dc00(); break; case 0x16f: run_2de00(); break; case 0x170: run_2e000(); break; case 0x171: run_2e200(); break; case 0x172: run_2e400(); break; case 0x173: run_2e600(); break; case 0x174: run_2e800(); break; case 0x175: run_2ea00(); break; case 0x176: run_2ec00(); break; case 0x177: run_2ee00(); break; case 0x178: run_2f000(); break; case 0x179: run_2f200(); break; case 0x17a: run_2f400(); break; case 0x17b: run_2f600(); break; case 0x17c: run_2f800(); break; case 0x17d: run_2fa00(); break; case 0x17e: run_2fc00(); break; case 0x17f: run_2fe00(); break; case 0x180: run_30000(); break; case 0x181: run_30200(); break; case 0x182: run_30400(); break; case 0x183: run_30600(); break; case 0x184: run_30800(); break; case 0x185: run_30a00(); break; case 0x186: run_30c00(); break; case 0x187: run_30e00(); break; case 0x188: run_31000(); break; case 0x189: run_31200(); break; case 0x18a: run_31400(); break; case 0x18b: run_31600(); break; case 0x18c: run_31800(); break; case 0x18d: run_31a00(); break; case 0x18e: run_31c00(); break; case 0x18f: run_31e00(); break; case 0x190: run_32000(); break; case 0x191: run_32200(); break; case 0x192: run_32400(); break; case 0x193: run_32600(); break; case 0x194: run_32800(); break; case 0x195: run_32a00(); break; case 0x196: run_32c00(); break; case 0x197: run_32e00(); break; case 0x198: run_33000(); break; case 0x199: run_33200(); break; case 0x19a: run_33400(); break; case 0x19b: run_33600(); break; case 0x19c: run_33800(); break; case 0x19d: run_33a00(); break; case 0x19e: run_33c00(); break; case 0x19f: run_33e00(); break; case 0x1a0: run_34000(); break; case 0x1a1: run_34200(); break; case 0x1a2: run_34400(); break; case 0x1a3: run_34600(); break; case 0x1a4: run_34800(); break; case 0x1a5: run_34a00(); break; case 0x1a6: run_34c00(); break; case 0x1a7: run_34e00(); break; case 0x1a8: run_35000(); break; case 0x1a9: run_35200(); break; case 0x1aa: run_35400(); break; case 0x1ab: run_35600(); break; case 0x1ac: run_35800(); break; case 0x1ad: run_35a00(); break; case 0x1ae: run_35c00(); break; case 0x1af: run_35e00(); break; case 0x1b0: run_36000(); break; case 0x1b1: run_36200(); break; case 0x1b2: run_36400(); break; case 0x1b3: run_36600(); break; case 0x1b4: run_36800(); break; case 0x1b5: run_36a00(); break; case 0x1b6: run_36c00(); break; case 0x1b7: run_36e00(); break; case 0x1b8: run_37000(); break; case 0x1b9: run_37200(); break; case 0x1ba: run_37400(); break; case 0x1bb: run_37600(); break; case 0x1bc: run_37800(); break; case 0x1bd: run_37a00(); break; case 0x1be: run_37c00(); break; case 0x1bf: run_37e00(); break; case 0x1c0: run_38000(); break; case 0x1c1: run_38200(); break; case 0x1c2: run_38400(); break; case 0x1c3: run_38600(); break; case 0x1c4: run_38800(); break; case 0x1c5: run_38a00(); break; case 0x1c6: run_38c00(); break; case 0x1c7: run_38e00(); break; case 0x1c8: run_39000(); break; case 0x1c9: run_39200(); break; case 0x1ca: run_39400(); break; case 0x1cb: run_39600(); break; case 0x1cc: run_39800(); break; case 0x1cd: run_39a00(); break; case 0x1ce: run_39c00(); break; case 0x1cf: run_39e00(); break; case 0x1d0: run_3a000(); break; case 0x1d1: run_3a200(); break; case 0x1d2: run_3a400(); break; case 0x1d3: run_3a600(); break; case 0x1d4: run_3a800(); break; case 0x1d5: run_3aa00(); break; case 0x1d6: run_3ac00(); break; case 0x1d7: run_3ae00(); break; case 0x1d8: run_3b000(); break; case 0x1d9: run_3b200(); break; case 0x1da: run_3b400(); break; case 0x1db: run_3b600(); break; case 0x1dc: run_3b800(); break; case 0x1dd: run_3ba00(); break; case 0x1de: run_3bc00(); break; case 0x1df: run_3be00(); break; case 0x1e0: run_3c000(); break; case 0x1e1: run_3c200(); break; case 0x1e2: run_3c400(); break; case 0x1e3: run_3c600(); break; case 0x1e4: run_3c800(); break; case 0x1e5: run_3ca00(); break; case 0x1e6: run_3cc00(); break; case 0x1e7: run_3ce00(); break; case 0x1e8: run_3d000(); break; case 0x1e9: run_3d200(); break; case 0x1ea: run_3d400(); break; case 0x1eb: run_3d600(); break; case 0x1ec: run_3d800(); break; case 0x1ed: run_3da00(); break; case 0x1ee: run_3dc00(); break; case 0x1ef: run_3de00(); break; case 0x1f0: run_3e000(); break; case 0x1f1: run_3e200(); break; case 0x1f2: run_3e400(); break; case 0x1f3: run_3e600(); break; case 0x1f4: run_3e800(); break; case 0x1f5: run_3ea00(); break; case 0x1f6: run_3ec00(); break; case 0x1f7: run_3ee00(); break; case 0x1f8: run_3f000(); break; case 0x1f9: run_3f200(); break; case 0x1fa: run_3f400(); break; case 0x1fb: run_3f600(); break; case 0x1fc: run_3f800(); break; case 0x1fd: run_3fa00(); break; case 0x1fe: run_3fc00(); break; case 0x1ff: run_3fe00(); break; case 0x200: run_40000(); break; case 0x201: run_40200(); break; case 0x202: run_40400(); break; case 0x203: run_40600(); break; case 0x204: run_40800(); break; case 0x205: run_40a00(); break; case 0x206: run_40c00(); break; case 0x207: run_40e00(); break; case 0x208: run_41000(); break; case 0x209: run_41200(); break; case 0x20a: run_41400(); break; case 0x20b: run_41600(); break; case 0x20c: run_41800(); break; case 0x20d: run_41a00(); break; case 0x20e: run_41c00(); break; case 0x20f: run_41e00(); break; case 0x210: run_42000(); break; case 0x211: run_42200(); break; case 0x212: run_42400(); break; case 0x213: run_42600(); break; case 0x214: run_42800(); break; case 0x215: run_42a00(); break; case 0x216: run_42c00(); break; case 0x217: run_42e00(); break; case 0x218: run_43000(); break; case 0x219: run_43200(); break; case 0x21a: run_43400(); break; case 0x21b: run_43600(); break; case 0x21c: run_43800(); break; case 0x21d: run_43a00(); break; case 0x21e: run_43c00(); break; case 0x21f: run_43e00(); break; case 0x220: run_44000(); break; case 0x221: run_44200(); break; case 0x222: run_44400(); break; case 0x223: run_44600(); break; case 0x224: run_44800(); break; case 0x225: run_44a00(); break; case 0x226: run_44c00(); break; case 0x227: run_44e00(); break; case 0x228: run_45000(); break; case 0x229: run_45200(); break; case 0x22a: run_45400(); break; case 0x22b: run_45600(); break; case 0x22c: run_45800(); break; case 0x22d: run_45a00(); break; case 0x22e: run_45c00(); break; case 0x22f: run_45e00(); break; case 0x230: run_46000(); break; case 0x231: run_46200(); break; case 0x232: run_46400(); break; case 0x233: run_46600(); break; case 0x234: run_46800(); break; case 0x235: run_46a00(); break; case 0x236: run_46c00(); break; case 0x237: run_46e00(); break; case 0x238: run_47000(); break; case 0x239: run_47200(); break; case 0x23a: run_47400(); break; case 0x23b: run_47600(); break; case 0x23c: run_47800(); break; case 0x23d: run_47a00(); break; case 0x23e: run_47c00(); break; case 0x23f: run_47e00(); break; case 0x240: run_48000(); break; case 0x241: run_48200(); break; case 0x242: run_48400(); break; case 0x243: run_48600(); break; case 0x244: run_48800(); break; case 0x245: run_48a00(); break; case 0x246: run_48c00(); break; case 0x247: run_48e00(); break; case 0x248: run_49000(); break; case 0x249: run_49200(); break; case 0x24a: run_49400(); break; case 0x24b: run_49600(); break; case 0x24c: run_49800(); break; case 0x24d: run_49a00(); break; case 0x24e: run_49c00(); break; case 0x24f: run_49e00(); break; case 0x250: run_4a000(); break; case 0x251: run_4a200(); break; case 0x252: run_4a400(); break; case 0x253: run_4a600(); break; case 0x254: run_4a800(); break; case 0x255: run_4aa00(); break; case 0x256: run_4ac00(); break; case 0x257: run_4ae00(); break; case 0x258: run_4b000(); break; case 0x259: run_4b200(); break; case 0x25a: run_4b400(); break; case 0x25b: run_4b600(); break; case 0x25c: run_4b800(); break; case 0x25d: run_4ba00(); break; case 0x25e: run_4bc00(); break; case 0x25f: run_4be00(); break; case 0x260: run_4c000(); break; case 0x261: run_4c200(); break; case 0x262: run_4c400(); break; case 0x263: run_4c600(); break; case 0x264: run_4c800(); break; case 0x265: run_4ca00(); break; case 0x266: run_4cc00(); break; case 0x267: run_4ce00(); break; case 0x268: run_4d000(); break; case 0x269: run_4d200(); break; case 0x26a: run_4d400(); break; case 0x26b: run_4d600(); break; case 0x26c: run_4d800(); break; case 0x26d: run_4da00(); break; case 0x26e: run_4dc00(); break; case 0x26f: run_4de00(); break; case 0x270: run_4e000(); break; case 0x271: run_4e200(); break; case 0x272: run_4e400(); break; case 0x273: run_4e600(); break; case 0x274: run_4e800(); break; case 0x275: run_4ea00(); break; case 0x276: run_4ec00(); break; case 0x277: run_4ee00(); break; case 0x278: run_4f000(); break; case 0x279: run_4f200(); break; case 0x27a: run_4f400(); break; case 0x27b: run_4f600(); break; case 0x27c: run_4f800(); break; case 0x27d: run_4fa00(); break; case 0x27e: run_4fc00(); break; case 0x27f: run_4fe00(); break; case 0x280: run_50000(); break; case 0x281: run_50200(); break; case 0x282: run_50400(); break; case 0x283: run_50600(); break; case 0x284: run_50800(); break; case 0x285: run_50a00(); break; case 0x286: run_50c00(); break; case 0x287: run_50e00(); break; case 0x288: run_51000(); break; case 0x289: run_51200(); break; case 0x28a: run_51400(); break; case 0x28b: run_51600(); break; case 0x28c: run_51800(); break; case 0x28d: run_51a00(); break; case 0x28e: run_51c00(); break; case 0x28f: run_51e00(); break; case 0x290: run_52000(); break; case 0x291: run_52200(); break; case 0x292: run_52400(); break; case 0x293: run_52600(); break; case 0x294: run_52800(); break; case 0x295: run_52a00(); break; case 0x296: run_52c00(); break; case 0x297: run_52e00(); break; case 0x298: run_53000(); break; case 0x299: run_53200(); break; case 0x29a: run_53400(); break; case 0x29b: run_53600(); break; case 0x29c: run_53800(); break; case 0x29d: run_53a00(); break; case 0x29e: run_53c00(); break; case 0x29f: run_53e00(); break; case 0x2a0: run_54000(); break; case 0x2a1: run_54200(); break; case 0x2a2: run_54400(); break; case 0x2a3: run_54600(); break; case 0x2a4: run_54800(); break; case 0x2a5: run_54a00(); break; case 0x2a6: run_54c00(); break; case 0x2a7: run_54e00(); break; case 0x2a8: run_55000(); break; case 0x2a9: run_55200(); break; case 0x2aa: run_55400(); break; case 0x2ab: run_55600(); break; case 0x2ac: run_55800(); break; case 0x2ad: run_55a00(); break; case 0x2ae: run_55c00(); break; case 0x2af: run_55e00(); break; case 0x2b0: run_56000(); break; case 0x2b1: run_56200(); break; case 0x2b2: run_56400(); break; case 0x2b3: run_56600(); break; case 0x2b4: run_56800(); break; case 0x2b5: run_56a00(); break; case 0x2b6: run_56c00(); break; case 0x2b7: run_56e00(); break; case 0x2b8: run_57000(); break; case 0x2b9: run_57200(); break; case 0x2ba: run_57400(); break; case 0x2bb: run_57600(); break; case 0x2bc: run_57800(); break; case 0x2bd: run_57a00(); break; case 0x2be: run_57c00(); break; case 0x2bf: run_57e00(); break; case 0x2c0: run_58000(); break; case 0x2c1: run_58200(); break; case 0x2c2: run_58400(); break; case 0x2c3: run_58600(); break; case 0x2c4: run_58800(); break; case 0x2c5: run_58a00(); break; case 0x2c6: run_58c00(); break; case 0x2c7: run_58e00(); break; case 0x2c8: run_59000(); break; case 0x2c9: run_59200(); break; case 0x2ca: run_59400(); break; case 0x2cb: run_59600(); break; case 0x2cc: run_59800(); break; case 0x2cd: run_59a00(); break; case 0x2ce: run_59c00(); break; case 0x2cf: run_59e00(); break; case 0x2d0: run_5a000(); break; case 0x2d1: run_5a200(); break; case 0x2d2: run_5a400(); break; case 0x2d3: run_5a600(); break; case 0x2d4: run_5a800(); break; case 0x2d5: run_5aa00(); break; case 0x2d6: run_5ac00(); break; case 0x2d7: run_5ae00(); break; case 0x2d8: run_5b000(); break; case 0x2d9: run_5b200(); break; case 0x2da: run_5b400(); break; case 0x2db: run_5b600(); break; case 0x2dc: run_5b800(); break; case 0x2dd: run_5ba00(); break; case 0x2de: run_5bc00(); break; case 0x2df: run_5be00(); break; case 0x2e0: run_5c000(); break; case 0x2e1: run_5c200(); break; case 0x2e2: run_5c400(); break; case 0x2e3: run_5c600(); break; case 0x2e4: run_5c800(); break; case 0x2e5: run_5ca00(); break; case 0x2e6: run_5cc00(); break; case 0x2e7: run_5ce00(); break; case 0x2e8: run_5d000(); break; case 0x2e9: run_5d200(); break; case 0x2ea: run_5d400(); break; case 0x2eb: run_5d600(); break; case 0x2ec: run_5d800(); break; case 0x2ed: run_5da00(); break; case 0x2ee: run_5dc00(); break; case 0x2ef: run_5de00(); break; case 0x2f0: run_5e000(); break; case 0x2f1: run_5e200(); break; case 0x2f2: run_5e400(); break; case 0x2f3: run_5e600(); break; case 0x2f4: run_5e800(); break; case 0x2f5: run_5ea00(); break; case 0x2f6: run_5ec00(); break; case 0x2f7: run_5ee00(); break; case 0x2f8: run_5f000(); break; case 0x2f9: run_5f200(); break; case 0x2fa: run_5f400(); break; case 0x2fb: run_5f600(); break; case 0x2fc: run_5f800(); break; case 0x2fd: run_5fa00(); break; case 0x2fe: run_5fc00(); break; case 0x2ff: run_5fe00(); break; case 0x300: run_60000(); break; case 0x301: run_60200(); break; case 0x302: run_60400(); break; case 0x303: run_60600(); break; case 0x304: run_60800(); break; case 0x305: run_60a00(); break; case 0x306: run_60c00(); break; case 0x307: run_60e00(); break; case 0x308: run_61000(); break; case 0x309: run_61200(); break; case 0x30a: run_61400(); break; case 0x30b: run_61600(); break; case 0x30c: run_61800(); break; case 0x30d: run_61a00(); break; case 0x30e: run_61c00(); break; case 0x30f: run_61e00(); break; case 0x310: run_62000(); break; case 0x311: run_62200(); break; case 0x312: run_62400(); break; case 0x313: run_62600(); break; case 0x314: run_62800(); break; case 0x315: run_62a00(); break; case 0x316: run_62c00(); break; case 0x317: run_62e00(); break; case 0x318: run_63000(); break; case 0x319: run_63200(); break; case 0x31a: run_63400(); break; case 0x31b: run_63600(); break; case 0x31c: run_63800(); break; case 0x31d: run_63a00(); break; case 0x31e: run_63c00(); break; case 0x31f: run_63e00(); break; case 0x320: run_64000(); break; case 0x321: run_64200(); break; case 0x322: run_64400(); break; case 0x323: run_64600(); break; case 0x324: run_64800(); break; case 0x325: run_64a00(); break; case 0x326: run_64c00(); break; case 0x327: run_64e00(); break; case 0x328: run_65000(); break; case 0x329: run_65200(); break; case 0x32a: run_65400(); break; case 0x32b: run_65600(); break; case 0x32c: run_65800(); break; case 0x32d: run_65a00(); break; case 0x32e: run_65c00(); break; case 0x32f: run_65e00(); break; case 0x330: run_66000(); break; case 0x331: run_66200(); break; case 0x332: run_66400(); break; case 0x333: run_66600(); break; case 0x334: run_66800(); break; case 0x335: run_66a00(); break; case 0x336: run_66c00(); break; case 0x337: run_66e00(); break; case 0x338: run_67000(); break; case 0x339: run_67200(); break; case 0x33a: run_67400(); break; case 0x33b: run_67600(); break; case 0x33c: run_67800(); break; case 0x33d: run_67a00(); break; case 0x33e: run_67c00(); break; case 0x33f: run_67e00(); break; case 0x340: run_68000(); break; case 0x341: run_68200(); break; case 0x342: run_68400(); break; case 0x343: run_68600(); break; case 0x344: run_68800(); break; case 0x345: run_68a00(); break; case 0x346: run_68c00(); break; case 0x347: run_68e00(); break; case 0x348: run_69000(); break; case 0x349: run_69200(); break; case 0x34a: run_69400(); break; case 0x34b: run_69600(); break; case 0x34c: run_69800(); break; case 0x34d: run_69a00(); break; case 0x34e: run_69c00(); break; case 0x34f: run_69e00(); break; case 0x350: run_6a000(); break; case 0x351: run_6a200(); break; case 0x352: run_6a400(); break; case 0x353: run_6a600(); break; case 0x354: run_6a800(); break; case 0x355: run_6aa00(); break; case 0x356: run_6ac00(); break; case 0x357: run_6ae00(); break; case 0x358: run_6b000(); break; case 0x359: run_6b200(); break; case 0x35a: run_6b400(); break; case 0x35b: run_6b600(); break; case 0x35c: run_6b800(); break; case 0x35d: run_6ba00(); break; case 0x35e: run_6bc00(); break; case 0x35f: run_6be00(); break; case 0x360: run_6c000(); break; case 0x361: run_6c200(); break; case 0x362: run_6c400(); break; default: throw new ExecutionException("invalid address 0x" + Long.toString(this.pc&0xffffffffL,16) + ": r2: " + r2); } } } public AcmeCrossAssembler() { super(4096,65536); initPages(_data1,0x6c600,false); initPages(_data2,0x6c608,false); initPages(_data3,0x6d000,true); initPages(_data4,0x71548,false); initPages(_data5,0x73010,false); clearPages(0x7378c,0x48); clearPages(0x738b0,0x1012); } protected int entryPoint() { return 0x10400; } protected int heapStart() { return 0x778f8; } protected int gp() { return 0x7b010; } public static void main(String[] args) throws Exception { AcmeCrossAssembler me = new AcmeCrossAssembler(); int status = me.run("Acme",args); System.exit(status); } 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; } 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; } private static final java.util.Hashtable symbols = new java.util.Hashtable(); static { symbols.put("setgrent",new Integer(0x53c00)); symbols.put("chroot",new Integer(0x4cc00)); symbols.put("strcpy",new Integer(0x42e00)); symbols.put("cliargs_get_rest",new Integer(0x16e00)); symbols.put("flow_store_doloop_condition",new Integer(0x19600)); symbols.put("fabs",new Integer(0x32a00)); symbols.put("waitpid",new Integer(0x4ae00)); symbols.put("vcpu_set_pc",new Integer(0x27e00)); symbols.put("flow_parse_block_else_block",new Integer(0x19a00)); symbols.put("Output_passinit",new Integer(0x27600)); symbols.put("Input_until_terminator",new Integer(0x1d800)); symbols.put("GetQuotedByte",new Integer(0x1c600)); symbols.put("getgid",new Integer(0x496c4)); symbols.put("sysconf",new Integer(0x4a400)); symbols.put("printf",new Integer(0x3fc00)); symbols.put("vsprintf",new Integer(0x65200)); symbols.put("utime",new Integer(0x4a800)); symbols.put("Input_skip_or_store_block",new Integer(0x1d400)); symbols.put("getlogin",new Integer(0x54e00)); symbols.put("recv",new Integer(0x4fe00)); symbols.put("Input_skip_remainder",new Integer(0x1c800)); symbols.put("connect",new Integer(0x4e200)); symbols.put("ungetc",new Integer(0x6a800)); symbols.put("GetByte",new Integer(0x1c000)); symbols.put("safe_malloc",new Integer(0x1b400)); symbols.put("geteuid",new Integer(0x496b4)); symbols.put("symbol_fix_forward_anon_name",new Integer(0x30800)); symbols.put("memmove",new Integer(0x5b600)); symbols.put("keyword_is_65816mnemo",new Integer(0x24e00)); symbols.put("snprintf",new Integer(0x41c00)); symbols.put("pathconf",new Integer(0x4c800)); symbols.put("Tree_easy_scan",new Integer(0x31000)); symbols.put("mknod",new Integer(0x4ce00)); symbols.put("getgrgid",new Integer(0x53800)); symbols.put("dump_tree",new Integer(0x31400)); symbols.put("getenv",new Integer(0x3e000)); symbols.put("fchmod",new Integer(0x4c000)); symbols.put("floor",new Integer(0x37600)); symbols.put("getegid",new Integer(0x496d4)); symbols.put("setpriority",new Integer(0x4e000)); symbols.put("getpriority",new Integer(0x4de00)); symbols.put("usleep",new Integer(0x4d200)); symbols.put("typesystem_want_imm",new Integer(0x32000)); symbols.put("getpagesize",new Integer(0x48b80)); symbols.put("fchown",new Integer(0x4ba00)); symbols.put("fgets",new Integer(0x59400)); symbols.put("dirname",new Integer(0x55000)); symbols.put("Section_finalize",new Integer(0x2e600)); symbols.put("Throw_warning",new Integer(0x1ac00)); symbols.put("memcpy",new Integer(0x48fdc)); symbols.put("DynaBuf_to_lower",new Integer(0x18000)); symbols.put("Throw_error",new Integer(0x1b000)); symbols.put("ALU_any_result",new Integer(0x16400)); symbols.put("readlink",new Integer(0x4b600)); symbols.put("puts",new Integer(0x40400)); symbols.put("dup2",new Integer(0x4ac00)); symbols.put("mbrtowc",new Integer(0x66200)); symbols.put("getpass",new Integer(0x54a00)); symbols.put("getuid",new Integer(0x496a4)); symbols.put("malloc",new Integer(0x3e800)); symbols.put("isatty",new Integer(0x5a200)); symbols.put("symbol_define",new Integer(0x30200)); symbols.put("iswspace",new Integer(0x65e00)); symbols.put("endpwent",new Integer(0x54800)); symbols.put("sleep",new Integer(0x48af0)); symbols.put("vsnprintf",new Integer(0x64e00)); symbols.put("recvfrom",new Integer(0x4f800)); symbols.put("strtoul",new Integer(0x5fc00)); symbols.put("ACME_finalize",new Integer(0x11800)); symbols.put("typesystem_force_address_statement",new Integer(0x31e00)); symbols.put("gethostbyaddr",new Integer(0x53200)); symbols.put("rmdir",new Integer(0x4a200)); symbols.put("Input_append_keyword_to_global_dynabuf",new Integer(0x1dc00)); symbols.put("socket",new Integer(0x4e400)); symbols.put("select",new Integer(0x4fa00)); symbols.put("readdir",new Integer(0x52600)); symbols.put("lchown",new Integer(0x4bc00)); symbols.put("setgroups",new Integer(0x50e00)); symbols.put("fflush",new Integer(0x39a00)); symbols.put("cliargs_safe_get_next",new Integer(0x16a00)); symbols.put("ftruncate",new Integer(0x4d000)); symbols.put("realpath",new Integer(0x4d800)); symbols.put("keyword_is_6510mnemo",new Integer(0x23000)); symbols.put("chown",new Integer(0x4b800)); symbols.put("send",new Integer(0x4fc00)); symbols.put("vcpu_check_and_set_reg_length",new Integer(0x17200)); symbols.put("Output_init",new Integer(0x26e00)); symbols.put("chmod",new Integer(0x4be00)); symbols.put("alarm",new Integer(0x49a64)); symbols.put("Parse_optional_block",new Integer(0x1b600)); symbols.put("strtol",new Integer(0x43600)); symbols.put("pipe",new Integer(0x4aa00)); symbols.put("encoding_passinit",new Integer(0x18e00)); symbols.put("uname",new Integer(0x55400)); symbols.put("symbol_parse_definition",new Integer(0x2fc00)); symbols.put("Output_start_segment",new Integer(0x27a00)); symbols.put("accept",new Integer(0x4ea00)); symbols.put("rint",new Integer(0x38000)); symbols.put("basename",new Integer(0x55200)); symbols.put("ALU_optional_defined_int",new Integer(0x15a00)); symbols.put("output_set_output_filename",new Integer(0x26c00)); symbols.put("DynaBuf_get_copy",new Integer(0x17a00)); symbols.put("output_set_output_format",new Integer(0x26800)); symbols.put("strtod",new Integer(0x68800)); symbols.put("Throw_first_pass_warning",new Integer(0x1ae00)); symbols.put("Parse_until_eob_or_eof",new Integer(0x1a400)); symbols.put("sysctl",new Integer(0x4dc00)); symbols.put("fstat",new Integer(0x62e00)); symbols.put("fprintf",new Integer(0x3bc00)); symbols.put("cputype_passinit",new Integer(0x17400)); symbols.put("setpwent",new Integer(0x54600)); symbols.put("bind",new Integer(0x4f000)); symbols.put("inet_addr",new Integer(0x56200)); symbols.put("mkfifo",new Integer(0x4d400)); symbols.put("chdir",new Integer(0x4a600)); symbols.put("Input_read_keyword",new Integer(0x1ec00)); symbols.put("cputype_find",new Integer(0x17000)); symbols.put("initgroups",new Integer(0x56600)); symbols.put("Macro_parse_definition",new Integer(0x20600)); symbols.put("endgrent",new Integer(0x53e00)); symbols.put("setsockopt",new Integer(0x4ee00)); symbols.put("fseek",new Integer(0x3d400)); symbols.put("cos",new Integer(0x32800)); symbols.put("memchr",new Integer(0x5b400)); symbols.put("output_le16",new Integer(0x26000)); symbols.put("umask",new Integer(0x49694)); symbols.put("symbol_set_value",new Integer(0x2f600)); symbols.put("symbol_find",new Integer(0x2f400)); symbols.put("lstat",new Integer(0x4c200)); symbols.put("sin",new Integer(0x32c00)); symbols.put("setgid",new Integer(0x50a00)); symbols.put("signal",new Integer(0x5ea00)); symbols.put("output_8",new Integer(0x25e00)); symbols.put("strncmp",new Integer(0x43000)); symbols.put("DynaBuf_create",new Integer(0x17600)); symbols.put("pow",new Integer(0x33400)); symbols.put("keyword_is_6502mnemo",new Integer(0x22600)); symbols.put("strncpy",new Integer(0x5f400)); symbols.put("DynaBuf_add_string",new Integer(0x17e00)); symbols.put("Input_read_filename",new Integer(0x1fc00)); symbols.put("sync",new Integer(0x51e00)); symbols.put("ALU_int_result",new Integer(0x15c00)); symbols.put("sendto",new Integer(0x4f600)); symbols.put("realloc",new Integer(0x40600)); symbols.put("vcpu_get_statement_size",new Integer(0x28200)); symbols.put("Section_passinit",new Integer(0x2e800)); symbols.put("listen",new Integer(0x4f200)); symbols.put("fork",new Integer(0x62c00)); symbols.put("sscanf",new Integer(0x5f000)); symbols.put("getgrent",new Integer(0x53a00)); symbols.put("sigaction",new Integer(0x52200)); symbols.put("fread",new Integer(0x3c600)); symbols.put("inet_aton",new Integer(0x55e00)); symbols.put("Input_read_and_lower_keyword",new Integer(0x1f400)); symbols.put("symlink",new Integer(0x4b400)); symbols.put("encoding_find",new Integer(0x19200)); symbols.put("Tree_add_table",new Integer(0x30e00)); symbols.put("DynaBuf_init",new Integer(0x18200)); symbols.put("fopen",new Integer(0x3b800)); symbols.put("memset",new Integer(0x48fec)); symbols.put("main",new Integer(0x11c00)); symbols.put("typesystem_want_addr",new Integer(0x32200)); symbols.put("Output_end_segment",new Integer(0x27800)); symbols.put("Output_fake",new Integer(0x25c00)); symbols.put("add_node_to_tree",new Integer(0x30c00)); symbols.put("pseudoopcodes_init",new Integer(0x2e000)); symbols.put("DynaBuf_append",new Integer(0x17c00)); symbols.put("matherr",new Integer(0x37c00)); symbols.put("fclose",new Integer(0x39200)); symbols.put("inet_ntoa",new Integer(0x52a00)); symbols.put("getppid",new Integer(0x491bc)); symbols.put("opendir",new Integer(0x52400)); symbols.put("getgroups",new Integer(0x50000)); symbols.put("keyword_is_c64dtv2mnemo",new Integer(0x23a00)); symbols.put("getgrouplist",new Integer(0x56400)); symbols.put("seteuid",new Integer(0x50800)); symbols.put("keyword_is_65c02mnemo",new Integer(0x24400)); symbols.put("putc",new Integer(0x40000)); symbols.put("output_initmem",new Integer(0x26600)); symbols.put("finite",new Integer(0x37400)); symbols.put("herror",new Integer(0x53000)); symbols.put("strcmp",new Integer(0x42c00)); symbols.put("flow_forloop",new Integer(0x19400)); symbols.put("shutdown",new Integer(0x4f400)); symbols.put("tan",new Integer(0x32e00)); symbols.put("ttyname",new Integer(0x52000)); symbols.put("vfiprintf",new Integer(0x64a00)); symbols.put("getpwuid",new Integer(0x54200)); symbols.put("Input_read_zone_and_keyword",new Integer(0x1e400)); symbols.put("dup",new Integer(0x4c600)); symbols.put("copysign",new Integer(0x38800)); symbols.put("getcwd",new Integer(0x4b000)); symbols.put("Section_new_zone",new Integer(0x2e400)); symbols.put("encoding_load",new Integer(0x19000)); symbols.put("gethostbyname",new Integer(0x53400)); symbols.put("getpwnam",new Integer(0x54000)); symbols.put("getservbyname",new Integer(0x52c00)); symbols.put("atan",new Integer(0x32400)); symbols.put("gethostname",new Integer(0x55a00)); symbols.put("sprintf",new Integer(0x42000)); symbols.put("pseudoopcode_parse",new Integer(0x2e200)); symbols.put("Tree_hard_scan",new Integer(0x31200)); symbols.put("strtof",new Integer(0x68a00)); symbols.put("atexit",new Integer(0x38a00)); symbols.put("cliargs_get_next",new Integer(0x16600)); symbols.put("output_le32",new Integer(0x26400)); symbols.put("asin",new Integer(0x33200)); symbols.put("setlocale",new Integer(0x5b000)); symbols.put("getpeername",new Integer(0x50400)); symbols.put("Throw_serious_error",new Integer(0x1b200)); symbols.put("nanf",new Integer(0x66a00)); symbols.put("cliargs_init",new Integer(0x16c00)); symbols.put("scalbn",new Integer(0x38400)); symbols.put("vfork",new Integer(0x4ca00)); symbols.put("ALU_liberal_int",new Integer(0x16200)); symbols.put("symbols_vicelabels",new Integer(0x30600)); symbols.put("fsync",new Integer(0x51200)); symbols.put("Mnemo_init",new Integer(0x22400)); symbols.put("fputc",new Integer(0x3c000)); symbols.put("symbol_set_label",new Integer(0x2f800)); symbols.put("DynaBuf_enlarge",new Integer(0x17800)); symbols.put("getsockopt",new Integer(0x4ec00)); symbols.put("typesystem_force_address_block",new Integer(0x31c00)); symbols.put("hstrerror",new Integer(0x52e00)); symbols.put("vcpu_end_statement",new Integer(0x28400)); symbols.put("nan",new Integer(0x37e00)); symbols.put("Macro_parse_call",new Integer(0x20a00)); symbols.put("encoding_encode_char",new Integer(0x18c00)); symbols.put("Input_new_file",new Integer(0x1be00)); symbols.put("localeconv",new Integer(0x5b200)); symbols.put("Tree_dump_forest",new Integer(0x31800)); symbols.put("Bug_found",new Integer(0x1b800)); symbols.put("Output_save_file",new Integer(0x27000)); symbols.put("fwrite",new Integer(0x3dc00)); symbols.put("vcpu_read_pc",new Integer(0x28000)); symbols.put("access",new Integer(0x4a000)); symbols.put("ALU_any_int",new Integer(0x15e00)); symbols.put("notreallypo_setpc",new Integer(0x2de00)); symbols.put("getdents",new Integer(0x4c400)); symbols.put("Input_accept_comma",new Integer(0x20000)); symbols.put("exit",new Integer(0x38e00)); symbols.put("klogctl",new Integer(0x4d600)); symbols.put("typesystem_says_address",new Integer(0x31a00)); symbols.put("getgrnam",new Integer(0x53600)); symbols.put("make_hash",new Integer(0x30a00)); symbols.put("output_prefer_cbm_file_format",new Integer(0x26a00)); symbols.put("AnyOS_entry",new Integer(0x28600)); symbols.put("Macro_init",new Integer(0x20400)); symbols.put("ALU_init",new Integer(0x15800)); symbols.put("getpwent",new Integer(0x54400)); symbols.put("daemon",new Integer(0x55c00)); symbols.put("strlen",new Integer(0x10268)); symbols.put("open",new Integer(0x63000)); symbols.put("Input_get_force_bit",new Integer(0x20200)); symbols.put("fputs",new Integer(0x59a00)); symbols.put("setsid",new Integer(0x51000)); symbols.put("setegid",new Integer(0x50c00)); symbols.put("closedir",new Integer(0x52800)); symbols.put("cliargs_handle_options",new Integer(0x16800)); symbols.put("acos",new Integer(0x33000)); symbols.put("output_le24",new Integer(0x26200)); symbols.put("vasprintf",new Integer(0x54c00)); symbols.put("Input_ensure_EOS",new Integer(0x1ce00)); symbols.put("setuid",new Integer(0x50600)); symbols.put("mkdir",new Integer(0x49e00)); symbols.put("ALU_defined_int",new Integer(0x16000)); symbols.put("wcrtomb",new Integer(0x6ac00)); symbols.put("close",new Integer(0x62a00)); symbols.put("symbols_list",new Integer(0x30400)); symbols.put("flow_parse_and_close_file",new Integer(0x19c00)); symbols.put("flow_doloop",new Integer(0x19800)); symbols.put("_call_helper",new Integer(0x10284)); symbols.put("vfprintf",new Integer(0x48000)); symbols.put("fputwc",new Integer(0x65c00)); symbols.put("raise",new Integer(0x5e800)); symbols.put("free",new Integer(0x3ea00)); symbols.put("getsockname",new Integer(0x50200)); } public int lookupSymbol(String symbol) { Integer i = (Integer) symbols.get(symbol); return i==null ? -1 : i.intValue(); } }