Advertisement
Guest User

http://bellard.org/jslinux/

a guest
May 17th, 2011
1,144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.    PC Emulator
  3.  
  4.    Copyright (c) 2011 Fabrice Bellard
  5.  
  6.    Redistribution or commercial use is prohibited without the author's
  7.    permission.
  8. */
  9. "use strict";
  10. var aa;
  11. var ba = [1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1];
  12. var ca = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
  13. var da = [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4];
  14.  
  15. function ea() {
  16.     var i, fa;
  17.     this.regs = new Array();
  18.     for (i = 0; i < 8; i++) this.regs[i] = 0;
  19.     this.eip = 0;
  20.     this.cc_op = 0;
  21.     this.cc_dst = 0;
  22.     this.cc_src = 0;
  23.     this.cc_op2 = 0;
  24.     this.cc_dst2 = 0;
  25.     this.df = 1;
  26.     this.eflags = 0x2;
  27.     this.cycle_count = 0;
  28.     this.hard_irq = 0;
  29.     this.cpl = 0;
  30.     this.cr0 = (1 << 0);
  31.     this.cr2 = 0;
  32.     this.cr3 = 0;
  33.     this.cr4 = 0;
  34.     this.idt = {
  35.         base: 0,
  36.         limit: 0
  37.     };
  38.     this.gdt = {
  39.         base: 0,
  40.         limit: 0
  41.     };
  42.     this.segs = new Array();
  43.     for (i = 0; i < 6; i++) {
  44.         this.segs[i] = {
  45.             selector: 0,
  46.             base: 0,
  47.             limit: 0,
  48.             flags: 0
  49.         };
  50.     }
  51.     this.tr = {
  52.         selector: 0,
  53.         base: 0,
  54.         limit: 0,
  55.         flags: 0
  56.     };
  57.     this.ldt = {
  58.         selector: 0,
  59.         base: 0,
  60.         limit: 0,
  61.         flags: 0
  62.     };
  63.     this.halted = 0;
  64.     this.phys_mem = null;
  65.     fa = 0x100000;
  66.     this.tlb_read_kernel = new Int32Array(fa);
  67.     this.tlb_write_kernel = new Int32Array(fa);
  68.     this.tlb_read_user = new Int32Array(fa);
  69.     this.tlb_write_user = new Int32Array(fa);
  70.     for (i = 0; i < fa; i++) {
  71.         this.tlb_read_kernel[i] = -1;
  72.         this.tlb_write_kernel[i] = -1;
  73.         this.tlb_read_user[i] = -1;
  74.         this.tlb_write_user[i] = -1;
  75.     }
  76.     this.tlb_pages = new Int32Array(2048);
  77.     this.tlb_pages_count = 0;
  78. }
  79. ea.prototype.phys_mem_resize = function (ga) {
  80.     this.mem_size = ga;
  81.     this.phys_mem = new ArrayBuffer(ga);
  82.     this.phys_mem8 = new Uint8Array(this.phys_mem, 0, ga);
  83.     this.phys_mem16 = new Uint16Array(this.phys_mem, 0, ga / 2);
  84.     this.phys_mem32 = new Int32Array(this.phys_mem, 0, ga / 4);
  85. };
  86. ea.prototype.ld8_phys = function (ha) {
  87.     return this.phys_mem8[ha];
  88. };
  89. ea.prototype.st8_phys = function (ha, ia) {
  90.     this.phys_mem8[ha] = ia;
  91. };
  92. ea.prototype.ld32_phys = function (ha) {
  93.     return this.phys_mem32[ha >> 2];
  94. };
  95. ea.prototype.st32_phys = function (ha, ia) {
  96.     this.phys_mem32[ha >> 2] = ia;
  97. };
  98. ea.prototype.tlb_set_page = function (ha, ja, ka, la) {
  99.     var i, ia, j;
  100.     ja &= -4096;
  101.     ha &= -4096;
  102.     ia = ha ^ ja;
  103.     i = ha >>> 12;
  104.     if (this.tlb_read_kernel[i] == -1) {
  105.         if (this.tlb_pages_count >= 2048) {
  106.             this.tlb_flush_all1((i - 1) & 0xfffff);
  107.         }
  108.         this.tlb_pages[this.tlb_pages_count++] = i;
  109.     }
  110.     this.tlb_read_kernel[i] = ia;
  111.     if (ka) {
  112.         this.tlb_write_kernel[i] = ia;
  113.     } else {
  114.         this.tlb_write_kernel[i] = -1;
  115.     }
  116.     if (la) {
  117.         this.tlb_read_user[i] = ia;
  118.         if (ka) {
  119.             this.tlb_write_user[i] = ia;
  120.         } else {
  121.             this.tlb_write_user[i] = -1;
  122.         }
  123.     } else {
  124.         this.tlb_read_user[i] = -1;
  125.         this.tlb_write_user[i] = -1;
  126.     }
  127. };
  128. ea.prototype.tlb_flush_page = function (ha) {
  129.     var i;
  130.     i = ha >>> 12;
  131.     this.tlb_read_kernel[i] = -1;
  132.     this.tlb_write_kernel[i] = -1;
  133.     this.tlb_read_user[i] = -1;
  134.     this.tlb_write_user[i] = -1;
  135. };
  136. ea.prototype.tlb_flush_all = function () {
  137.     var i, j, n, ma;
  138.     ma = this.tlb_pages;
  139.     n = this.tlb_pages_count;
  140.     for (j = 0; j < n; j++) {
  141.         i = ma[j];
  142.         this.tlb_read_kernel[i] = -1;
  143.         this.tlb_write_kernel[i] = -1;
  144.         this.tlb_read_user[i] = -1;
  145.         this.tlb_write_user[i] = -1;
  146.     }
  147.     this.tlb_pages_count = 0;
  148. };
  149. ea.prototype.tlb_flush_all1 = function (na) {
  150.     var i, j, n, ma, oa;
  151.     ma = this.tlb_pages;
  152.     n = this.tlb_pages_count;
  153.     oa = 0;
  154.     for (j = 0; j < n; j++) {
  155.         i = ma[j];
  156.         if (i == na) {
  157.             ma[oa++] = i;
  158.         } else {
  159.             this.tlb_read_kernel[i] = -1;
  160.             this.tlb_write_kernel[i] = -1;
  161.             this.tlb_read_user[i] = -1;
  162.             this.tlb_write_user[i] = -1;
  163.         }
  164.     }
  165.     this.tlb_pages_count = oa;
  166. };
  167. ea.prototype.st8_N = function (ha, pa) {
  168.     var i;
  169.     for (i = 0; i < pa.length; i++) {
  170.         this.st8_phys(ha + i, pa[i]);
  171.     }
  172. };
  173.  
  174. function qa(ia, n) {
  175.     var i, s;
  176.     var h = "0123456789ABCDEF";
  177.     s = "";
  178.     for (i = n - 1; i >= 0; i--) {
  179.         s = s + h[(ia >>> (i * 4)) & 15];
  180.     }
  181.     return s;
  182. }
  183. function ra(n) {
  184.     return qa(n, 8);
  185. }
  186. function sa(n) {
  187.     return qa(n, 2);
  188. }
  189. function ta(n) {
  190.     return qa(n, 4);
  191. }
  192. ea.prototype.dump = function () {
  193.     var i, ua, va;
  194.     var wa = [" ES", " CS", " SS", " DS", " FS", " GS", "LDT", " TR"];
  195.     console.log("TSC=" + ra(this.cycle_count) + " EIP=" + ra(this.eip) + "\nEAX=" + ra(this.regs[0]) + " ECX=" + ra(this.regs[1]) + " EDX=" + ra(this.regs[2]) + " EBX=" + ra(this.regs[3]) + " ESP=" + ra(this.regs[4]) + " EBP=" + ra(this.regs[5]));
  196.     console.log("ESI=" + ra(this.regs[6]) + " EDI=" + ra(this.regs[7]));
  197.     console.log("EFL=" + ra(this.eflags) + " OP=" + sa(this.cc_op) + " SRC=" + ra(this.cc_src) + " DST=" + ra(this.cc_dst) + " OP2=" + sa(this.cc_op2) + " DST2=" + ra(this.cc_dst2));
  198.     console.log("CPL=" + this.cpl + " CR0=" + ra(this.cr0) + " CR2=" + ra(this.cr2) + " CR3=" + ra(this.cr3) + " CR4=" + ra(this.cr4));
  199.     va = "";
  200.     for (i = 0; i < 8; i++) {
  201.         if (i == 6) ua = this.ldt;
  202.         else if (i == 7) ua = this.tr;
  203.         else ua = this.segs[i];
  204.         va += wa[i] + "=" + ta(ua.selector) + " " + ra(ua.base) + " " + ra(ua.limit) + " " + ta((ua.flags >> 8) & 0xf0ff);
  205.         if (i & 1) {
  206.             console.log(va);
  207.             va = "";
  208.         } else {
  209.             va += " ";
  210.         }
  211.     }
  212.     ua = this.gdt;
  213.     va = "GDT=     " + ra(ua.base) + " " + ra(ua.limit) + "      ";
  214.     ua = this.idt;
  215.     va += "IDT=     " + ra(ua.base) + " " + ra(ua.limit);
  216.     console.log(va);
  217. };
  218. ea.prototype.exec = function (xa) {
  219.     var ya, ha, za;
  220.     var Aa, Ba, Ca, Da, Ea;
  221.     var Fa, Ga, Ha, b, Ia, ia, Ja, Ka, La, Ma, Na, Oa;
  222.     var Pa, Qa;
  223.     var Ra, Sa, Ta, Ua;
  224.     var Va, Wa, Xa, Ya, Za, ab;
  225.  
  226.     function bb() {
  227.         var cb;
  228.         db(ha, 0, ya.cpl == 3);
  229.         cb = Za[ha >>> 12] ^ ha;
  230.         return Ra[cb];
  231.     }
  232.     function eb() {
  233.         var Ua;
  234.         return (((Ua = Za[ha >>> 12]) == -1) ? bb() : Ra[ha ^ Ua]);
  235.     }
  236.     function fb() {
  237.         var ia;
  238.         ia = eb();
  239.         ha++;
  240.         ia |= eb() << 8;
  241.         ha--;
  242.         return ia;
  243.     }
  244.     function gb() {
  245.         var Ua;
  246.         return (((Ua = Za[ha >>> 12]) | ha) & 1 ? fb() : Sa[(ha ^ Ua) >> 1]);
  247.     }
  248.     function hb() {
  249.         var ia;
  250.         ia = eb();
  251.         ha++;
  252.         ia |= eb() << 8;
  253.         ha++;
  254.         ia |= eb() << 16;
  255.         ha++;
  256.         ia |= eb() << 24;
  257.         ha -= 3;
  258.         return ia;
  259.     }
  260.     function ib() {
  261.         var Ua;
  262.         return (((Ua = Za[ha >>> 12]) | ha) & 3 ? hb() : Ta[(ha ^ Ua) >> 2]);
  263.     }
  264.     function jb() {
  265.         var cb;
  266.         db(ha, 1, ya.cpl == 3);
  267.         cb = ab[ha >>> 12] ^ ha;
  268.         return Ra[cb];
  269.     }
  270.     function kb() {
  271.         var cb;
  272.         return ((cb = ab[ha >>> 12]) == -1) ? jb() : Ra[ha ^ cb];
  273.     }
  274.     function lb() {
  275.         var ia;
  276.         ia = kb();
  277.         ha++;
  278.         ia |= kb() << 8;
  279.         ha--;
  280.         return ia;
  281.     }
  282.     function mb() {
  283.         var cb;
  284.         return ((cb = ab[ha >>> 12]) | ha) & 1 ? lb() : Sa[(ha ^ cb) >> 1];
  285.     }
  286.     function nb() {
  287.         var ia;
  288.         ia = kb();
  289.         ha++;
  290.         ia |= kb() << 8;
  291.         ha++;
  292.         ia |= kb() << 16;
  293.         ha++;
  294.         ia |= kb() << 24;
  295.         ha -= 3;
  296.         return ia;
  297.     }
  298.     function ob() {
  299.         var cb;
  300.         return ((cb = ab[ha >>> 12]) | ha) & 3 ? nb() : Ta[(ha ^ cb) >> 2];
  301.     }
  302.     function pb(ia) {
  303.         var cb;
  304.         db(ha, 1, ya.cpl == 3);
  305.         cb = ab[ha >>> 12] ^ ha;
  306.         Ra[cb] = ia;
  307.     }
  308.     function qb(ia) {
  309.         var Ua; {
  310.             Ua = ab[ha >>> 12];
  311.             if (Ua == -1) {
  312.                 pb(ia);
  313.             } else {
  314.                 Ra[ha ^ Ua] = ia;
  315.             }
  316.         };
  317.     }
  318.     function rb(ia) {
  319.         qb(ia);
  320.         ha++;
  321.         qb(ia >> 8);
  322.         ha--;
  323.     }
  324.     function sb(ia) {
  325.         var Ua; {
  326.             Ua = ab[ha >>> 12];
  327.             if ((Ua | ha) & 1) {
  328.                 rb(ia);
  329.             } else {
  330.                 Sa[(ha ^ Ua) >> 1] = ia;
  331.             }
  332.         };
  333.     }
  334.     function tb(ia) {
  335.         qb(ia);
  336.         ha++;
  337.         qb(ia >> 8);
  338.         ha++;
  339.         qb(ia >> 16);
  340.         ha++;
  341.         qb(ia >> 24);
  342.         ha -= 3;
  343.     }
  344.     function ub(ia) {
  345.         var Ua; {
  346.             Ua = ab[ha >>> 12];
  347.             if ((Ua | ha) & 3) {
  348.                 tb(ia);
  349.             } else {
  350.                 Ta[(ha ^ Ua) >> 2] = ia;
  351.             }
  352.         };
  353.     }
  354.     function vb() {
  355.         var cb;
  356.         db(ha, 0, 0);
  357.         cb = Va[ha >>> 12] ^ ha;
  358.         return Ra[cb];
  359.     }
  360.     function wb() {
  361.         var cb;
  362.         return ((cb = Va[ha >>> 12]) == -1) ? vb() : Ra[ha ^ cb];
  363.     }
  364.     function xb() {
  365.         var ia;
  366.         ia = wb();
  367.         ha++;
  368.         ia |= wb() << 8;
  369.         ha--;
  370.         return ia;
  371.     }
  372.     function yb() {
  373.         var cb;
  374.         return ((cb = Va[ha >>> 12]) | ha) & 1 ? xb() : Sa[(ha ^ cb) >> 1];
  375.     }
  376.     function zb() {
  377.         var ia;
  378.         ia = wb();
  379.         ha++;
  380.         ia |= wb() << 8;
  381.         ha++;
  382.         ia |= wb() << 16;
  383.         ha++;
  384.         ia |= wb() << 24;
  385.         ha -= 3;
  386.         return ia;
  387.     }
  388.     function Ab() {
  389.         var cb;
  390.         return ((cb = Va[ha >>> 12]) | ha) & 3 ? zb() : Ta[(ha ^ cb) >> 2];
  391.     }
  392.     function Bb(ia) {
  393.         var cb;
  394.         db(ha, 1, 0);
  395.         cb = Wa[ha >>> 12] ^ ha;
  396.         Ra[cb] = ia;
  397.     }
  398.     function Cb(ia) {
  399.         var cb;
  400.         cb = Wa[ha >>> 12];
  401.         if (cb == -1) {
  402.             Bb(ia);
  403.         } else {
  404.             Ra[ha ^ cb] = ia;
  405.         }
  406.     }
  407.     function Db(ia) {
  408.         Cb(ia);
  409.         ha++;
  410.         Cb(ia >> 8);
  411.         ha--;
  412.     }
  413.     function Eb(ia) {
  414.         var cb;
  415.         cb = Wa[ha >>> 12];
  416.         if ((cb | ha) & 1) {
  417.             Db(ia);
  418.         } else {
  419.             Sa[(ha ^ cb) >> 1] = ia;
  420.         }
  421.     }
  422.     function Fb(ia) {
  423.         Cb(ia);
  424.         ha++;
  425.         Cb(ia >> 8);
  426.         ha++;
  427.         Cb(ia >> 16);
  428.         ha++;
  429.         Cb(ia >> 24);
  430.         ha -= 3;
  431.     }
  432.     function Gb(ia) {
  433.         var cb;
  434.         cb = Wa[ha >>> 12];
  435.         if ((cb | ha) & 3) {
  436.             Fb(ia);
  437.         } else {
  438.             Ta[(ha ^ cb) >> 2] = ia;
  439.         }
  440.     }
  441.     var Hb, Ib;
  442.  
  443.     function Jb(ha) {
  444.         var cb;
  445.         db(ha, 0, ya.cpl == 3);
  446.         cb = Za[ha >>> 12] ^ ha;
  447.         return Ra[cb];
  448.     }
  449.     function Kb() {
  450.         var ia, Ja;
  451.         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  452.         Hb++;;
  453.         Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  454.         Hb++;;
  455.         return ia | (Ja << 8);
  456.     }
  457.     function Lb() {
  458.         var ia, Ja, cb;
  459.         cb = Za[Hb >>> 12];
  460.         if (((Hb | cb) & 0xfff) <= 4092) {
  461.             cb ^= Hb;
  462.             ia = Ra[cb] | (Ra[cb + 1] << 8) | (Ra[cb + 2] << 16) | (Ra[cb + 3] << 24);
  463.             Hb += 4;
  464.         } else {
  465.             ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  466.             Hb++;;
  467.             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  468.             Hb++;;
  469.             ia |= Ja << 8;
  470.             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  471.             Hb++;;
  472.             ia |= Ja << 16;
  473.             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  474.             Hb++;;
  475.             ia |= Ja << 24;
  476.         }
  477.         return ia;
  478.     }
  479.     function Mb(Ga, Nb) {
  480.         var base, ha, Ob, Pb;
  481.         switch ((Ga & 7) | ((Ga >> 3) & 0x18)) {
  482.         case 0x04:
  483.             Ob = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  484.             Hb++;;
  485.             base = Ob & 7;
  486.             if (base == 5) {
  487.                 ha = Lb();
  488.             } else {
  489.                 ha = za[base];
  490.                 if (Nb && base == 4) ha = (ha + Nb) & -1;
  491.             }
  492.             Pb = (Ob >> 3) & 7;
  493.             if (Pb != 4) {
  494.                 ha = (ha + (za[Pb] << (Ob >> 6))) & -1;
  495.             }
  496.             break;
  497.         case 0x0c:
  498.             Ob = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  499.             Hb++;;
  500.             ha = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  501.             Hb++;;
  502.             base = Ob & 7;
  503.             ha = (ha + za[base]) & -1;
  504.             if (Nb && base == 4) ha = (ha + Nb) & -1;
  505.             Pb = (Ob >> 3) & 7;
  506.             if (Pb != 4) {
  507.                 ha = (ha + (za[Pb] << (Ob >> 6))) & -1;
  508.             }
  509.             break;
  510.         case 0x14:
  511.             Ob = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  512.             Hb++;;
  513.             ha = Lb();
  514.             base = Ob & 7;
  515.             ha = (ha + za[base]) & -1;
  516.             if (Nb && base == 4) ha = (ha + Nb) & -1;
  517.             Pb = (Ob >> 3) & 7;
  518.             if (Pb != 4) {
  519.                 ha = (ha + (za[Pb] << (Ob >> 6))) & -1;
  520.             }
  521.             break;
  522.         case 0x05:
  523.             ha = Lb();
  524.             break;
  525.         case 0x00:
  526.         case 0x01:
  527.         case 0x02:
  528.         case 0x03:
  529.         case 0x06:
  530.         case 0x07:
  531.             base = Ga & 7;
  532.             ha = za[base];
  533.             break;
  534.         case 0x08:
  535.         case 0x09:
  536.         case 0x0a:
  537.         case 0x0b:
  538.         case 0x0d:
  539.         case 0x0e:
  540.         case 0x0f:
  541.             ha = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  542.             Hb++;;
  543.             base = Ga & 7;
  544.             ha = (ha + za[base]) & -1;
  545.             break;
  546.         case 0x10:
  547.         case 0x11:
  548.         case 0x12:
  549.         case 0x13:
  550.         case 0x15:
  551.         case 0x16:
  552.         case 0x17:
  553.             ha = Lb();
  554.             base = Ga & 7;
  555.             ha = (ha + za[base]) & -1;
  556.             break;
  557.         default:
  558.             throw "get_modrm";
  559.         }
  560.         if (Fa & 0x000f) {
  561.             ha = (ha + ya.segs[(Fa & 0x000f) - 1].base) & -1;
  562.         }
  563.         return ha;
  564.     }
  565.     function Qb() {
  566.         var ha;
  567.         ha = Lb();
  568.         if (Fa & 0x000f) {
  569.             ha = (ha + ya.segs[(Fa & 0x000f) - 1].base) & -1;
  570.         }
  571.         return ha;
  572.     }
  573.     function Rb(Ia, ia) {
  574.         if (Ia & 4) za[Ia & 3] = (za[Ia & 3] & -65281) | ((ia & 0xff) << 8);
  575.         else za[Ia & 3] = (za[Ia & 3] & -256) | (ia & 0xff);
  576.     }
  577.     function Sb(Ia, ia) {
  578.         za[Ia] = (za[Ia] & -65536) | (ia & 0xffff);
  579.     }
  580.     function Tb(La, Ub, Vb) {
  581.         var Wb;
  582.         switch (La) {
  583.         case 0:
  584.             Aa = Vb;
  585.             Ub = (Ub + Vb) & -1;
  586.             Ba = Ub;
  587.             Ca = 0;
  588.             break;
  589.         case 1:
  590.             Ub = Ub | Vb;
  591.             Ba = Ub;
  592.             Ca = 12;
  593.             break;
  594.         case 2:
  595.             Wb = Xb(2);
  596.             Aa = Vb;
  597.             Ub = (Ub + Vb + Wb) & -1;
  598.             Ba = Ub;
  599.             Ca = Wb ? 3 : 0;
  600.             break;
  601.         case 3:
  602.             Wb = Xb(2);
  603.             Aa = Vb;
  604.             Ub = (Ub - Vb - Wb) & -1;
  605.             Ba = Ub;
  606.             Ca = Wb ? 9 : 6;
  607.             break;
  608.         case 4:
  609.             Ub = Ub & Vb;
  610.             Ba = Ub;
  611.             Ca = 12;
  612.             break;
  613.         case 5:
  614.             Aa = Vb;
  615.             Ub = (Ub - Vb) & -1;
  616.             Ba = Ub;
  617.             Ca = 6;
  618.             break;
  619.         case 6:
  620.             Ub = Ub ^ Vb;
  621.             Ba = Ub;
  622.             Ca = 12;
  623.             break;
  624.         case 7:
  625.             Aa = Vb;
  626.             Ba = (Ub - Vb) & -1;
  627.             Ca = 6;
  628.             break;
  629.         default:
  630.             throw "arith" + 8 + ": invalid op";
  631.         }
  632.         return Ub;
  633.     }
  634.     function Yb(ia) {
  635.         if (Ca < 25) {
  636.             Da = Ca;
  637.         }
  638.         Ea = (ia + 1) & -1;
  639.         Ca = 25;
  640.         return Ea;
  641.     }
  642.     function Zb(ia) {
  643.         if (Ca < 25) {
  644.             Da = Ca;
  645.         }
  646.         Ea = (ia - 1) & -1;
  647.         Ca = 28;
  648.         return Ea;
  649.     }
  650.     function ac(La, Ub, Vb) {
  651.         var Wb;
  652.         switch (La) {
  653.         case 0:
  654.             Aa = Vb;
  655.             Ub = (Ub + Vb) & -1;
  656.             Ba = Ub;
  657.             Ca = 1;
  658.             break;
  659.         case 1:
  660.             Ub = Ub | Vb;
  661.             Ba = Ub;
  662.             Ca = 13;
  663.             break;
  664.         case 2:
  665.             Wb = Xb(2);
  666.             Aa = Vb;
  667.             Ub = (Ub + Vb + Wb) & -1;
  668.             Ba = Ub;
  669.             Ca = Wb ? 4 : 1;
  670.             break;
  671.         case 3:
  672.             Wb = Xb(2);
  673.             Aa = Vb;
  674.             Ub = (Ub - Vb - Wb) & -1;
  675.             Ba = Ub;
  676.             Ca = Wb ? 10 : 7;
  677.             break;
  678.         case 4:
  679.             Ub = Ub & Vb;
  680.             Ba = Ub;
  681.             Ca = 13;
  682.             break;
  683.         case 5:
  684.             Aa = Vb;
  685.             Ub = (Ub - Vb) & -1;
  686.             Ba = Ub;
  687.             Ca = 7;
  688.             break;
  689.         case 6:
  690.             Ub = Ub ^ Vb;
  691.             Ba = Ub;
  692.             Ca = 13;
  693.             break;
  694.         case 7:
  695.             Aa = Vb;
  696.             Ba = (Ub - Vb) & -1;
  697.             Ca = 7;
  698.             break;
  699.         default:
  700.             throw "arith" + 16 + ": invalid op";
  701.         }
  702.         return Ub;
  703.     }
  704.     function bc(ia) {
  705.         if (Ca < 25) {
  706.             Da = Ca;
  707.         }
  708.         Ea = (ia + 1) & -1;
  709.         Ca = 26;
  710.         return Ea;
  711.     }
  712.     function cc(ia) {
  713.         if (Ca < 25) {
  714.             Da = Ca;
  715.         }
  716.         Ea = (ia - 1) & -1;
  717.         Ca = 29;
  718.         return Ea;
  719.     }
  720.     function dc(La, Ub, Vb) {
  721.         var Wb;
  722.         switch (La) {
  723.         case 0:
  724.             Aa = Vb;
  725.             Ub = (Ub + Vb) & -1;
  726.             Ba = Ub;
  727.             Ca = 2;
  728.             break;
  729.         case 1:
  730.             Ub = Ub | Vb;
  731.             Ba = Ub;
  732.             Ca = 14;
  733.             break;
  734.         case 2:
  735.             Wb = Xb(2);
  736.             Aa = Vb;
  737.             Ub = (Ub + Vb + Wb) & -1;
  738.             Ba = Ub;
  739.             Ca = Wb ? 5 : 2;
  740.             break;
  741.         case 3:
  742.             Wb = Xb(2);
  743.             Aa = Vb;
  744.             Ub = (Ub - Vb - Wb) & -1;
  745.             Ba = Ub;
  746.             Ca = Wb ? 11 : 8;
  747.             break;
  748.         case 4:
  749.             Ub = Ub & Vb;
  750.             Ba = Ub;
  751.             Ca = 14;
  752.             break;
  753.         case 5:
  754.             Aa = Vb;
  755.             Ub = (Ub - Vb) & -1;
  756.             Ba = Ub;
  757.             Ca = 8;
  758.             break;
  759.         case 6:
  760.             Ub = Ub ^ Vb;
  761.             Ba = Ub;
  762.             Ca = 14;
  763.             break;
  764.         case 7:
  765.             Aa = Vb;
  766.             Ba = (Ub - Vb) & -1;
  767.             Ca = 8;
  768.             break;
  769.         default:
  770.             throw "arith" + 32 + ": invalid op";
  771.         }
  772.         return Ub;
  773.     }
  774.     function ec(ia) {
  775.         if (Ca < 25) {
  776.             Da = Ca;
  777.         }
  778.         Ea = (ia + 1) & -1;
  779.         Ca = 27;
  780.         return Ea;
  781.     }
  782.     function fc(ia) {
  783.         if (Ca < 25) {
  784.             Da = Ca;
  785.         }
  786.         Ea = (ia - 1) & -1;
  787.         Ca = 30;
  788.         return Ea;
  789.     }
  790.     function gc(La, Ub, Vb) {
  791.         var hc, Wb;
  792.         switch (La) {
  793.         case 0:
  794.             if (Vb & 0x1f) {
  795.                 Vb &= 0x7;
  796.                 Ub &= 0xff;
  797.                 hc = Ub;
  798.                 Ub = (Ub << Vb) | (Ub >>> (8 - Vb));
  799.                 Aa = ic() & ~ (0x0800 | 0x0001);
  800.                 Aa |= (Ub & 0x0001) | (((hc ^ Ub) << 4) & 0x0800);
  801.                 Ca = 24;
  802.             }
  803.             break;
  804.         case 1:
  805.             if (Vb & 0x1f) {
  806.                 Vb &= 0x7;
  807.                 Ub &= 0xff;
  808.                 hc = Ub;
  809.                 Ub = (Ub >>> Vb) | (Ub << (8 - Vb));
  810.                 Aa = ic() & ~ (0x0800 | 0x0001);
  811.                 Aa |= ((Ub >> 7) & 0x0001) | (((hc ^ Ub) << 4) & 0x0800);
  812.                 Ca = 24;
  813.             }
  814.             break;
  815.         case 2:
  816.             Vb = da[Vb & 0x1f];
  817.             if (Vb) {
  818.                 Ub &= 0xff;
  819.                 hc = Ub;
  820.                 Wb = Xb(2);
  821.                 Ub = (Ub << Vb) | (Wb << (Vb - 1));
  822.                 if (Vb > 1) Ub |= hc >>> (9 - Vb);
  823.                 Aa = ic() & ~ (0x0800 | 0x0001);
  824.                 Aa |= (((hc ^ Ub) << 4) & 0x0800) | ((hc >> (8 - Vb)) & 0x0001);
  825.                 Ca = 24;
  826.             }
  827.             break;
  828.         case 3:
  829.             Vb = da[Vb & 0x1f];
  830.             if (Vb) {
  831.                 Ub &= 0xff;
  832.                 hc = Ub;
  833.                 Wb = Xb(2);
  834.                 Ub = (Ub >>> Vb) | (Wb << (8 - Vb));
  835.                 if (Vb > 1) Ub |= hc << (9 - Vb);
  836.                 Aa = ic() & ~ (0x0800 | 0x0001);
  837.                 Aa |= (((hc ^ Ub) << 4) & 0x0800) | ((hc >> (Vb - 1)) & 0x0001);
  838.                 Ca = 24;
  839.             }
  840.             break;
  841.         case 4:
  842.         case 6:
  843.             Vb &= 0x1f;
  844.             if (Vb) {
  845.                 Aa = Ub << (Vb - 1);
  846.                 Ba = Ub = Ub << Vb;
  847.                 Ca = 15;
  848.             }
  849.             break;
  850.         case 5:
  851.             Vb &= 0x1f;
  852.             if (Vb) {
  853.                 Ub &= 0xff;
  854.                 Aa = Ub >>> (Vb - 1);
  855.                 Ba = Ub = Ub >>> Vb;
  856.                 Ca = 18;
  857.             }
  858.             break;
  859.         case 7:
  860.             Vb &= 0x1f;
  861.             if (Vb) {
  862.                 Ub = (Ub << 24) >> 24;
  863.                 Aa = Ub >> (Vb - 1);
  864.                 Ba = Ub = Ub >> Vb;
  865.                 Ca = 18;
  866.             }
  867.             break;
  868.         default:
  869.             throw "unsupported shift8=" + La;
  870.         }
  871.         return Ub;
  872.     }
  873.     function jc(La, Ub, Vb) {
  874.         var hc, Wb;
  875.         switch (La) {
  876.         case 0:
  877.             if (Vb & 0x1f) {
  878.                 Vb &= 0xf;
  879.                 Ub &= 0xffff;
  880.                 hc = Ub;
  881.                 Ub = (Ub << Vb) | (Ub >>> (16 - Vb));
  882.                 Aa = ic() & ~ (0x0800 | 0x0001);
  883.                 Aa |= (Ub & 0x0001) | (((hc ^ Ub) >> 4) & 0x0800);
  884.                 Ca = 24;
  885.             }
  886.             break;
  887.         case 1:
  888.             if (Vb & 0x1f) {
  889.                 Vb &= 0xf;
  890.                 Ub &= 0xffff;
  891.                 hc = Ub;
  892.                 Ub = (Ub >>> Vb) | (Ub << (16 - Vb));
  893.                 Aa = ic() & ~ (0x0800 | 0x0001);
  894.                 Aa |= ((Ub >> 15) & 0x0001) | (((hc ^ Ub) >> 4) & 0x0800);
  895.                 Ca = 24;
  896.             }
  897.             break;
  898.         case 2:
  899.             Vb = ca[Vb & 0x1f];
  900.             if (Vb) {
  901.                 Ub &= 0xffff;
  902.                 hc = Ub;
  903.                 Wb = Xb(2);
  904.                 Ub = (Ub << Vb) | (Wb << (Vb - 1));
  905.                 if (Vb > 1) Ub |= hc >>> (17 - Vb);
  906.                 Aa = ic() & ~ (0x0800 | 0x0001);
  907.                 Aa |= (((hc ^ Ub) >> 4) & 0x0800) | ((hc >> (16 - Vb)) & 0x0001);
  908.                 Ca = 24;
  909.             }
  910.             break;
  911.         case 3:
  912.             Vb = ca[Vb & 0x1f];
  913.             if (Vb) {
  914.                 Ub &= 0xffff;
  915.                 hc = Ub;
  916.                 Wb = Xb(2);
  917.                 Ub = (Ub >>> Vb) | (Wb << (16 - Vb));
  918.                 if (Vb > 1) Ub |= hc << (17 - Vb);
  919.                 Aa = ic() & ~ (0x0800 | 0x0001);
  920.                 Aa |= (((hc ^ Ub) >> 4) & 0x0800) | ((hc >> (Vb - 1)) & 0x0001);
  921.                 Ca = 24;
  922.             }
  923.             break;
  924.         case 4:
  925.         case 6:
  926.             Vb &= 0x1f;
  927.             if (Vb) {
  928.                 Aa = Ub << (Vb - 1);
  929.                 Ba = Ub = Ub << Vb;
  930.                 Ca = 16;
  931.             }
  932.             break;
  933.         case 5:
  934.             Vb &= 0x1f;
  935.             if (Vb) {
  936.                 Ub &= 0xffff;
  937.                 Aa = Ub >>> (Vb - 1);
  938.                 Ba = Ub = Ub >>> Vb;
  939.                 Ca = 19;
  940.             }
  941.             break;
  942.         case 7:
  943.             Vb &= 0x1f;
  944.             if (Vb) {
  945.                 Ub = (Ub << 16) >> 16;
  946.                 Aa = Ub >> (Vb - 1);
  947.                 Ba = Ub = Ub >> Vb;
  948.                 Ca = 19;
  949.             }
  950.             break;
  951.         default:
  952.             throw "unsupported shift16=" + La;
  953.         }
  954.         return Ub;
  955.     }
  956.     function kc(La, Ub, Vb) {
  957.         var hc, Wb;
  958.         switch (La) {
  959.         case 0:
  960.             Vb &= 0x1f;
  961.             if (Vb) {
  962.                 hc = Ub;
  963.                 Ub = (Ub << Vb) | (Ub >>> (32 - Vb));
  964.                 Aa = ic() & ~ (0x0800 | 0x0001);
  965.                 Aa |= (Ub & 0x0001) | (((hc ^ Ub) >> 20) & 0x0800);
  966.                 Ca = 24;
  967.             }
  968.             break;
  969.         case 1:
  970.             Vb &= 0x1f;
  971.             if (Vb) {
  972.                 hc = Ub;
  973.                 Ub = (Ub >>> Vb) | (Ub << (32 - Vb));
  974.                 Aa = ic() & ~ (0x0800 | 0x0001);
  975.                 Aa |= ((Ub >> 31) & 0x0001) | (((hc ^ Ub) >> 20) & 0x0800);
  976.                 Ca = 24;
  977.             }
  978.             break;
  979.         case 2:
  980.             Vb &= 0x1f;
  981.             if (Vb) {
  982.                 hc = Ub;
  983.                 Wb = Xb(2);
  984.                 Ub = (Ub << Vb) | (Wb << (Vb - 1));
  985.                 if (Vb > 1) Ub |= hc >>> (33 - Vb);
  986.                 Aa = ic() & ~ (0x0800 | 0x0001);
  987.                 Aa |= (((hc ^ Ub) >> 20) & 0x0800) | ((hc >> (32 - Vb)) & 0x0001);
  988.                 Ca = 24;
  989.             }
  990.             break;
  991.         case 3:
  992.             Vb &= 0x1f;
  993.             if (Vb) {
  994.                 hc = Ub;
  995.                 Wb = Xb(2);
  996.                 Ub = (Ub >>> Vb) | (Wb << (32 - Vb));
  997.                 if (Vb > 1) Ub |= hc << (33 - Vb);
  998.                 Aa = ic() & ~ (0x0800 | 0x0001);
  999.                 Aa |= (((hc ^ Ub) >> 20) & 0x0800) | ((hc >> (Vb - 1)) & 0x0001);
  1000.                 Ca = 24;
  1001.             }
  1002.             break;
  1003.         case 4:
  1004.         case 6:
  1005.             Vb &= 0x1f;
  1006.             if (Vb) {
  1007.                 Aa = Ub << (Vb - 1);
  1008.                 Ba = Ub = Ub << Vb;
  1009.                 Ca = 17;
  1010.             }
  1011.             break;
  1012.         case 5:
  1013.             Vb &= 0x1f;
  1014.             if (Vb) {
  1015.                 Aa = Ub >>> (Vb - 1);
  1016.                 Ba = Ub = Ub >>> Vb;
  1017.                 Ca = 20;
  1018.             }
  1019.             break;
  1020.         case 7:
  1021.             Vb &= 0x1f;
  1022.             if (Vb) {
  1023.                 Aa = Ub >> (Vb - 1);
  1024.                 Ba = Ub = Ub >> Vb;
  1025.                 Ca = 20;
  1026.             }
  1027.             break;
  1028.         default:
  1029.             throw "unsupported shift32=" + La;
  1030.         }
  1031.         return Ub;
  1032.     }
  1033.     function lc(Ub, Vb, mc) {
  1034.         mc &= 0x1f;
  1035.         if (mc) {
  1036.             Aa = Ub << (mc - 1);
  1037.             Ba = Ub = (Ub << mc) | (Vb >>> (32 - mc));
  1038.             Ca = 17;
  1039.         }
  1040.         return Ub;
  1041.     }
  1042.     function nc(Ub, Vb, mc) {
  1043.         mc &= 0x1f;
  1044.         if (mc) {
  1045.             Aa = Ub >> (mc - 1);
  1046.             Ba = Ub = (Ub >>> mc) | (Vb << (32 - mc));
  1047.             Ca = 20;
  1048.         }
  1049.         return Ub;
  1050.     }
  1051.     function oc(Ub, Vb) {
  1052.         Vb &= 0x1f;
  1053.         Aa = Ub >> Vb;
  1054.         Ca = 20;
  1055.     }
  1056.     function pc(Ub, Vb) {
  1057.         Vb &= 0x1f;
  1058.         Aa = Ub >> Vb;
  1059.         Ub |= (1 << Vb);
  1060.         Ca = 20;
  1061.         return Ub;
  1062.     }
  1063.     function qc(Ub, Vb) {
  1064.         Vb &= 0x1f;
  1065.         Aa = Ub >> Vb;
  1066.         Ub &= ~ (1 << Vb);
  1067.         Ca = 20;
  1068.         return Ub;
  1069.     }
  1070.     function rc(Ub, Vb) {
  1071.         Vb &= 0x1f;
  1072.         Aa = Ub >> Vb;
  1073.         Ub ^= (1 << Vb);
  1074.         Ca = 20;
  1075.         return Ub;
  1076.     }
  1077.     function sc(Ub, Vb) {
  1078.         if (Vb) {
  1079.             Ub = 0;
  1080.             while ((Vb & 1) == 0) {
  1081.                 Ub++;
  1082.                 Vb >>= 1;
  1083.             }
  1084.             Ba = 1;
  1085.         } else {
  1086.             Ba = 0;
  1087.         }
  1088.         Ca = 14;
  1089.         return Ub;
  1090.     }
  1091.     function tc(Ub, Vb) {
  1092.         if (Vb) {
  1093.             Ub = 31;
  1094.             while (Vb >= 0) {
  1095.                 Ub--;
  1096.                 Vb <<= 1;
  1097.             }
  1098.             Ba = 1;
  1099.         } else {
  1100.             Ba = 0;
  1101.         }
  1102.         Ca = 14;
  1103.         return Ub;
  1104.     }
  1105.     function uc(b) {
  1106.         var a, q, r;
  1107.         a = za[0] & 0xffff;
  1108.         b &= 0xff;
  1109.         if ((a >> 8) >= b) vc(0);
  1110.         q = (a / b) & -1;
  1111.         r = (a % b);
  1112.         Sb(0, (q & 0xff) | (r << 8));
  1113.     }
  1114.     function wc(b) {
  1115.         var a, q, r;
  1116.         a = (za[0] << 16) >> 16;
  1117.         b = (b << 24) >> 24;
  1118.         if (b == 0) vc(0);
  1119.         q = (a / b) & -1;
  1120.         if (((q << 24) >> 24) != q) vc(0);
  1121.         r = (a % b);
  1122.         Sb(0, (q & 0xff) | (r << 8));
  1123.     }
  1124.     function xc(b) {
  1125.         var a, q, r;
  1126.         a = (za[2] << 16) | (za[0] & 0xffff);
  1127.         b &= 0xffff;
  1128.         if ((a >>> 16) >= b) vc(0);
  1129.         q = (a / b) & -1;
  1130.         r = (a % b);
  1131.         Sb(0, q);
  1132.         Sb(2, r);
  1133.     }
  1134.     function yc(b) {
  1135.         var a, q, r;
  1136.         a = (za[2] << 16) | (za[0] & 0xffff);
  1137.         b = (b << 16) >> 16;
  1138.         if (b == 0) vc(0);
  1139.         q = (a / b) & -1;
  1140.         if (((q << 16) >> 16) != q) vc(0);
  1141.         r = (a % b);
  1142.         Sb(0, q);
  1143.         Sb(2, r);
  1144.     }
  1145.     function zc(Ac, Bc, b) {
  1146.         var a, i, Cc;
  1147.         Ac = Ac >>> 0;
  1148.         Bc = Bc >>> 0;
  1149.         b = b >>> 0;
  1150.         if (Ac >= b) {
  1151.             vc(0);
  1152.         }
  1153.         if (Ac >= 0 && Ac <= 0x200000) {
  1154.             a = Ac * 4294967296 + Bc;
  1155.             Oa = (a % b) & -1;
  1156.             return (a / b) & -1;
  1157.         } else {
  1158.             for (i = 0; i < 32; i++) {
  1159.                 Cc = Ac >> 31;
  1160.                 Ac = ((Ac << 1) | (Bc >>> 31)) >>> 0;
  1161.                 if (Cc || Ac >= b) {
  1162.                     Ac = Ac - b;
  1163.                     Bc = (Bc << 1) | 1;
  1164.                 } else {
  1165.                     Bc = Bc << 1;
  1166.                 }
  1167.             }
  1168.             Oa = Ac & -1;
  1169.             return Bc;
  1170.         }
  1171.     }
  1172.     function Dc(Ac, Bc, b) {
  1173.         var Ec, Fc, q;
  1174.         if (Ac < 0) {
  1175.             Ec = 1;
  1176.             Ac = ~Ac;
  1177.             Bc = (-Bc) & -1;
  1178.             if (Bc == 0) Ac = (Ac + 1) & -1;
  1179.         } else {
  1180.             Ec = 0;
  1181.         }
  1182.         if (b < 0) {
  1183.             b = -b & -1;
  1184.             Fc = 1;
  1185.         } else {
  1186.             Fc = 0;
  1187.         }
  1188.         q = zc(Ac, Bc, b);
  1189.         Fc ^= Ec;
  1190.         if (Fc) {
  1191.             if ((q >>> 0) > 0x80000000) vc(0);
  1192.             q = (-q) & -1;
  1193.         } else {
  1194.             if ((q >>> 0) >= 0x80000000) vc(0);
  1195.         }
  1196.         if (Ec) {
  1197.             Oa = (-Oa) & -1;
  1198.         }
  1199.         return q;
  1200.     }
  1201.     function Gc(a, b) {
  1202.         a &= 0xff;
  1203.         b &= 0xff;
  1204.         Ba = (za[0] & 0xff) * (b & 0xff);
  1205.         Aa = Ba >> 8;
  1206.         Ca = 21;
  1207.         return Ba;
  1208.     }
  1209.     function Hc(a, b) {
  1210.         a = (a << 24) >> 24;
  1211.         b = (b << 24) >> 24;
  1212.         Ba = (a * b) & -1;
  1213.         Aa = (Ba != ((Ba << 24) >> 24)) >> 0;
  1214.         Ca = 21;
  1215.         return Ba;
  1216.     }
  1217.     function Ic(a, b) {
  1218.         Ba = ((a & 0xffff) * (b & 0xffff)) & -1;
  1219.         Aa = Ba >>> 16;
  1220.         Ca = 22;
  1221.         return Ba;
  1222.     }
  1223.     function Jc(a, b) {
  1224.         a = (a << 16) >> 16;
  1225.         b = (b << 16) >> 16;
  1226.         Ba = (a * b) & -1;
  1227.         Aa = (Ba != ((Ba << 16) >> 16)) >> 0;
  1228.         Ca = 22;
  1229.         return Ba;
  1230.     }
  1231.     function Kc(a, b) {
  1232.         var r, Bc, Ac, Lc, Mc, m;
  1233.         a = a >>> 0;
  1234.         b = b >>> 0;
  1235.         r = a * b;
  1236.         if (r <= 0xffffffff) {
  1237.             Oa = 0;
  1238.             r &= -1;
  1239.         } else {
  1240.             Bc = a & 0xffff;
  1241.             Ac = a >>> 16;
  1242.             Lc = b & 0xffff;
  1243.             Mc = b >>> 16;
  1244.             r = Bc * Lc;
  1245.             Oa = Ac * Mc;
  1246.             m = Bc * Mc;
  1247.             r += (((m & 0xffff) << 16) >>> 0);
  1248.             Oa += (m >>> 16);
  1249.             if (r >= 4294967296) {
  1250.                 r -= 4294967296;
  1251.                 Oa++;
  1252.             }
  1253.             m = Ac * Lc;
  1254.             r += (((m & 0xffff) << 16) >>> 0);
  1255.             Oa += (m >>> 16);
  1256.             if (r >= 4294967296) {
  1257.                 r -= 4294967296;
  1258.                 Oa++;
  1259.             }
  1260.             r &= -1;
  1261.             Oa &= -1;
  1262.         }
  1263.         return r;
  1264.     }
  1265.     function Nc(a, b) {
  1266.         Ba = Kc(a, b);
  1267.         Aa = Oa;
  1268.         Ca = 23;
  1269.         return Ba;
  1270.     }
  1271.     function Oc(a, b) {
  1272.         var s, r;
  1273.         s = 0;
  1274.         if (a < 0) {
  1275.             a = -a;
  1276.             s = 1;
  1277.         }
  1278.         if (b < 0) {
  1279.             b = -b;
  1280.             s ^= 1;
  1281.         }
  1282.         r = Kc(a, b);
  1283.         if (s) {
  1284.             Oa = ~Oa;
  1285.             r = (-r) & -1;
  1286.             if (r == 0) {
  1287.                 Oa = (Oa + 1) & -1;
  1288.             }
  1289.         }
  1290.         Ba = r;
  1291.         Aa = (Oa - (r >> 31)) & -1;
  1292.         Ca = 23;
  1293.         return r;
  1294.     }
  1295.     function Pc(Ca) {
  1296.         var Ub, Qc;
  1297.         switch (Ca) {
  1298.         case 0:
  1299.             Qc = (Ba & 0xff) < (Aa & 0xff);
  1300.             break;
  1301.         case 1:
  1302.             Qc = (Ba & 0xffff) < (Aa & 0xffff);
  1303.             break;
  1304.         case 2:
  1305.             Qc = (Ba >>> 0) < (Aa >>> 0);
  1306.             break;
  1307.         case 3:
  1308.             Qc = (Ba & 0xff) <= (Aa & 0xff);
  1309.             break;
  1310.         case 4:
  1311.             Qc = (Ba & 0xffff) <= (Aa & 0xffff);
  1312.             break;
  1313.         case 5:
  1314.             Qc = (Ba >>> 0) <= (Aa >>> 0);
  1315.             break;
  1316.         case 6:
  1317.             Qc = ((Ba + Aa) & 0xff) < (Aa & 0xff);
  1318.             break;
  1319.         case 7:
  1320.             Qc = ((Ba + Aa) & 0xffff) < (Aa & 0xffff);
  1321.             break;
  1322.         case 8:
  1323.             Qc = ((Ba + Aa) >>> 0) < (Aa >>> 0);
  1324.             break;
  1325.         case 9:
  1326.             Ub = (Ba + Aa + 1) & 0xff;
  1327.             Qc = Ub <= (Aa & 0xff);
  1328.             break;
  1329.         case 10:
  1330.             Ub = (Ba + Aa + 1) & 0xffff;
  1331.             Qc = Ub <= (Aa & 0xffff);
  1332.             break;
  1333.         case 11:
  1334.             Ub = (Ba + Aa + 1) >>> 0;
  1335.             Qc = Ub <= (Aa >>> 0);
  1336.             break;
  1337.         case 12:
  1338.         case 13:
  1339.         case 14:
  1340.             Qc = 0;
  1341.             break;
  1342.         case 15:
  1343.             Qc = (Aa >> 7) & 1;
  1344.             break;
  1345.         case 16:
  1346.             Qc = (Aa >> 15) & 1;
  1347.             break;
  1348.         case 17:
  1349.             Qc = (Aa >> 31) & 1;
  1350.             break;
  1351.         case 18:
  1352.         case 19:
  1353.         case 20:
  1354.             Qc = Aa & 1;
  1355.             break;
  1356.         case 21:
  1357.         case 22:
  1358.         case 23:
  1359.             Qc = Aa != 0;
  1360.             break;
  1361.         case 24:
  1362.             Qc = Aa & 1;
  1363.             break;
  1364.         default:
  1365.             throw "GET_CARRY: unsupported cc_op=" + Ca;
  1366.         }
  1367.         return Qc;
  1368.     }
  1369.     function Xb(Rc) {
  1370.         var Qc, Ub;
  1371.         switch (Rc >> 1) {
  1372.         case 0:
  1373.             switch (Ca) {
  1374.             case 0:
  1375.                 Ub = (Ba - Aa) & -1;
  1376.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 7) & 1;
  1377.                 break;
  1378.             case 1:
  1379.                 Ub = (Ba - Aa) & -1;
  1380.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 15) & 1;
  1381.                 break;
  1382.             case 2:
  1383.                 Ub = (Ba - Aa) & -1;
  1384.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 31) & 1;
  1385.                 break;
  1386.             case 3:
  1387.                 Ub = (Ba - Aa - 1) & -1;
  1388.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 7) & 1;
  1389.                 break;
  1390.             case 4:
  1391.                 Ub = (Ba - Aa - 1) & -1;
  1392.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 15) & 1;
  1393.                 break;
  1394.             case 5:
  1395.                 Ub = (Ba - Aa - 1) & -1;
  1396.                 Qc = (((Ub ^ Aa ^ -1) & (Ub ^ Ba)) >> 31) & 1;
  1397.                 break;
  1398.             case 6:
  1399.                 Ub = (Ba + Aa) & -1;
  1400.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 7) & 1;
  1401.                 break;
  1402.             case 7:
  1403.                 Ub = (Ba + Aa) & -1;
  1404.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 15) & 1;
  1405.                 break;
  1406.             case 8:
  1407.                 Ub = (Ba + Aa) & -1;
  1408.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 31) & 1;
  1409.                 break;
  1410.             case 9:
  1411.                 Ub = (Ba + Aa + 1) & -1;
  1412.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 7) & 1;
  1413.                 break;
  1414.             case 10:
  1415.                 Ub = (Ba + Aa + 1) & -1;
  1416.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 15) & 1;
  1417.                 break;
  1418.             case 11:
  1419.                 Ub = (Ba + Aa + 1) & -1;
  1420.                 Qc = (((Ub ^ Aa) & (Ub ^ Ba)) >> 31) & 1;
  1421.                 break;
  1422.             case 12:
  1423.             case 13:
  1424.             case 14:
  1425.                 Qc = 0;
  1426.                 break;
  1427.             case 15:
  1428.             case 18:
  1429.                 Qc = ((Aa ^ Ba) >> 7) & 1;
  1430.                 break;
  1431.             case 16:
  1432.             case 19:
  1433.                 Qc = ((Aa ^ Ba) >> 15) & 1;
  1434.                 break;
  1435.             case 17:
  1436.             case 20:
  1437.                 Qc = ((Aa ^ Ba) >> 31) & 1;
  1438.                 break;
  1439.             case 21:
  1440.             case 22:
  1441.             case 23:
  1442.                 Qc = Aa != 0;
  1443.                 break;
  1444.             case 24:
  1445.                 Qc = (Aa >> 11) & 1;
  1446.                 break;
  1447.             case 25:
  1448.                 Qc = (Ea & 0xff) == 0x80;
  1449.                 break;
  1450.             case 26:
  1451.                 Qc = (Ea & 0xffff) == 0x8000;
  1452.                 break;
  1453.             case 27:
  1454.                 Qc = (Ea == -2147483648);
  1455.                 break;
  1456.             case 28:
  1457.                 Qc = (Ea & 0xff) == 0x7f;
  1458.                 break;
  1459.             case 29:
  1460.                 Qc = (Ea & 0xffff) == 0x7fff;
  1461.                 break;
  1462.             case 30:
  1463.                 Qc = Ea == 0x7fffffff;
  1464.                 break;
  1465.             default:
  1466.                 throw "JO: unsupported cc_op=" + Ca;
  1467.             }
  1468.             break;
  1469.         case 1:
  1470.             if (Ca >= 25) {
  1471.                 Qc = Pc(Da);
  1472.             } else {
  1473.                 Qc = Pc(Ca);
  1474.             }
  1475.             break;
  1476.         case 2:
  1477.             switch (Ca) {
  1478.             case 0:
  1479.             case 3:
  1480.             case 6:
  1481.             case 9:
  1482.             case 12:
  1483.             case 15:
  1484.             case 18:
  1485.             case 21:
  1486.                 Qc = (Ba & 0xff) == 0;
  1487.                 break;
  1488.             case 1:
  1489.             case 4:
  1490.             case 7:
  1491.             case 10:
  1492.             case 13:
  1493.             case 16:
  1494.             case 19:
  1495.             case 22:
  1496.                 Qc = (Ba & 0xffff) == 0;
  1497.                 break;
  1498.             case 2:
  1499.             case 5:
  1500.             case 8:
  1501.             case 11:
  1502.             case 14:
  1503.             case 17:
  1504.             case 20:
  1505.             case 23:
  1506.                 Qc = Ba == 0;
  1507.                 break;
  1508.             case 24:
  1509.                 Qc = (Aa >> 6) & 1;
  1510.                 break;
  1511.             case 25:
  1512.             case 28:
  1513.                 Qc = (Ea & 0xff) == 0;
  1514.                 break;
  1515.             case 26:
  1516.             case 29:
  1517.                 Qc = (Ea & 0xffff) == 0;
  1518.                 break;
  1519.             case 27:
  1520.             case 30:
  1521.                 Qc = Ea == 0;
  1522.                 break;
  1523.             default:
  1524.                 throw "JZ: unsupported cc_op=" + Ca;
  1525.             };
  1526.             break;
  1527.         case 3:
  1528.             switch (Ca) {
  1529.             case 6:
  1530.                 Qc = ((Ba + Aa) & 0xff) <= (Aa & 0xff);
  1531.                 break;
  1532.             case 7:
  1533.                 Qc = ((Ba + Aa) & 0xffff) <= (Aa & 0xffff);
  1534.                 break;
  1535.             case 8:
  1536.                 Qc = ((Ba + Aa) >>> 0) <= (Aa >>> 0);
  1537.                 break;
  1538.             case 24:
  1539.                 Qc = (Aa & (0x0040 | 0x0001)) != 0;
  1540.                 break;
  1541.             default:
  1542.                 Qc = Xb(2) | Xb(4);
  1543.                 break;
  1544.             }
  1545.             break;
  1546.         case 4:
  1547.             switch (Ca) {
  1548.             case 0:
  1549.             case 3:
  1550.             case 6:
  1551.             case 9:
  1552.             case 12:
  1553.             case 15:
  1554.             case 18:
  1555.             case 21:
  1556.                 Qc = (Ba >> 7) & 1;
  1557.                 break;
  1558.             case 1:
  1559.             case 4:
  1560.             case 7:
  1561.             case 10:
  1562.             case 13:
  1563.             case 16:
  1564.             case 19:
  1565.             case 22:
  1566.                 Qc = (Ba >> 15) & 1;
  1567.                 break;
  1568.             case 2:
  1569.             case 5:
  1570.             case 8:
  1571.             case 11:
  1572.             case 14:
  1573.             case 17:
  1574.             case 20:
  1575.             case 23:
  1576.                 Qc = Ba < 0;
  1577.                 break;
  1578.             case 24:
  1579.                 Qc = (Aa >> 7) & 1;
  1580.                 break;
  1581.             case 25:
  1582.             case 28:
  1583.                 Qc = (Ea >> 7) & 1;
  1584.                 break;
  1585.             case 26:
  1586.             case 29:
  1587.                 Qc = (Ea >> 15) & 1;
  1588.                 break;
  1589.             case 27:
  1590.             case 30:
  1591.                 Qc = Ea < 0;
  1592.                 break;
  1593.             default:
  1594.                 throw "JS: unsupported cc_op=" + Ca;
  1595.             }
  1596.             break;
  1597.         case 5:
  1598.             switch (Ca) {
  1599.             case 0:
  1600.             case 3:
  1601.             case 6:
  1602.             case 9:
  1603.             case 12:
  1604.             case 15:
  1605.             case 18:
  1606.             case 21:
  1607.             case 1:
  1608.             case 4:
  1609.             case 7:
  1610.             case 10:
  1611.             case 13:
  1612.             case 16:
  1613.             case 19:
  1614.             case 22:
  1615.             case 2:
  1616.             case 5:
  1617.             case 8:
  1618.             case 11:
  1619.             case 14:
  1620.             case 17:
  1621.             case 20:
  1622.             case 23:
  1623.                 Qc = ba[Ba & 0xff];
  1624.                 break;
  1625.             case 24:
  1626.                 Qc = (Aa >> 2) & 1;
  1627.                 break;
  1628.             case 25:
  1629.             case 28:
  1630.             case 26:
  1631.             case 29:
  1632.             case 27:
  1633.             case 30:
  1634.                 Qc = ba[Ea & 0xff];
  1635.                 break;
  1636.             default:
  1637.                 throw "JP: unsupported cc_op=" + Ca;
  1638.             }
  1639.             break;
  1640.         case 6:
  1641.             switch (Ca) {
  1642.             case 6:
  1643.                 Qc = ((Ba + Aa) << 24) < (Aa << 24);
  1644.                 break;
  1645.             case 7:
  1646.                 Qc = ((Ba + Aa) << 16) < (Aa << 16);
  1647.                 break;
  1648.             case 8:
  1649.                 Qc = ((Ba + Aa) & -1) < Aa;
  1650.                 break;
  1651.             case 12:
  1652.                 Qc = (Ba << 24) < 0;
  1653.                 break;
  1654.             case 13:
  1655.                 Qc = (Ba << 16) < 0;
  1656.                 break;
  1657.             case 14:
  1658.                 Qc = Ba < 0;
  1659.                 break;
  1660.             case 24:
  1661.                 Qc = ((Aa >> 7) ^ (Aa >> 11)) & 1;
  1662.                 break;
  1663.             case 25:
  1664.             case 28:
  1665.                 Qc = (Ea << 24) < 0;
  1666.                 break;
  1667.             case 26:
  1668.             case 29:
  1669.                 Qc = (Ea << 16) < 0;
  1670.                 break;
  1671.             case 27:
  1672.             case 30:
  1673.                 Qc = Ea < 0;
  1674.                 break;
  1675.             default:
  1676.                 Qc = Xb(8) ^ Xb(0);
  1677.                 break;
  1678.             }
  1679.             break;
  1680.         case 7:
  1681.             switch (Ca) {
  1682.             case 6:
  1683.                 Qc = ((Ba + Aa) << 24) <= (Aa << 24);
  1684.                 break;
  1685.             case 7:
  1686.                 Qc = ((Ba + Aa) << 16) <= (Aa << 16);
  1687.                 break;
  1688.             case 8:
  1689.                 Qc = ((Ba + Aa) & -1) <= Aa;
  1690.                 break;
  1691.             case 12:
  1692.                 Qc = (Ba << 24) <= 0;
  1693.                 break;
  1694.             case 13:
  1695.                 Qc = (Ba << 16) <= 0;
  1696.                 break;
  1697.             case 14:
  1698.                 Qc = Ba <= 0;
  1699.                 break;
  1700.             case 24:
  1701.                 Qc = (((Aa >> 7) ^ (Aa >> 11)) | (Aa >> 6)) & 1;
  1702.                 break;
  1703.             case 25:
  1704.             case 28:
  1705.                 Qc = (Ea << 24) <= 0;
  1706.                 break;
  1707.             case 26:
  1708.             case 29:
  1709.                 Qc = (Ea << 16) <= 0;
  1710.                 break;
  1711.             case 27:
  1712.             case 30:
  1713.                 Qc = Ea <= 0;
  1714.                 break;
  1715.             default:
  1716.                 Qc = (Xb(8) ^ Xb(0)) | Xb(4);
  1717.                 break;
  1718.             }
  1719.             break;
  1720.         default:
  1721.             throw "unsupported cond: " + Rc;
  1722.         }
  1723.         return Qc ^ (Rc & 1);
  1724.     }
  1725.     function ic() {
  1726.         return (Xb(2) << 0) | (Xb(10) << 2) | (Xb(4) << 6) | (Xb(8) << 7) | (Xb(0) << 11);
  1727.     }
  1728.     function Sc() {
  1729.         var Tc;
  1730.         Tc = ic();
  1731.         Tc |= ya.df & 0x00000400;
  1732.         Tc |= ya.eflags;
  1733.         return Tc;
  1734.     }
  1735.     function Uc(Tc, Vc) {
  1736.         Ca = 24;
  1737.         Aa = Tc & (0x0800 | 0x0080 | 0x0040 | 0x0010 | 0x0004 | 0x0001);
  1738.         ya.df = 1 - (2 * ((Tc >> 10) & 1));
  1739.         ya.eflags = (ya.eflags & ~Vc) | (Tc & Vc);
  1740.     }
  1741.     function Wc() {
  1742.         return ya.cycle_count + (xa - Ma);
  1743.     }
  1744.     function Xc(va) {
  1745.         throw "CPU abort: " + va;
  1746.     }
  1747.     function Yc() {
  1748.         ya.eip = Ib;
  1749.         ya.cc_src = Aa;
  1750.         ya.cc_dst = Ba;
  1751.         ya.cc_op = Ca;
  1752.         ya.cc_op2 = Da;
  1753.         ya.cc_dst2 = Ea;
  1754.         ya.dump();
  1755.     }
  1756.     function Zc(intno, error_code) {
  1757.         throw {
  1758.             intno: intno,
  1759.             error_code: error_code
  1760.         };
  1761.     }
  1762.     function vc(intno) {
  1763.         Zc(intno, 0);
  1764.     }
  1765.     function ad(bd) {
  1766.         ya.cpl = bd;
  1767.         if (ya.cpl == 3) {
  1768.             Za = Xa;
  1769.             ab = Ya;
  1770.         } else {
  1771.             Za = Va;
  1772.             ab = Wa;
  1773.         }
  1774.     }
  1775.     function cd(ha, dd) {
  1776.         var cb;
  1777.         if (dd) {
  1778.             cb = ab[ha >>> 12];
  1779.         } else {
  1780.             cb = Za[ha >>> 12];
  1781.         }
  1782.         if (cb == -1) {
  1783.             db(ha, dd, ya.cpl == 3);
  1784.             if (dd) {
  1785.                 cb = ab[ha >>> 12];
  1786.             } else {
  1787.                 cb = Za[ha >>> 12];
  1788.             }
  1789.         }
  1790.         return cb ^ ha;
  1791.     }
  1792.     function ed() {
  1793.         var fd, l, gd, hd, i, id;
  1794.         fd = za[1] >>> 0;
  1795.         l = (4096 - (za[6] & 0xfff)) >> 2;
  1796.         if (fd > l) fd = l;
  1797.         l = (4096 - (za[7] & 0xfff)) >> 2;
  1798.         if (fd > l) fd = l;
  1799.         if (fd) {
  1800.             gd = cd(za[6], 0);
  1801.             hd = cd(za[7], 1);
  1802.             hd >>= 2;
  1803.             gd >>= 2;
  1804.             for (i = 0; i < fd; i++) Ta[hd + i] = Ta[gd + i];
  1805.             id = fd << 2;
  1806.             za[6] = (za[6] + id) & -1;
  1807.             za[7] = (za[7] + id) & -1;
  1808.             za[1] = (za[1] - fd) & -1;
  1809.             return true;
  1810.         }
  1811.         return false;
  1812.     }
  1813.     function jd() {
  1814.         var fd, l, hd, i, id, ia;
  1815.         fd = za[1] >>> 0;
  1816.         l = (4096 - (za[7] & 0xfff)) >> 2;
  1817.         if (fd > l) fd = l;
  1818.         if (fd) {
  1819.             hd = cd(za[7], 1);
  1820.             hd >>= 2;
  1821.             ia = za[0];
  1822.             for (i = 0; i < fd; i++) Ta[hd + i] = ia;
  1823.             id = fd << 2;
  1824.             za[7] = (za[7] + id) & -1;
  1825.             za[1] = (za[1] - fd) & -1;
  1826.             return true;
  1827.         }
  1828.         return false;
  1829.     }
  1830.     function db(kd, ld, la) {
  1831.         var md, nd, error_code, od, pd, qd, rd, dd, sd;
  1832.         if (!(ya.cr0 & (1 << 31))) {
  1833.             ya.tlb_set_page(kd & -4096, kd & -4096, 1);
  1834.         } else {
  1835.             md = (ya.cr3 & -4096) + ((kd >> 20) & 0xffc);
  1836.             nd = ya.ld32_phys(md);
  1837.             if (!(nd & 0x00000001)) {
  1838.                 error_code = 0;
  1839.             } else {
  1840.                 if (!(nd & 0x00000020)) {
  1841.                     nd |= 0x00000020;
  1842.                     ya.st32_phys(md, nd);
  1843.                 }
  1844.                 od = (nd & -4096) + ((kd >> 10) & 0xffc);
  1845.                 pd = ya.ld32_phys(od);
  1846.                 if (!(pd & 0x00000001)) {
  1847.                     error_code = 0;
  1848.                 } else {
  1849.                     qd = pd & nd;
  1850.                     if (la && !(qd & 0x00000004)) {
  1851.                         error_code = 0x01;
  1852.                     } else if (ld && !(qd & 0x00000002)) {
  1853.                         error_code = 0x01;
  1854.                     } else {
  1855.                         rd = (ld && !(pd & 0x00000040));
  1856.                         if (!(pd & 0x00000020) || rd) {
  1857.                             pd |= 0x00000020;
  1858.                             if (rd) pd |= 0x00000040;
  1859.                             ya.st32_phys(od, pd);
  1860.                         }
  1861.                         dd = 0;
  1862.                         if ((pd & 0x00000040) && (qd & 0x00000002)) dd = 1;
  1863.                         sd = 0;
  1864.                         if (qd & 0x00000004) sd = 1;
  1865.                         ya.tlb_set_page(kd & -4096, pd & -4096, dd, sd);
  1866.                         return;
  1867.                     }
  1868.                 }
  1869.             }
  1870.             error_code |= ld << 1;
  1871.             if (la) error_code |= 0x04;
  1872.             ya.cr2 = kd;
  1873.             Zc(14, error_code);
  1874.         }
  1875.     }
  1876.     function td(ud) {
  1877.         if (!(ud & (1 << 0))) Xc("real mode not supported");
  1878.         if ((ud & ((1 << 31) | (1 << 16) | (1 << 0))) != (ya.cr0 & ((1 << 31) | (1 << 16) | (1 << 0)))) {
  1879.             ya.tlb_flush_all();
  1880.         }
  1881.         ya.cr0 = ud | (1 << 4);
  1882.     }
  1883.     function vd(wd) {
  1884.         ya.cr3 = wd;
  1885.         if (ya.cr0 & (1 << 31)) {
  1886.             ya.tlb_flush_all();
  1887.         }
  1888.     }
  1889.     function xd(yd) {
  1890.         ya.cr4 = yd;
  1891.     }
  1892.     function zd(Ad) {
  1893.         if (Ad & (1 << 22)) return -1;
  1894.         else return 0xffff;
  1895.     }
  1896.     function Bd(selector) {
  1897.         var ua, Pb, Cd, Ad;
  1898.         if (selector & 0x4) ua = ya.ldt;
  1899.         else ua = ya.gdt;
  1900.         Pb = selector & ~7;
  1901.         if ((Pb + 7) > ua.limit) return null;
  1902.         ha = ua.base + Pb;
  1903.         Cd = Ab();
  1904.         ha += 4;
  1905.         Ad = Ab();
  1906.         return [Cd, Ad];
  1907.     }
  1908.     function Dd(Cd, Ad) {
  1909.         var limit;
  1910.         limit = (Cd & 0xffff) | (Ad & 0x000f0000);
  1911.         if (Ad & (1 << 23)) limit = (limit << 12) | 0xfff;
  1912.         return limit;
  1913.     }
  1914.     function Ed(Cd, Ad) {
  1915.         return (((Cd >>> 16) | ((Ad & 0xff) << 16) | (Ad & 0xff000000))) & -1;
  1916.     }
  1917.     function Fd(ua, Cd, Ad) {
  1918.         ua.base = Ed(Cd, Ad);
  1919.         ua.limit = Dd(Cd, Ad);
  1920.         ua.flags = Ad;
  1921.     }
  1922.     function Gd(Hd, selector, base, limit, flags) {
  1923.         ya.segs[Hd] = {
  1924.             selector: selector,
  1925.             base: base,
  1926.             limit: limit,
  1927.             flags: flags
  1928.         };
  1929.     }
  1930.     function Id(Jd) {
  1931.         var Kd, Pb, Ld, Md, Nd;
  1932.         if (!(ya.tr.flags & (1 << 15))) Xc("invalid tss");
  1933.         Kd = (ya.tr.flags >> 8) & 0xf;
  1934.         if ((Kd & 7) != 1) Xc("invalid tss type");
  1935.         Ld = Kd >> 3;
  1936.         Pb = (Jd * 4 + 2) << Ld;
  1937.         if (Pb + (4 << Ld) - 1 > ya.tr.limit) Zc(10, ya.tr.selector & 0xfffc);
  1938.         ha = (ya.tr.base + Pb) & -1;
  1939.         if (Ld == 0) {
  1940.             Nd = yb();
  1941.             ha += 2;
  1942.         } else {
  1943.             Nd = Ab();
  1944.             ha += 4;
  1945.         }
  1946.         Md = yb();
  1947.         return [Md, Nd];
  1948.     }
  1949.     function Od(intno, Pd, error_code, Qd, Rd) {
  1950.         var ua, Sd, Kd, Jd, selector, Td, Ud;
  1951.         var Vd, Wd, Ld;
  1952.         var e, Cd, Ad, Xd, Md, Nd, Yd, Zd;
  1953.         var ae, be;
  1954.         if (intno == 0x06) {
  1955.             var ce = Ib;
  1956.             va = "do_interrupt: intno=" + sa(intno) + " error_code=" + ra(error_code) + " EIP=" + ra(ce) + " ESP=" + ra(za[4]) + " EAX=" + ra(za[0]) + " EBX=" + ra(za[3]) + " ECX=" + ra(za[1]);
  1957.             if (intno == 0x0e) {
  1958.                 va += " CR2=" + ra(ya.cr2);
  1959.             }
  1960.             console.log(va);
  1961.             if (intno == 0x06) {
  1962.                 var va, i, n;
  1963.                 va = "Code:";
  1964.                 n = 4096 - (ce & 0xfff);
  1965.                 if (n > 15) n = 15;
  1966.                 for (i = 0; i < n; i++) {
  1967.                     ha = (ce + i) & -1;
  1968.                     va += " " + sa(eb());
  1969.                 }
  1970.                 console.log(va);
  1971.             }
  1972.         }
  1973.         Vd = 0;
  1974.         if (!Pd && !Rd) {
  1975.             switch (intno) {
  1976.             case 8:
  1977.             case 10:
  1978.             case 11:
  1979.             case 12:
  1980.             case 13:
  1981.             case 14:
  1982.             case 17:
  1983.                 Vd = 1;
  1984.                 break;
  1985.             }
  1986.         }
  1987.         if (Pd) ae = Qd;
  1988.         else ae = Ib;
  1989.         ua = ya.idt;
  1990.         if (intno * 8 + 7 > ua.limit) Zc(13, intno * 8 + 2);
  1991.         ha = (ua.base + intno * 8) & -1;
  1992.         Cd = Ab();
  1993.         ha += 4;
  1994.         Ad = Ab();
  1995.         Kd = (Ad >> 8) & 0x1f;
  1996.         switch (Kd) {
  1997.         case 5:
  1998.         case 7:
  1999.         case 6:
  2000.             throw "unsupported task gate";
  2001.         case 14:
  2002.         case 15:
  2003.             break;
  2004.         default:
  2005.             Zc(13, intno * 8 + 2);
  2006.             break;
  2007.         }
  2008.         Jd = (Ad >> 13) & 3;
  2009.         Ud = ya.cpl;
  2010.         if (Pd && Jd < Ud) Zc(13, intno * 8 + 2);
  2011.         if (!(Ad & (1 << 15))) Zc(11, intno * 8 + 2);
  2012.         selector = Cd >> 16;
  2013.         Xd = (Ad & -65536) | (Cd & 0x0000ffff);
  2014.         if ((selector & 0xfffc) == 0) Zc(13, 0);
  2015.         e = Bd(selector);
  2016.         if (!e) Zc(13, selector & 0xfffc);
  2017.         Cd = e[0];
  2018.         Ad = e[1];
  2019.         if (!(Ad & (1 << 12)) || !(Ad & ((1 << 11)))) Zc(13, selector & 0xfffc);
  2020.         Jd = (Ad >> 13) & 3;
  2021.         if (Jd > Ud) Zc(13, selector & 0xfffc);
  2022.         if (!(Ad & (1 << 15))) Zc(11, selector & 0xfffc);
  2023.         if (!(Ad & (1 << 10)) && Jd < Ud) {
  2024.             e = Id(Jd);
  2025.             Md = e[0];
  2026.             Nd = e[1];
  2027.             if ((Md & 0xfffc) == 0) Zc(10, Md & 0xfffc);
  2028.             if ((Md & 3) != Jd) Zc(10, Md & 0xfffc);
  2029.             e = Bd(Md);
  2030.             if (!e) Zc(10, Md & 0xfffc);
  2031.             Yd = e[0];
  2032.             Zd = e[1];
  2033.             Td = (Zd >> 13) & 3;
  2034.             if (Td != Jd) Zc(10, Md & 0xfffc);
  2035.             if (!(Zd & (1 << 12)) || (Zd & (1 << 11)) || !(Zd & (1 << 9))) Zc(10, Md & 0xfffc);
  2036.             if (!(Zd & (1 << 15))) Zc(10, Md & 0xfffc);
  2037.             Wd = 1;
  2038.             be = zd(Zd);
  2039.             Sd = Ed(Yd, Zd);
  2040.         } else if ((Ad & (1 << 10)) || Jd == Ud) {
  2041.             if (ya.eflags & 0x00020000) Zc(13, selector & 0xfffc);
  2042.             Wd = 0;
  2043.             be = zd(ya.segs[2].flags);
  2044.             Sd = ya.segs[2].base;
  2045.             Nd = za[4];
  2046.             Jd = Ud;
  2047.         } else {
  2048.             Zc(13, selector & 0xfffc);
  2049.             Wd = 0;
  2050.             be = 0;
  2051.             Sd = 0;
  2052.             Nd = 0;
  2053.         }
  2054.         Ld = Kd >> 3;
  2055.         if (Wd) {
  2056.             if (ya.eflags & 0x00020000) {
  2057.                 {
  2058.                     Nd = (Nd - 4) & -1;
  2059.                     ha = (Sd + (Nd & be)) & -1;
  2060.                     Gb(ya.segs[5].selector);
  2061.                 }; {
  2062.                     Nd = (Nd - 4) & -1;
  2063.                     ha = (Sd + (Nd & be)) & -1;
  2064.                     Gb(ya.segs[4].selector);
  2065.                 }; {
  2066.                     Nd = (Nd - 4) & -1;
  2067.                     ha = (Sd + (Nd & be)) & -1;
  2068.                     Gb(ya.segs[3].selector);
  2069.                 }; {
  2070.                     Nd = (Nd - 4) & -1;
  2071.                     ha = (Sd + (Nd & be)) & -1;
  2072.                     Gb(ya.segs[0].selector);
  2073.                 };
  2074.             } {
  2075.                 Nd = (Nd - 4) & -1;
  2076.                 ha = (Sd + (Nd & be)) & -1;
  2077.                 Gb(ya.segs[2].selector);
  2078.             }; {
  2079.                 Nd = (Nd - 4) & -1;
  2080.                 ha = (Sd + (Nd & be)) & -1;
  2081.                 Gb(za[4]);
  2082.             };
  2083.         } {
  2084.             Nd = (Nd - 4) & -1;
  2085.             ha = (Sd + (Nd & be)) & -1;
  2086.             Gb(Sc());
  2087.         }; {
  2088.             Nd = (Nd - 4) & -1;
  2089.             ha = (Sd + (Nd & be)) & -1;
  2090.             Gb(ya.segs[1].selector);
  2091.         }; {
  2092.             Nd = (Nd - 4) & -1;
  2093.             ha = (Sd + (Nd & be)) & -1;
  2094.             Gb(ae);
  2095.         };
  2096.         if (Vd) {
  2097.             {
  2098.                 Nd = (Nd - 4) & -1;
  2099.                 ha = (Sd + (Nd & be)) & -1;
  2100.                 Gb(error_code);
  2101.             };
  2102.         }
  2103.         if (Wd) {
  2104.             if (ya.eflags & 0x00020000) {
  2105.                 Gd(0, 0, 0, 0, 0);
  2106.                 Gd(3, 0, 0, 0, 0);
  2107.                 Gd(4, 0, 0, 0, 0);
  2108.                 Gd(5, 0, 0, 0, 0);
  2109.             }
  2110.             Md = (Md & ~3) | Jd;
  2111.             Gd(2, Md, Sd, Dd(Yd, Zd), Zd);
  2112.         }
  2113.         za[4] = (za[4] & ~ (be)) | ((Nd) & (be));
  2114.         selector = (selector & ~3) | Jd;
  2115.         Gd(1, selector, Ed(Cd, Ad), Dd(Cd, Ad), Ad);
  2116.         ad(Jd);
  2117.         Hb = Xd;
  2118.         if ((Kd & 1) == 0) {
  2119.             ya.eflags &= ~0x00000200;
  2120.         }
  2121.         ya.eflags &= ~ (0x00000100 | 0x00020000 | 0x00010000 | 0x00004000);
  2122.     }
  2123.     function de(selector) {
  2124.         var ua, Cd, Ad, Pb, ee;
  2125.         selector &= 0xffff;
  2126.         if ((selector & 0xfffc) == 0) {
  2127.             ya.ldt.base = 0;
  2128.             ya.ldt.limit = 0;
  2129.         } else {
  2130.             if (selector & 0x4) Zc(13, selector & 0xfffc);
  2131.             ua = ya.gdt;
  2132.             Pb = selector & ~7;
  2133.             ee = 7;
  2134.             if ((Pb + ee) > ua.limit) Zc(13, selector & 0xfffc);
  2135.             ha = (ua.base + Pb) & -1;
  2136.             Cd = Ab();
  2137.             ha += 4;
  2138.             Ad = Ab();
  2139.             if ((Ad & (1 << 12)) || ((Ad >> 8) & 0xf) != 2) Zc(13, selector & 0xfffc);
  2140.             if (!(Ad & (1 << 15))) Zc(11, selector & 0xfffc);
  2141.             Fd(ya.ldt, Cd, Ad);
  2142.         }
  2143.         ya.ldt.selector = selector;
  2144.     }
  2145.     function fe(selector) {
  2146.         var ua, Cd, Ad, Pb, Kd, ee;
  2147.         selector &= 0xffff;
  2148.         if ((selector & 0xfffc) == 0) {
  2149.             ya.tr.base = 0;
  2150.             ya.tr.limit = 0;
  2151.             ya.tr.flags = 0;
  2152.         } else {
  2153.             if (selector & 0x4) Zc(13, selector & 0xfffc);
  2154.             ua = ya.gdt;
  2155.             Pb = selector & ~7;
  2156.             ee = 7;
  2157.             if ((Pb + ee) > ua.limit) Zc(13, selector & 0xfffc);
  2158.             ha = (ua.base + Pb) & -1;
  2159.             Cd = Ab();
  2160.             ha += 4;
  2161.             Ad = Ab();
  2162.             Kd = (Ad >> 8) & 0xf;
  2163.             if ((Ad & (1 << 12)) || (Kd != 1 && Kd != 9)) Zc(13, selector & 0xfffc);
  2164.             if (!(Ad & (1 << 15))) Zc(11, selector & 0xfffc);
  2165.             Fd(ya.tr, Cd, Ad);
  2166.             Ad |= (1 << 9);
  2167.             Gb(Ad);
  2168.         }
  2169.         ya.tr.selector = selector;
  2170.     }
  2171.     function ge(he, selector) {
  2172.         var Cd, Ad, Ud, Jd, ie, ua, Pb;
  2173.         selector &= 0xffff;
  2174.         Ud = ya.cpl;
  2175.         if ((selector & 0xfffc) == 0) {
  2176.             if (he == 2) Zc(13, 0);
  2177.             Gd(he, selector, 0, 0, 0);
  2178.         } else {
  2179.             if (selector & 0x4) ua = ya.ldt;
  2180.             else ua = ya.gdt;
  2181.             Pb = selector & ~7;
  2182.             if ((Pb + 7) > ua.limit) Zc(13, selector & 0xfffc);
  2183.             ha = (ua.base + Pb) & -1;
  2184.             Cd = Ab();
  2185.             ha += 4;
  2186.             Ad = Ab();
  2187.             if (!(Ad & (1 << 12))) Zc(13, selector & 0xfffc);
  2188.             ie = selector & 3;
  2189.             Jd = (Ad >> 13) & 3;
  2190.             if (he == 2) {
  2191.                 if ((Ad & (1 << 11)) || !(Ad & (1 << 9))) Zc(13, selector & 0xfffc);
  2192.                 if (ie != Ud || Jd != Ud) Zc(13, selector & 0xfffc);
  2193.             } else {
  2194.                 if ((Ad & ((1 << 11) | (1 << 9))) == (1 << 11)) Zc(13, selector & 0xfffc);
  2195.                 if (!(Ad & (1 << 11)) || !(Ad & (1 << 10))) {
  2196.                     if (Jd < Ud || Jd < ie) Zc(13, selector & 0xfffc);
  2197.                 }
  2198.             }
  2199.             if (!(Ad & (1 << 15))) {
  2200.                 if (he == 2) Zc(12, selector & 0xfffc);
  2201.                 else Zc(11, selector & 0xfffc);
  2202.             }
  2203.             if (!(Ad & (1 << 8))) {
  2204.                 Ad |= (1 << 8);
  2205.                 Gb(Ad);
  2206.             }
  2207.             Gd(he, selector, Ed(Cd, Ad), Dd(Cd, Ad), Ad);
  2208.         }
  2209.     }
  2210.     function je(ke, le) {
  2211.         var me, Kd, Cd, Ad, Ud, Jd, ie, limit, e;
  2212.         if ((ke & 0xfffc) == 0) Zc(13, 0);
  2213.         e = Bd(ke);
  2214.         if (!e) Zc(13, ke & 0xfffc);
  2215.         Cd = e[0];
  2216.         Ad = e[1];
  2217.         Ud = ya.cpl;
  2218.         if (Ad & (1 << 12)) {
  2219.             if (!(Ad & (1 << 11))) Zc(13, ke & 0xfffc);
  2220.             Jd = (Ad >> 13) & 3;
  2221.             if (Ad & (1 << 10)) {
  2222.                 if (Jd > Ud) Zc(13, ke & 0xfffc);
  2223.             } else {
  2224.                 ie = ke & 3;
  2225.                 if (ie > Ud) Zc(13, ke & 0xfffc);
  2226.                 if (Jd != Ud) Zc(13, ke & 0xfffc);
  2227.             }
  2228.             if (!(Ad & (1 << 15))) Zc(11, ke & 0xfffc);
  2229.             limit = Dd(Cd, Ad);
  2230.             if ((le >>> 0) > (limit >>> 0)) Zc(13, ke & 0xfffc);
  2231.             Gd(1, (ke & 0xfffc) | Ud, Ed(Cd, Ad), limit, Ad);
  2232.             Hb = le;
  2233.         } else {
  2234.             Xc("unsupported jump to call or task gate");
  2235.         }
  2236.     }
  2237.     function ne(he, Ud) {
  2238.         var Jd, Ad;
  2239.         if ((he == 4 || he == 5) && (ya.segs[he].selector & 0xfffc) == 0) return;
  2240.         Ad = ya.segs[he].flags;
  2241.         Jd = (Ad >> 13) & 3;
  2242.         if (!(Ad & (1 << 11)) || !(Ad & (1 << 10))) {
  2243.             if (Jd < Ud) {
  2244.                 Gd(he, 0, 0, 0, 0);
  2245.             }
  2246.         }
  2247.     }
  2248.     function oe(Ld, pe, qe) {
  2249.         var ke, re, se;
  2250.         var te, ue, ve, we;
  2251.         var e, Cd, Ad, Yd, Zd;
  2252.         var Ud, Jd, ie, xe, ye;
  2253.         var Sd, ze, le, Ae, be;
  2254.         be = zd(ya.segs[2].flags);
  2255.         ze = za[4];
  2256.         Sd = ya.segs[2].base;
  2257.         re = 0;
  2258.         if (Ld == 1) {
  2259.             {
  2260.                 ha = (Sd + (ze & be)) & -1;
  2261.                 le = ib();
  2262.                 ze = (ze + 4) & -1;
  2263.             }; {
  2264.                 ha = (Sd + (ze & be)) & -1;
  2265.                 ke = ib();
  2266.                 ze = (ze + 4) & -1;
  2267.             };
  2268.             ke &= 0xffff;
  2269.             if (pe) {
  2270.                 {
  2271.                     ha = (Sd + (ze & be)) & -1;
  2272.                     re = ib();
  2273.                     ze = (ze + 4) & -1;
  2274.                 };
  2275.                 if (re & 0x00020000) throw "VM86 unsupported";
  2276.             }
  2277.         } else {
  2278.             throw "unsupported";
  2279.         }
  2280.         if ((ke & 0xfffc) == 0) Zc(13, ke & 0xfffc);
  2281.         e = Bd(ke);
  2282.         if (!e) Zc(13, ke & 0xfffc);
  2283.         Cd = e[0];
  2284.         Ad = e[1];
  2285.         if (!(Ad & (1 << 12)) || !(Ad & (1 << 11))) Zc(13, ke & 0xfffc);
  2286.         Ud = ya.cpl;
  2287.         ie = ke & 3;
  2288.         if (ie < Ud) Zc(13, ke & 0xfffc);
  2289.         Jd = (Ad >> 13) & 3;
  2290.         if (Ad & (1 << 10)) {
  2291.             if (Jd > ie) Zc(13, ke & 0xfffc);
  2292.         } else {
  2293.             if (Jd != ie) Zc(13, ke & 0xfffc);
  2294.         }
  2295.         if (!(Ad & (1 << 15))) Zc(11, ke & 0xfffc);
  2296.         ze = (ze + qe) & -1;
  2297.         if (ie == Ud) {
  2298.             Gd(1, ke, Ed(Cd, Ad), Dd(Cd, Ad), Ad);
  2299.         } else {
  2300.             if (Ld == 1) {
  2301.                 {
  2302.                     ha = (Sd + (ze & be)) & -1;
  2303.                     Ae = ib();
  2304.                     ze = (ze + 4) & -1;
  2305.                 }; {
  2306.                     ha = (Sd + (ze & be)) & -1;
  2307.                     se = ib();
  2308.                     ze = (ze + 4) & -1;
  2309.                 };
  2310.                 se &= 0xffff;
  2311.             } else {
  2312.                 throw "unsupported";
  2313.             }
  2314.             if ((se & 0xfffc) == 0) {
  2315.                 Zc(13, 0);
  2316.             } else {
  2317.                 if ((se & 3) != ie) Zc(13, se & 0xfffc);
  2318.                 e = Bd(se);
  2319.                 if (!e) Zc(13, se & 0xfffc);
  2320.                 Yd = e[0];
  2321.                 Zd = e[1];
  2322.                 if (!(Zd & (1 << 12)) || (Zd & (1 << 11)) || !(Zd & (1 << 9))) Zc(13, se & 0xfffc);
  2323.                 Jd = (Zd >> 13) & 3;
  2324.                 if (Jd != ie) Zc(13, se & 0xfffc);
  2325.                 if (!(Zd & (1 << 15))) Zc(11, se & 0xfffc);
  2326.                 Gd(2, se, Ed(Yd, Zd), Dd(Yd, Zd), Zd);
  2327.             }
  2328.             Gd(1, ke, Ed(Cd, Ad), Dd(Cd, Ad), Ad);
  2329.             ad(ie);
  2330.             ze = Ae;
  2331.             be = zd(Zd);
  2332.             ne(0, ie);
  2333.             ne(3, ie);
  2334.             ne(4, ie);
  2335.             ne(5, ie);
  2336.             ze = (ze + qe) & -1;
  2337.         }
  2338.         za[4] = (za[4] & ~ (be)) | ((ze) & (be));
  2339.         Hb = le;
  2340.         if (pe) {
  2341.             xe = 0x00000100 | 0x00040000 | 0x00200000 | 0x00010000 | 0x00004000;
  2342.             if (Ud == 0) xe |= 0x00003000;
  2343.             ye = (ya.eflags >> 12) & 3;
  2344.             if (Ud <= ye) xe |= 0x00000200;
  2345.             if (Ld == 0) xe &= 0xffff;
  2346.             Uc(re, xe);
  2347.         }
  2348.     }
  2349.     function Be(Ld) {
  2350.         if (ya.eflags & 0x00004000) {
  2351.             Zc(13, 0);
  2352.         } else {
  2353.             oe(Ld, 1, 0);
  2354.         }
  2355.     }
  2356.     function Ce() {
  2357.         var Pb;
  2358.         Pb = za[0];
  2359.         switch (Pb) {
  2360.         case 0:
  2361.             za[0] = 1;
  2362.             za[3] = 0x756e6547 & -1;
  2363.             za[2] = 0x49656e69 & -1;
  2364.             za[1] = 0x6c65746e & -1;
  2365.             break;
  2366.         case 1:
  2367.         default:
  2368.             za[0] = (5 << 8) | (4 << 4) | 3;
  2369.             za[3] = 8 << 8;
  2370.             za[1] = 0;
  2371.             za[2] = (1 << 4);
  2372.             break;
  2373.         }
  2374.     }
  2375.     ya = this;
  2376.     Ra = this.phys_mem8;
  2377.     Sa = this.phys_mem16;
  2378.     Ta = this.phys_mem32;
  2379.     Xa = this.tlb_read_user;
  2380.     Ya = this.tlb_write_user;
  2381.     Va = this.tlb_read_kernel;
  2382.     Wa = this.tlb_write_kernel;
  2383.     if (ya.cpl == 3) {
  2384.         Za = Xa;
  2385.         ab = Ya;
  2386.     } else {
  2387.         Za = Va;
  2388.         ab = Wa;
  2389.     }
  2390.     if (ya.halted) {
  2391.         if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) {
  2392.             ya.halted = 0;
  2393.         } else {
  2394.             return 257;
  2395.         }
  2396.     }
  2397.     za = this.regs;
  2398.     Aa = this.cc_src;
  2399.     Ba = this.cc_dst;
  2400.     Ca = this.cc_op;
  2401.     Da = this.cc_op2;
  2402.     Ea = this.cc_dst2;
  2403.     Hb = this.eip;
  2404.     Na = 256;
  2405.     Ma = xa;
  2406.     Qa = -1;
  2407.     while (Ma) {
  2408.         try {
  2409.             if (Qa >= 0) {
  2410.                 Ib = Hb;
  2411.                 Od(Qa, 0, 0, 0, 1);
  2412.                 Qa = -1;
  2413.             }
  2414.             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) {
  2415.                 Qa = ya.get_hard_intno();
  2416.                 Ib = Hb;
  2417.                 Od(Qa, 0, 0, 0, 1);
  2418.                 Qa = -1;
  2419.             }
  2420.             De: do {
  2421.                 Ib = Hb;
  2422.                 Fa = 0;
  2423.                 b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2424.                 Hb++;;
  2425.                 if (0) {
  2426.                     console.log("exec: EIP=" + ra(Ib) + " OPCODE=" + ra(b));
  2427.                 }
  2428.                 Ee: for (;;) {
  2429.                     switch (b) {
  2430.                     case 0x66:
  2431.                         Fa |= 0x0100;
  2432.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2433.                         Hb++;;
  2434.                         b |= (Fa & 0x0100);
  2435.                         break;
  2436.                     case 0xf0:
  2437.                         Fa |= 0x0040;
  2438.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2439.                         Hb++;;
  2440.                         b |= (Fa & 0x0100);
  2441.                         break;
  2442.                     case 0xf2:
  2443.                         Fa |= 0x0020;
  2444.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2445.                         Hb++;;
  2446.                         b |= (Fa & 0x0100);
  2447.                         break;
  2448.                     case 0xf3:
  2449.                         Fa |= 0x0010;
  2450.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2451.                         Hb++;;
  2452.                         b |= (Fa & 0x0100);
  2453.                         break;
  2454.                     case 0x64:
  2455.                         Fa = (Fa & ~0x000f) | (4 + 1);
  2456.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2457.                         Hb++;;
  2458.                         b |= (Fa & 0x0100);;
  2459.                         break;
  2460.                     case 0x65:
  2461.                         Fa = (Fa & ~0x000f) | (5 + 1);
  2462.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2463.                         Hb++;;
  2464.                         b |= (Fa & 0x0100);;
  2465.                         break;
  2466.                     case 0xb0:
  2467.                     case 0xb1:
  2468.                     case 0xb2:
  2469.                     case 0xb3:
  2470.                     case 0xb4:
  2471.                     case 0xb5:
  2472.                     case 0xb6:
  2473.                     case 0xb7:
  2474.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2475.                         Hb++;;
  2476.                         Rb(b & 7, ia);
  2477.                         break Ee;
  2478.                     case 0xb8:
  2479.                     case 0xb9:
  2480.                     case 0xba:
  2481.                     case 0xbb:
  2482.                     case 0xbc:
  2483.                     case 0xbd:
  2484.                     case 0xbe:
  2485.                     case 0xbf:
  2486.                         ia = Lb();
  2487.                         za[b & 7] = ia;
  2488.                         break Ee;
  2489.                     case 0x88:
  2490.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2491.                         Hb++;;
  2492.                         Ia = (Ga >> 3) & 7;
  2493.                         ia = ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff);
  2494.                         if ((Ga >> 6) == 3) {
  2495.                             Rb(Ga & 7, ia);
  2496.                         } else {
  2497.                             ha = Mb(Ga); {
  2498.                                 Ua = ab[ha >>> 12];
  2499.                                 if (Ua == -1) {
  2500.                                     pb(ia);
  2501.                                 } else {
  2502.                                     Ra[ha ^ Ua] = ia;
  2503.                                 }
  2504.                             };
  2505.                         }
  2506.                         break Ee;
  2507.                     case 0x89:
  2508.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2509.                         Hb++;;
  2510.                         ia = za[(Ga >> 3) & 7];
  2511.                         if ((Ga >> 6) == 3) {
  2512.                             za[Ga & 7] = ia;
  2513.                         } else {
  2514.                             ha = Mb(Ga); {
  2515.                                 Ua = ab[ha >>> 12];
  2516.                                 if ((Ua | ha) & 3) {
  2517.                                     tb(ia);
  2518.                                 } else {
  2519.                                     Ta[(ha ^ Ua) >> 2] = ia;
  2520.                                 }
  2521.                             };
  2522.                         }
  2523.                         break Ee;
  2524.                     case 0x8a:
  2525.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2526.                         Hb++;;
  2527.                         if ((Ga >> 6) == 3) {
  2528.                             Ha = Ga & 7;
  2529.                             ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  2530.                         } else {
  2531.                             ha = Mb(Ga);
  2532.                             ia = (((Ua = Za[ha >>> 12]) == -1) ? bb() : Ra[ha ^ Ua]);
  2533.                         }
  2534.                         Rb((Ga >> 3) & 7, ia);
  2535.                         break Ee;
  2536.                     case 0x8b:
  2537.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2538.                         Hb++;;
  2539.                         if ((Ga >> 6) == 3) {
  2540.                             ia = za[Ga & 7];
  2541.                         } else {
  2542.                             ha = Mb(Ga);
  2543.                             ia = (((Ua = Za[ha >>> 12]) | ha) & 3 ? hb() : Ta[(ha ^ Ua) >> 2]);
  2544.                         }
  2545.                         za[(Ga >> 3) & 7] = ia;
  2546.                         break Ee;
  2547.                     case 0xa0:
  2548.                         ha = Qb();
  2549.                         ia = eb();
  2550.                         Rb(0, ia);
  2551.                         break Ee;
  2552.                     case 0xa1:
  2553.                         ha = Qb();
  2554.                         ia = ib();
  2555.                         za[0] = ia;
  2556.                         break Ee;
  2557.                     case 0xa2:
  2558.                         ha = Qb();
  2559.                         qb(za[0]);
  2560.                         break Ee;
  2561.                     case 0xa3:
  2562.                         ha = Qb();
  2563.                         ub(za[0]);
  2564.                         break Ee;
  2565.                     case 0xc6:
  2566.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2567.                         Hb++;;
  2568.                         if ((Ga >> 6) == 3) {
  2569.                             ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2570.                             Hb++;;
  2571.                             Rb(Ga & 7, ia);
  2572.                         } else {
  2573.                             ha = Mb(Ga);
  2574.                             ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2575.                             Hb++;;
  2576.                             qb(ia);
  2577.                         }
  2578.                         break Ee;
  2579.                     case 0xc7:
  2580.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2581.                         Hb++;;
  2582.                         if ((Ga >> 6) == 3) {
  2583.                             ia = Lb();
  2584.                             za[Ga & 7] = ia;
  2585.                         } else {
  2586.                             ha = Mb(Ga);
  2587.                             ia = Lb();
  2588.                             ub(ia);
  2589.                         }
  2590.                         break Ee;
  2591.                     case 0x91:
  2592.                     case 0x92:
  2593.                     case 0x93:
  2594.                     case 0x94:
  2595.                     case 0x95:
  2596.                     case 0x96:
  2597.                     case 0x97:
  2598.                         Ia = b & 7;
  2599.                         ia = za[0];
  2600.                         za[0] = za[Ia];
  2601.                         za[Ia] = ia;
  2602.                         break Ee;
  2603.                     case 0x86:
  2604.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2605.                         Hb++;;
  2606.                         Ia = (Ga >> 3) & 7;
  2607.                         if ((Ga >> 6) == 3) {
  2608.                             Ha = Ga & 7;
  2609.                             ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  2610.                             Rb(Ha, ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff));
  2611.                         } else {
  2612.                             ha = Mb(Ga);
  2613.                             ia = kb();
  2614.                             qb(((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff));
  2615.                         }
  2616.                         Rb(Ia, ia);
  2617.                         break Ee;
  2618.                     case 0x87:
  2619.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2620.                         Hb++;;
  2621.                         Ia = (Ga >> 3) & 7;
  2622.                         if ((Ga >> 6) == 3) {
  2623.                             Ha = Ga & 7;
  2624.                             ia = za[Ha];
  2625.                             za[Ha] = za[Ia];
  2626.                         } else {
  2627.                             ha = Mb(Ga);
  2628.                             ia = ob();
  2629.                             ub(za[Ia]);
  2630.                         }
  2631.                         za[Ia] = ia;
  2632.                         break Ee;
  2633.                     case 0x8e:
  2634.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2635.                         Hb++;;
  2636.                         Ia = (Ga >> 3) & 7;
  2637.                         if (Ia >= 6 || Ia == 1) vc(6);
  2638.                         if ((Ga >> 6) == 3) {
  2639.                             ia = za[Ga & 7] & 0xffff;
  2640.                         } else {
  2641.                             ha = Mb(Ga);
  2642.                             ia = gb();
  2643.                         }
  2644.                         ge(Ia, ia);
  2645.                         break Ee;
  2646.                     case 0x8c:
  2647.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2648.                         Hb++;;
  2649.                         Ia = (Ga >> 3) & 7;
  2650.                         if (Ia >= 6) vc(6);
  2651.                         ia = ya.segs[Ia].selector;
  2652.                         if ((Ga >> 6) == 3) {
  2653.                             za[Ga & 7] = ia;
  2654.                         } else {
  2655.                             ha = Mb(Ga);
  2656.                             sb(ia);
  2657.                         }
  2658.                         break Ee;
  2659.                     case 0xc4:
  2660.                         {
  2661.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2662.                             Hb++;;
  2663.                             if ((Ga >> 3) == 3) vc(6);
  2664.                             ha = Mb(Ga);
  2665.                             ia = ib();
  2666.                             ha += 4;
  2667.                             Ja = gb();
  2668.                             ge(0, Ja);
  2669.                             za[(Ga >> 3) & 7] = ia;
  2670.                         };
  2671.                         break Ee;
  2672.                     case 0xc5:
  2673.                         {
  2674.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2675.                             Hb++;;
  2676.                             if ((Ga >> 3) == 3) vc(6);
  2677.                             ha = Mb(Ga);
  2678.                             ia = ib();
  2679.                             ha += 4;
  2680.                             Ja = gb();
  2681.                             ge(3, Ja);
  2682.                             za[(Ga >> 3) & 7] = ia;
  2683.                         };
  2684.                         break Ee;
  2685.                     case 0x00:
  2686.                     case 0x08:
  2687.                     case 0x10:
  2688.                     case 0x18:
  2689.                     case 0x20:
  2690.                     case 0x28:
  2691.                     case 0x30:
  2692.                     case 0x38:
  2693.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2694.                         Hb++;;
  2695.                         La = b >> 3;
  2696.                         Ia = (Ga >> 3) & 7;
  2697.                         Ja = ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff);
  2698.                         if ((Ga >> 6) == 3) {
  2699.                             Ha = Ga & 7;
  2700.                             Rb(Ha, Tb(La, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff), Ja));
  2701.                         } else {
  2702.                             ha = Mb(Ga);
  2703.                             if (La != 7) {
  2704.                                 ia = kb();
  2705.                                 ia = Tb(La, ia, Ja);
  2706.                                 qb(ia);
  2707.                             } else {
  2708.                                 ia = eb();
  2709.                                 Tb(7, ia, Ja);
  2710.                             }
  2711.                         }
  2712.                         break Ee;
  2713.                     case 0x01:
  2714.                     case 0x09:
  2715.                     case 0x11:
  2716.                     case 0x19:
  2717.                     case 0x21:
  2718.                     case 0x29:
  2719.                     case 0x31:
  2720.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2721.                         Hb++;;
  2722.                         La = b >> 3;
  2723.                         Ja = za[(Ga >> 3) & 7];
  2724.                         if ((Ga >> 6) == 3) {
  2725.                             Ha = Ga & 7;
  2726.                             za[Ha] = dc(La, za[Ha], Ja);
  2727.                         } else {
  2728.                             ha = Mb(Ga);
  2729.                             ia = ob();
  2730.                             ia = dc(La, ia, Ja);
  2731.                             ub(ia);
  2732.                         }
  2733.                         break Ee;
  2734.                     case 0x39:
  2735.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2736.                         Hb++;;
  2737.                         La = b >> 3;
  2738.                         Ja = za[(Ga >> 3) & 7];
  2739.                         if ((Ga >> 6) == 3) {
  2740.                             Ha = Ga & 7; {
  2741.                                 Aa = Ja;
  2742.                                 Ba = (za[Ha] - Aa) & -1;
  2743.                                 Ca = 8;
  2744.                             };
  2745.                         } else {
  2746.                             ha = Mb(Ga);
  2747.                             ia = ib(); {
  2748.                                 Aa = Ja;
  2749.                                 Ba = (ia - Aa) & -1;
  2750.                                 Ca = 8;
  2751.                             };
  2752.                         }
  2753.                         break Ee;
  2754.                     case 0x02:
  2755.                     case 0x0a:
  2756.                     case 0x12:
  2757.                     case 0x1a:
  2758.                     case 0x22:
  2759.                     case 0x2a:
  2760.                     case 0x32:
  2761.                     case 0x3a:
  2762.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2763.                         Hb++;;
  2764.                         La = b >> 3;
  2765.                         Ia = (Ga >> 3) & 7;
  2766.                         if ((Ga >> 6) == 3) {
  2767.                             Ha = Ga & 7;
  2768.                             Ja = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  2769.                         } else {
  2770.                             ha = Mb(Ga);
  2771.                             Ja = eb();
  2772.                         }
  2773.                         Rb(Ia, Tb(La, ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff), Ja));
  2774.                         break Ee;
  2775.                     case 0x03:
  2776.                     case 0x0b:
  2777.                     case 0x13:
  2778.                     case 0x1b:
  2779.                     case 0x23:
  2780.                     case 0x2b:
  2781.                     case 0x33:
  2782.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2783.                         Hb++;;
  2784.                         La = b >> 3;
  2785.                         Ia = (Ga >> 3) & 7;
  2786.                         if ((Ga >> 6) == 3) {
  2787.                             Ja = za[Ga & 7];
  2788.                         } else {
  2789.                             ha = Mb(Ga);
  2790.                             Ja = ib();
  2791.                         }
  2792.                         za[Ia] = dc(La, za[Ia], Ja);
  2793.                         break Ee;
  2794.                     case 0x3b:
  2795.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2796.                         Hb++;;
  2797.                         La = b >> 3;
  2798.                         Ia = (Ga >> 3) & 7;
  2799.                         if ((Ga >> 6) == 3) {
  2800.                             Ja = za[Ga & 7];
  2801.                         } else {
  2802.                             ha = Mb(Ga);
  2803.                             Ja = ib();
  2804.                         } {
  2805.                             Aa = Ja;
  2806.                             Ba = (za[Ia] - Aa) & -1;
  2807.                             Ca = 8;
  2808.                         };
  2809.                         break Ee;
  2810.                     case 0x04:
  2811.                     case 0x0c:
  2812.                     case 0x14:
  2813.                     case 0x1c:
  2814.                     case 0x24:
  2815.                     case 0x2c:
  2816.                     case 0x34:
  2817.                     case 0x3c:
  2818.                         Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2819.                         Hb++;;
  2820.                         La = b >> 3;
  2821.                         Rb(0, Tb(La, za[0] & 0xff, Ja));
  2822.                         break Ee;
  2823.                     case 0x05:
  2824.                     case 0x0d:
  2825.                     case 0x15:
  2826.                     case 0x1d:
  2827.                     case 0x25:
  2828.                     case 0x2d:
  2829.                     case 0x35:
  2830.                     case 0x3d:
  2831.                         Ja = Lb();
  2832.                         La = b >> 3;
  2833.                         za[0] = dc(La, za[0], Ja);
  2834.                         break Ee;
  2835.                     case 0x80:
  2836.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2837.                         Hb++;;
  2838.                         La = (Ga >> 3) & 7;
  2839.                         if ((Ga >> 6) == 3) {
  2840.                             Ha = Ga & 7;
  2841.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2842.                             Hb++;;
  2843.                             Rb(Ha, Tb(La, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff), Ja));
  2844.                         } else {
  2845.                             ha = Mb(Ga);
  2846.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2847.                             Hb++;;
  2848.                             if (La != 7) {
  2849.                                 ia = kb();
  2850.                                 ia = Tb(La, ia, Ja);
  2851.                                 qb(ia);
  2852.                             } else {
  2853.                                 ia = eb();
  2854.                                 Tb(7, ia, Ja);
  2855.                             }
  2856.                         }
  2857.                         break Ee;
  2858.                     case 0x81:
  2859.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2860.                         Hb++;;
  2861.                         La = (Ga >> 3) & 7;
  2862.                         if ((Ga >> 6) == 3) {
  2863.                             Ha = Ga & 7;
  2864.                             Ja = Lb();
  2865.                             za[Ha] = dc(La, za[Ha], Ja);
  2866.                         } else {
  2867.                             ha = Mb(Ga);
  2868.                             Ja = Lb();
  2869.                             if (La != 7) {
  2870.                                 ia = ob();
  2871.                                 ia = dc(La, ia, Ja);
  2872.                                 ub(ia);
  2873.                             } else {
  2874.                                 ia = ib();
  2875.                                 dc(7, ia, Ja);
  2876.                             }
  2877.                         }
  2878.                         break Ee;
  2879.                     case 0x83:
  2880.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2881.                         Hb++;;
  2882.                         La = (Ga >> 3) & 7;
  2883.                         if ((Ga >> 6) == 3) {
  2884.                             Ha = Ga & 7;
  2885.                             Ja = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  2886.                             Hb++;;
  2887.                             za[Ha] = dc(La, za[Ha], Ja);
  2888.                         } else {
  2889.                             ha = Mb(Ga);
  2890.                             Ja = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  2891.                             Hb++;;
  2892.                             if (La != 7) {
  2893.                                 ia = ob();
  2894.                                 ia = dc(La, ia, Ja);
  2895.                                 ub(ia);
  2896.                             } else {
  2897.                                 ia = ib();
  2898.                                 dc(7, ia, Ja);
  2899.                             }
  2900.                         }
  2901.                         break Ee;
  2902.                     case 0x40:
  2903.                     case 0x41:
  2904.                     case 0x42:
  2905.                     case 0x43:
  2906.                     case 0x44:
  2907.                     case 0x45:
  2908.                     case 0x46:
  2909.                     case 0x47:
  2910.                         Ia = b & 7; {
  2911.                             if (Ca < 25) {
  2912.                                 Da = Ca;
  2913.                             }
  2914.                             za[Ia] = Ea = (za[Ia] + 1) & -1;
  2915.                             Ca = 27;
  2916.                         };
  2917.                         break Ee;
  2918.                     case 0x48:
  2919.                     case 0x49:
  2920.                     case 0x4a:
  2921.                     case 0x4b:
  2922.                     case 0x4c:
  2923.                     case 0x4d:
  2924.                     case 0x4e:
  2925.                     case 0x4f:
  2926.                         Ia = b & 7; {
  2927.                             if (Ca < 25) {
  2928.                                 Da = Ca;
  2929.                             }
  2930.                             za[Ia] = Ea = (za[Ia] - 1) & -1;
  2931.                             Ca = 30;
  2932.                         };
  2933.                         break Ee;
  2934.                     case 0x6b:
  2935.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2936.                         Hb++;;
  2937.                         Ia = (Ga >> 3) & 7;
  2938.                         if ((Ga >> 6) == 3) {
  2939.                             Ja = za[Ga & 7];
  2940.                         } else {
  2941.                             ha = Mb(Ga);
  2942.                             Ja = ib();
  2943.                         }
  2944.                         Ka = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  2945.                         Hb++;;
  2946.                         za[Ia] = Oc(Ja, Ka);
  2947.                         break Ee;
  2948.                     case 0x69:
  2949.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2950.                         Hb++;;
  2951.                         Ia = (Ga >> 3) & 7;
  2952.                         if ((Ga >> 6) == 3) {
  2953.                             Ja = za[Ga & 7];
  2954.                         } else {
  2955.                             ha = Mb(Ga);
  2956.                             Ja = ib();
  2957.                         }
  2958.                         Ka = Lb();
  2959.                         za[Ia] = Oc(Ja, Ka);
  2960.                         break Ee;
  2961.                     case 0x84:
  2962.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2963.                         Hb++;;
  2964.                         if ((Ga >> 6) == 3) {
  2965.                             Ha = Ga & 7;
  2966.                             ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  2967.                         } else {
  2968.                             ha = Mb(Ga);
  2969.                             ia = eb();
  2970.                         }
  2971.                         Ia = (Ga >> 3) & 7;
  2972.                         Ja = ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff);
  2973.                         Ba = ia & Ja;
  2974.                         Ca = 12;
  2975.                         break Ee;
  2976.                     case 0x85:
  2977.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2978.                         Hb++;;
  2979.                         if ((Ga >> 6) == 3) {
  2980.                             ia = za[Ga & 7];
  2981.                         } else {
  2982.                             ha = Mb(Ga);
  2983.                             ia = ib();
  2984.                         }
  2985.                         Ja = za[(Ga >> 3) & 7];
  2986.                         Ba = ia & Ja;
  2987.                         Ca = 14;
  2988.                         break Ee;
  2989.                     case 0xa8:
  2990.                         Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  2991.                         Hb++;;
  2992.                         Ba = za[0] & Ja;
  2993.                         Ca = 12;
  2994.                         break Ee;
  2995.                     case 0xa9:
  2996.                         Ja = Lb();
  2997.                         Ba = za[0] & Ja;
  2998.                         Ca = 14;
  2999.                         break Ee;
  3000.                     case 0xf6:
  3001.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3002.                         Hb++;;
  3003.                         La = (Ga >> 3) & 7;
  3004.                         switch (La) {
  3005.                         case 0:
  3006.                             if ((Ga >> 6) == 3) {
  3007.                                 Ha = Ga & 7;
  3008.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  3009.                             } else {
  3010.                                 ha = Mb(Ga);
  3011.                                 ia = eb();
  3012.                             }
  3013.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3014.                             Hb++;;
  3015.                             Ba = ia & Ja;
  3016.                             Ca = 12;
  3017.                             break;
  3018.                         case 2:
  3019.                             if ((Ga >> 6) == 3) {
  3020.                                 Ha = Ga & 7;
  3021.                                 Rb(Ha, ~ ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff));
  3022.                             } else {
  3023.                                 ha = Mb(Ga);
  3024.                                 ia = kb();
  3025.                                 ia = ~ia;
  3026.                                 qb(ia);
  3027.                             }
  3028.                             break;
  3029.                         case 3:
  3030.                             if ((Ga >> 6) == 3) {
  3031.                                 Ha = Ga & 7;
  3032.                                 Rb(Ha, Tb(5, 0, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff)));
  3033.                             } else {
  3034.                                 ha = Mb(Ga);
  3035.                                 ia = kb();
  3036.                                 ia = Tb(5, 0, ia);
  3037.                                 qb(ia);
  3038.                             }
  3039.                             break;
  3040.                         case 4:
  3041.                             if ((Ga >> 6) == 3) {
  3042.                                 Ha = Ga & 7;
  3043.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  3044.                             } else {
  3045.                                 ha = Mb(Ga);
  3046.                                 ia = eb();
  3047.                             }
  3048.                             Sb(0, Gc(za[0], ia));
  3049.                             break;
  3050.                         case 5:
  3051.                             if ((Ga >> 6) == 3) {
  3052.                                 Ha = Ga & 7;
  3053.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  3054.                             } else {
  3055.                                 ha = Mb(Ga);
  3056.                                 ia = eb();
  3057.                             }
  3058.                             Sb(0, Hc(za[0], ia));
  3059.                             break;
  3060.                         case 6:
  3061.                             if ((Ga >> 6) == 3) {
  3062.                                 Ha = Ga & 7;
  3063.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  3064.                             } else {
  3065.                                 ha = Mb(Ga);
  3066.                                 ia = eb();
  3067.                             }
  3068.                             uc(ia);
  3069.                             break;
  3070.                         case 7:
  3071.                             if ((Ga >> 6) == 3) {
  3072.                                 Ha = Ga & 7;
  3073.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  3074.                             } else {
  3075.                                 ha = Mb(Ga);
  3076.                                 ia = eb();
  3077.                             }
  3078.                             wc(ia);
  3079.                             break;
  3080.                         default:
  3081.                             vc(6);
  3082.                         }
  3083.                         break Ee;
  3084.                     case 0xf7:
  3085.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3086.                         Hb++;;
  3087.                         La = (Ga >> 3) & 7;
  3088.                         switch (La) {
  3089.                         case 0:
  3090.                             if ((Ga >> 6) == 3) {
  3091.                                 ia = za[Ga & 7];
  3092.                             } else {
  3093.                                 ha = Mb(Ga);
  3094.                                 ia = ib();
  3095.                             }
  3096.                             Ja = Lb();
  3097.                             Ba = ia & Ja;
  3098.                             Ca = 14;
  3099.                             break;
  3100.                         case 2:
  3101.                             if ((Ga >> 6) == 3) {
  3102.                                 Ha = Ga & 7;
  3103.                                 za[Ha] = ~za[Ha];
  3104.                             } else {
  3105.                                 ha = Mb(Ga);
  3106.                                 ia = ob();
  3107.                                 ia = ~ia;
  3108.                                 ub(ia);
  3109.                             }
  3110.                             break;
  3111.                         case 3:
  3112.                             if ((Ga >> 6) == 3) {
  3113.                                 Ha = Ga & 7;
  3114.                                 za[Ha] = dc(5, 0, za[Ha]);
  3115.                             } else {
  3116.                                 ha = Mb(Ga);
  3117.                                 ia = ob();
  3118.                                 ia = dc(5, 0, ia);
  3119.                                 ub(ia);
  3120.                             }
  3121.                             break;
  3122.                         case 4:
  3123.                             if ((Ga >> 6) == 3) {
  3124.                                 ia = za[Ga & 7];
  3125.                             } else {
  3126.                                 ha = Mb(Ga);
  3127.                                 ia = ib();
  3128.                             }
  3129.                             za[0] = Nc(za[0], ia);
  3130.                             za[2] = Oa;
  3131.                             break;
  3132.                         case 5:
  3133.                             if ((Ga >> 6) == 3) {
  3134.                                 ia = za[Ga & 7];
  3135.                             } else {
  3136.                                 ha = Mb(Ga);
  3137.                                 ia = ib();
  3138.                             }
  3139.                             za[0] = Oc(za[0], ia);
  3140.                             za[2] = Oa;
  3141.                             break;
  3142.                         case 6:
  3143.                             if ((Ga >> 6) == 3) {
  3144.                                 ia = za[Ga & 7];
  3145.                             } else {
  3146.                                 ha = Mb(Ga);
  3147.                                 ia = ib();
  3148.                             }
  3149.                             za[0] = zc(za[2], za[0], ia);
  3150.                             za[2] = Oa;
  3151.                             break;
  3152.                         case 7:
  3153.                             if ((Ga >> 6) == 3) {
  3154.                                 ia = za[Ga & 7];
  3155.                             } else {
  3156.                                 ha = Mb(Ga);
  3157.                                 ia = ib();
  3158.                             }
  3159.                             za[0] = Dc(za[2], za[0], ia);
  3160.                             za[2] = Oa;
  3161.                             break;
  3162.                         default:
  3163.                             vc(6);
  3164.                         }
  3165.                         break Ee;
  3166.                     case 0xc0:
  3167.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3168.                         Hb++;;
  3169.                         La = (Ga >> 3) & 7;
  3170.                         if ((Ga >> 6) == 3) {
  3171.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3172.                             Hb++;;
  3173.                             Ha = Ga & 7;
  3174.                             Rb(Ha, gc(La, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff), Ja));
  3175.                         } else {
  3176.                             ha = Mb(Ga);
  3177.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3178.                             Hb++;;
  3179.                             ia = kb();
  3180.                             ia = gc(La, ia, Ja);
  3181.                             qb(ia);
  3182.                         }
  3183.                         break Ee;
  3184.                     case 0xc1:
  3185.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3186.                         Hb++;;
  3187.                         La = (Ga >> 3) & 7;
  3188.                         if ((Ga >> 6) == 3) {
  3189.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3190.                             Hb++;;
  3191.                             Ha = Ga & 7;
  3192.                             za[Ha] = kc(La, za[Ha], Ja);
  3193.                         } else {
  3194.                             ha = Mb(Ga);
  3195.                             Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3196.                             Hb++;;
  3197.                             ia = ob();
  3198.                             ia = kc(La, ia, Ja);
  3199.                             ub(ia);
  3200.                         }
  3201.                         break Ee;
  3202.                     case 0xd0:
  3203.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3204.                         Hb++;;
  3205.                         La = (Ga >> 3) & 7;
  3206.                         if ((Ga >> 6) == 3) {
  3207.                             Ha = Ga & 7;
  3208.                             Rb(Ha, gc(La, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff), 1));
  3209.                         } else {
  3210.                             ha = Mb(Ga);
  3211.                             ia = kb();
  3212.                             ia = gc(La, ia, 1);
  3213.                             qb(ia);
  3214.                         }
  3215.                         break Ee;
  3216.                     case 0xd1:
  3217.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3218.                         Hb++;;
  3219.                         La = (Ga >> 3) & 7;
  3220.                         if ((Ga >> 6) == 3) {
  3221.                             Ha = Ga & 7;
  3222.                             za[Ha] = kc(La, za[Ha], 1);
  3223.                         } else {
  3224.                             ha = Mb(Ga);
  3225.                             ia = ob();
  3226.                             ia = kc(La, ia, 1);
  3227.                             ub(ia);
  3228.                         }
  3229.                         break Ee;
  3230.                     case 0xd2:
  3231.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3232.                         Hb++;;
  3233.                         La = (Ga >> 3) & 7;
  3234.                         Ja = za[1] & 0xff;
  3235.                         if ((Ga >> 6) == 3) {
  3236.                             Ha = Ga & 7;
  3237.                             Rb(Ha, gc(La, ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff), Ja));
  3238.                         } else {
  3239.                             ha = Mb(Ga);
  3240.                             ia = kb();
  3241.                             ia = gc(La, ia, Ja);
  3242.                             qb(ia);
  3243.                         }
  3244.                         break Ee;
  3245.                     case 0xd3:
  3246.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3247.                         Hb++;;
  3248.                         La = (Ga >> 3) & 7;
  3249.                         Ja = za[1] & 0xff;
  3250.                         if ((Ga >> 6) == 3) {
  3251.                             Ha = Ga & 7;
  3252.                             za[Ha] = kc(La, za[Ha], Ja);
  3253.                         } else {
  3254.                             ha = Mb(Ga);
  3255.                             ia = ob();
  3256.                             ia = kc(La, ia, Ja);
  3257.                             ub(ia);
  3258.                         }
  3259.                         break Ee;
  3260.                     case 0x98:
  3261.                         za[0] = (za[0] << 16) >> 16;
  3262.                         break Ee;
  3263.                     case 0x99:
  3264.                         za[2] = za[0] >> 31;
  3265.                         break Ee;
  3266.                     case 0x50:
  3267.                     case 0x51:
  3268.                     case 0x52:
  3269.                     case 0x53:
  3270.                     case 0x54:
  3271.                     case 0x55:
  3272.                     case 0x56:
  3273.                     case 0x57:
  3274.                         ia = za[b & 7];
  3275.                         ha = (za[4] - 4) & -1; {
  3276.                             Ua = ab[ha >>> 12];
  3277.                             if ((Ua | ha) & 3) {
  3278.                                 tb(ia);
  3279.                             } else {
  3280.                                 Ta[(ha ^ Ua) >> 2] = ia;
  3281.                             }
  3282.                         };
  3283.                         za[4] = ha;
  3284.                         break Ee;
  3285.                     case 0x58:
  3286.                     case 0x59:
  3287.                     case 0x5a:
  3288.                     case 0x5b:
  3289.                     case 0x5c:
  3290.                     case 0x5d:
  3291.                     case 0x5e:
  3292.                     case 0x5f:
  3293.                         ha = za[4];
  3294.                         ia = (((Ua = Za[ha >>> 12]) | ha) & 3 ? hb() : Ta[(ha ^ Ua) >> 2]);
  3295.                         za[4] = (ha + 4) & -1;
  3296.                         za[b & 7] = ia;
  3297.                         break Ee;
  3298.                     case 0x60:
  3299.                         ha = (za[4] - 32) & -1;
  3300.                         Ja = ha;
  3301.                         for (Ia = 7; Ia >= 0; Ia--) {
  3302.                             ia = za[Ia]; {
  3303.                                 Ua = ab[ha >>> 12];
  3304.                                 if ((Ua | ha) & 3) {
  3305.                                     tb(ia);
  3306.                                 } else {
  3307.                                     Ta[(ha ^ Ua) >> 2] = ia;
  3308.                                 }
  3309.                             };
  3310.                             ha = (ha + 4) & -1;
  3311.                         }
  3312.                         za[4] = Ja;
  3313.                         break Ee;
  3314.                     case 0x61:
  3315.                         ha = za[4];
  3316.                         for (Ia = 7; Ia >= 0; Ia--) {
  3317.                             if (Ia != 4) {
  3318.                                 za[Ia] = (((Ua = Za[ha >>> 12]) | ha) & 3 ? hb() : Ta[(ha ^ Ua) >> 2]);
  3319.                             }
  3320.                             ha = (ha + 4) & -1;
  3321.                         }
  3322.                         za[4] = ha;
  3323.                         break Ee;
  3324.                     case 0x8f:
  3325.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3326.                         Hb++;;
  3327.                         if ((Ga >> 6) == 3) {
  3328.                             ha = za[4];
  3329.                             ia = ib();
  3330.                             za[4] = (ha + 4) & -1;
  3331.                             za[Ga & 7] = ia;
  3332.                         } else {
  3333.                             ha = za[4];
  3334.                             ia = ib();
  3335.                             ha = Mb(Ga, 4);
  3336.                             ub(ia);
  3337.                             za[4] = (za[4] + 4) & -1;
  3338.                         }
  3339.                         break Ee;
  3340.                     case 0x68:
  3341.                         ia = Lb();
  3342.                         ha = (za[4] - 4) & -1;
  3343.                         ub(ia);
  3344.                         za[4] = ha;
  3345.                         break Ee;
  3346.                     case 0x6a:
  3347.                         ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3348.                         Hb++;;
  3349.                         ha = (za[4] - 4) & -1;
  3350.                         ub(ia);
  3351.                         za[4] = ha;
  3352.                         break Ee;
  3353.                     case 0xc9:
  3354.                         ha = za[5];
  3355.                         ia = ib();
  3356.                         za[5] = ia;
  3357.                         za[4] = (ha + 4) & -1;
  3358.                         break Ee;
  3359.                     case 0x9c:
  3360.                         ia = Sc();
  3361.                         ha = (za[4] - 4) & -1;
  3362.                         ub(ia);
  3363.                         za[4] = ha;
  3364.                         break Ee;
  3365.                     case 0x9d:
  3366.                         ha = za[4];
  3367.                         ia = ib();
  3368.                         za[4] = (ha + 4) & -1;
  3369.                         if (ya.cpl == 0) {
  3370.                             Uc(ia, (0x00000100 | 0x00040000 | 0x00200000 | 0x00004000 | 0x00000200 | 0x00003000)); {
  3371.                                 if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  3372.                             };
  3373.                         } else {
  3374.                             var ye;
  3375.                             ye = (ya.eflags >> 12) & 3;
  3376.                             if (ya.cpl <= ye) {
  3377.                                 Uc(ia, (0x00000100 | 0x00040000 | 0x00200000 | 0x00004000 | 0x00000200)); {
  3378.                                     if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  3379.                                 };
  3380.                             } else {
  3381.                                 Uc(ia, (0x00000100 | 0x00040000 | 0x00200000 | 0x00004000));
  3382.                             }
  3383.                         }
  3384.                         break Ee;
  3385.                     case 0x06:
  3386.                         {
  3387.                             ia = ya.segs[0].selector;
  3388.                             ha = (za[4] - 4) & -1;
  3389.                             ub(ia);
  3390.                             za[4] = ha;
  3391.                         };
  3392.                         break Ee;
  3393.                     case 0x0e:
  3394.                         {
  3395.                             ia = ya.segs[1].selector;
  3396.                             ha = (za[4] - 4) & -1;
  3397.                             ub(ia);
  3398.                             za[4] = ha;
  3399.                         };
  3400.                         break Ee;
  3401.                     case 0x16:
  3402.                         {
  3403.                             ia = ya.segs[2].selector;
  3404.                             ha = (za[4] - 4) & -1;
  3405.                             ub(ia);
  3406.                             za[4] = ha;
  3407.                         };
  3408.                         break Ee;
  3409.                     case 0x1e:
  3410.                         {
  3411.                             ia = ya.segs[3].selector;
  3412.                             ha = (za[4] - 4) & -1;
  3413.                             ub(ia);
  3414.                             za[4] = ha;
  3415.                         };
  3416.                         break Ee;
  3417.                     case 0x07:
  3418.                         {
  3419.                             ha = za[4];
  3420.                             ia = ib();
  3421.                             ge(0, ia & 0xffff);
  3422.                             za[4] = (za[4] + 4) & -1;
  3423.                         };
  3424.                         break Ee;
  3425.                     case 0x17:
  3426.                         {
  3427.                             ha = za[4];
  3428.                             ia = ib();
  3429.                             ge(2, ia & 0xffff);
  3430.                             za[4] = (za[4] + 4) & -1;
  3431.                         };
  3432.                         break Ee;
  3433.                     case 0x1f:
  3434.                         {
  3435.                             ha = za[4];
  3436.                             ia = ib();
  3437.                             ge(3, ia & 0xffff);
  3438.                             za[4] = (za[4] + 4) & -1;
  3439.                         };
  3440.                         break Ee;
  3441.                     case 0x8d:
  3442.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3443.                         Hb++;;
  3444.                         if ((Ga >> 6) == 3) vc(6);
  3445.                         za[(Ga >> 3) & 7] = Mb(Ga);
  3446.                         break Ee;
  3447.                     case 0xfe:
  3448.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3449.                         Hb++;;
  3450.                         La = (Ga >> 3) & 7;
  3451.                         switch (La) {
  3452.                         case 0:
  3453.                             if ((Ga >> 6) == 3) {
  3454.                                 Ha = Ga & 7;
  3455.                                 Rb(Ha, Yb(((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff)));
  3456.                             } else {
  3457.                                 ha = Mb(Ga);
  3458.                                 ia = kb();
  3459.                                 ia = Yb(ia);
  3460.                                 qb(ia);
  3461.                             }
  3462.                             break;
  3463.                         case 1:
  3464.                             if ((Ga >> 6) == 3) {
  3465.                                 Ha = Ga & 7;
  3466.                                 Rb(Ha, Zb(((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff)));
  3467.                             } else {
  3468.                                 ha = Mb(Ga);
  3469.                                 ia = kb();
  3470.                                 ia = Zb(ia);
  3471.                                 qb(ia);
  3472.                             }
  3473.                             break;
  3474.                         default:
  3475.                             vc(6);
  3476.                         }
  3477.                         break Ee;
  3478.                     case 0xff:
  3479.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3480.                         Hb++;;
  3481.                         La = (Ga >> 3) & 7;
  3482.                         switch (La) {
  3483.                         case 0:
  3484.                             if ((Ga >> 6) == 3) {
  3485.                                 Ha = Ga & 7; {
  3486.                                     if (Ca < 25) {
  3487.                                         Da = Ca;
  3488.                                     }
  3489.                                     za[Ha] = Ea = (za[Ha] + 1) & -1;
  3490.                                     Ca = 27;
  3491.                                 };
  3492.                             } else {
  3493.                                 ha = Mb(Ga);
  3494.                                 ia = ob(); {
  3495.                                     if (Ca < 25) {
  3496.                                         Da = Ca;
  3497.                                     }
  3498.                                     ia = Ea = (ia + 1) & -1;
  3499.                                     Ca = 27;
  3500.                                 };
  3501.                                 ub(ia);
  3502.                             }
  3503.                             break;
  3504.                         case 1:
  3505.                             if ((Ga >> 6) == 3) {
  3506.                                 Ha = Ga & 7; {
  3507.                                     if (Ca < 25) {
  3508.                                         Da = Ca;
  3509.                                     }
  3510.                                     za[Ha] = Ea = (za[Ha] - 1) & -1;
  3511.                                     Ca = 30;
  3512.                                 };
  3513.                             } else {
  3514.                                 ha = Mb(Ga);
  3515.                                 ia = ob(); {
  3516.                                     if (Ca < 25) {
  3517.                                         Da = Ca;
  3518.                                     }
  3519.                                     ia = Ea = (ia - 1) & -1;
  3520.                                     Ca = 30;
  3521.                                 };
  3522.                                 ub(ia);
  3523.                             }
  3524.                             break;
  3525.                         case 2:
  3526.                             if ((Ga >> 6) == 3) {
  3527.                                 ia = za[Ga & 7];
  3528.                             } else {
  3529.                                 ha = Mb(Ga);
  3530.                                 ia = ib();
  3531.                             }
  3532.                             ha = (za[4] - 4) & -1;
  3533.                             ub(Hb);
  3534.                             za[4] = ha;
  3535.                             Hb = ia;
  3536.                             break;
  3537.                         case 4:
  3538.                             if ((Ga >> 6) == 3) {
  3539.                                 ia = za[Ga & 7];
  3540.                             } else {
  3541.                                 ha = Mb(Ga);
  3542.                                 ia = ib();
  3543.                             }
  3544.                             Hb = ia;
  3545.                             break;
  3546.                         case 6:
  3547.                             if ((Ga >> 6) == 3) {
  3548.                                 ia = za[Ga & 7];
  3549.                             } else {
  3550.                                 ha = Mb(Ga);
  3551.                                 ia = ib();
  3552.                             }
  3553.                             ha = (za[4] - 4) & -1;
  3554.                             ub(ia);
  3555.                             za[4] = ha;
  3556.                             break;
  3557.                         case 3:
  3558.                         case 5:
  3559.                         default:
  3560.                             throw "GRP5";
  3561.                         }
  3562.                         break Ee;
  3563.                     case 0xeb:
  3564.                         ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3565.                         Hb++;;
  3566.                         Hb = (Hb + ia) >> 0;
  3567.                         break Ee;
  3568.                     case 0xe9:
  3569.                         ia = Lb();
  3570.                         Hb = (Hb + ia) >> 0;
  3571.                         break Ee;
  3572.                     case 0xea:
  3573.                         ia = Lb();
  3574.                         Ja = Kb();
  3575.                         je(Ja, ia);
  3576.                         break Ee;
  3577.                     case 0x70:
  3578.                     case 0x71:
  3579.                     case 0x72:
  3580.                     case 0x73:
  3581.                     case 0x76:
  3582.                     case 0x77:
  3583.                     case 0x78:
  3584.                     case 0x79:
  3585.                     case 0x7a:
  3586.                     case 0x7b:
  3587.                     case 0x7c:
  3588.                     case 0x7d:
  3589.                     case 0x7e:
  3590.                     case 0x7f:
  3591.                         if (Xb(b & 0xf)) {
  3592.                             ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3593.                             Hb++;;
  3594.                             Hb = (Hb + ia) >> 0;
  3595.                         } else {
  3596.                             Hb = (Hb + 1) >> 0;
  3597.                         }
  3598.                         break Ee;
  3599.                     case 0x74:
  3600.                         switch (Ca) {
  3601.                         case 0:
  3602.                         case 3:
  3603.                         case 6:
  3604.                         case 9:
  3605.                         case 12:
  3606.                         case 15:
  3607.                         case 18:
  3608.                         case 21:
  3609.                             Ja = (Ba & 0xff) == 0;
  3610.                             break;
  3611.                         case 1:
  3612.                         case 4:
  3613.                         case 7:
  3614.                         case 10:
  3615.                         case 13:
  3616.                         case 16:
  3617.                         case 19:
  3618.                         case 22:
  3619.                             Ja = (Ba & 0xffff) == 0;
  3620.                             break;
  3621.                         case 2:
  3622.                         case 5:
  3623.                         case 8:
  3624.                         case 11:
  3625.                         case 14:
  3626.                         case 17:
  3627.                         case 20:
  3628.                         case 23:
  3629.                             Ja = Ba == 0;
  3630.                             break;
  3631.                         case 24:
  3632.                             Ja = (Aa >> 6) & 1;
  3633.                             break;
  3634.                         case 25:
  3635.                         case 28:
  3636.                             Ja = (Ea & 0xff) == 0;
  3637.                             break;
  3638.                         case 26:
  3639.                         case 29:
  3640.                             Ja = (Ea & 0xffff) == 0;
  3641.                             break;
  3642.                         case 27:
  3643.                         case 30:
  3644.                             Ja = Ea == 0;
  3645.                             break;
  3646.                         default:
  3647.                             throw "JZ: unsupported cc_op=" + Ca;
  3648.                         };
  3649.                         if (Ja) {
  3650.                             ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3651.                             Hb++;;
  3652.                             Hb = (Hb + ia) >> 0;
  3653.                         } else {
  3654.                             Hb = (Hb + 1) >> 0;
  3655.                         }
  3656.                         break Ee;
  3657.                     case 0x75:
  3658.                         switch (Ca) {
  3659.                         case 0:
  3660.                         case 3:
  3661.                         case 6:
  3662.                         case 9:
  3663.                         case 12:
  3664.                         case 15:
  3665.                         case 18:
  3666.                         case 21:
  3667.                             Ja = (Ba & 0xff) == 0;
  3668.                             break;
  3669.                         case 1:
  3670.                         case 4:
  3671.                         case 7:
  3672.                         case 10:
  3673.                         case 13:
  3674.                         case 16:
  3675.                         case 19:
  3676.                         case 22:
  3677.                             Ja = (Ba & 0xffff) == 0;
  3678.                             break;
  3679.                         case 2:
  3680.                         case 5:
  3681.                         case 8:
  3682.                         case 11:
  3683.                         case 14:
  3684.                         case 17:
  3685.                         case 20:
  3686.                         case 23:
  3687.                             Ja = Ba == 0;
  3688.                             break;
  3689.                         case 24:
  3690.                             Ja = (Aa >> 6) & 1;
  3691.                             break;
  3692.                         case 25:
  3693.                         case 28:
  3694.                             Ja = (Ea & 0xff) == 0;
  3695.                             break;
  3696.                         case 26:
  3697.                         case 29:
  3698.                             Ja = (Ea & 0xffff) == 0;
  3699.                             break;
  3700.                         case 27:
  3701.                         case 30:
  3702.                             Ja = Ea == 0;
  3703.                             break;
  3704.                         default:
  3705.                             throw "JZ: unsupported cc_op=" + Ca;
  3706.                         };
  3707.                         if (!Ja) {
  3708.                             ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3709.                             Hb++;;
  3710.                             Hb = (Hb + ia) >> 0;
  3711.                         } else {
  3712.                             Hb = (Hb + 1) >> 0;
  3713.                         }
  3714.                         break Ee;
  3715.                     case 0xe2:
  3716.                         ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3717.                         Hb++;;
  3718.                         za[1] = (za[1] - 1) & -1;
  3719.                         if (za[1]) Hb = (Hb + ia) >> 0;
  3720.                         break Ee;
  3721.                     case 0xe3:
  3722.                         ia = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  3723.                         Hb++;;
  3724.                         if (za[1] == 0) Hb = (Hb + ia) >> 0;
  3725.                         break Ee;
  3726.                     case 0xc2:
  3727.                         Ja = (Kb() << 16) >> 16;
  3728.                         ha = za[4];
  3729.                         ia = ib();
  3730.                         za[4] = (za[4] + 4 + Ja) & -1;
  3731.                         Hb = ia;
  3732.                         break Ee;
  3733.                     case 0xc3:
  3734.                         ha = za[4];
  3735.                         ia = ib();
  3736.                         za[4] = (za[4] + 4) & -1;
  3737.                         Hb = ia;
  3738.                         break Ee;
  3739.                     case 0xe8:
  3740.                         ia = Lb();
  3741.                         ha = (za[4] - 4) & -1;
  3742.                         ub(Hb);
  3743.                         za[4] = ha;
  3744.                         Hb = (Hb + ia) >> 0;
  3745.                         break Ee;
  3746.                     case 0x90:
  3747.                         break Ee;
  3748.                     case 0xcc:
  3749.                         Ja = Hb;
  3750.                         Od(3, 1, 0, Ja, 0);
  3751.                         break Ee;
  3752.                     case 0xcd:
  3753.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  3754.                         Hb++;;
  3755.                         Ja = Hb;
  3756.                         Od(ia, 1, 0, Ja, 0);
  3757.                         break Ee;
  3758.                     case 0xce:
  3759.                         if (Xb(0)) {
  3760.                             Ja = Hb;
  3761.                             Od(4, 1, 0, Ja, 0);
  3762.                         }
  3763.                         break Ee;
  3764.                     case 0xcf:
  3765.                         Be(1); {
  3766.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  3767.                         };
  3768.                         break Ee;
  3769.                     case 0xf5:
  3770.                         Aa = ic() ^ 0x0001;
  3771.                         Ca = 24;
  3772.                         break Ee;
  3773.                     case 0xf8:
  3774.                         Aa = ic() & ~0x0001;
  3775.                         Ca = 24;
  3776.                         break Ee;
  3777.                     case 0xf9:
  3778.                         Aa = ic() | 0x0001;
  3779.                         Ca = 24;
  3780.                         break Ee;
  3781.                     case 0xfc:
  3782.                         ya.df = 1;
  3783.                         break Ee;
  3784.                     case 0xfd:
  3785.                         ya.df = -1;
  3786.                         break Ee;
  3787.                     case 0xfa:
  3788.                         ye = (ya.eflags >> 12) & 3;
  3789.                         if (ya.cpl > ye) vc(13);
  3790.                         ya.eflags &= ~0x00000200;
  3791.                         break Ee;
  3792.                     case 0xfb:
  3793.                         ye = (ya.eflags >> 12) & 3;
  3794.                         if (ya.cpl > ye) vc(13);
  3795.                         ya.eflags |= 0x00000200; {
  3796.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  3797.                         };
  3798.                         break Ee;
  3799.                     case 0x9e:
  3800.                         ia = ((za[0] >> 8) & (0x0080 | 0x0040 | 0x0010 | 0x0004 | 0x0001)) | (Xb(0) << 11);
  3801.                         Aa = ia;
  3802.                         Ca = 24;
  3803.                         break Ee;
  3804.                     case 0x9f:
  3805.                         ia = Sc();
  3806.                         Rb(4, ia);
  3807.                         break Ee;
  3808.                     case 0xf4:
  3809.                         if (ya.cpl != 0) vc(13);
  3810.                         ya.halted = 1;
  3811.                         Na = 257;
  3812.                         break De;
  3813.                     case 0xa4:
  3814.                         if (Fa & (0x0010 | 0x0020)) {
  3815.                             if (za[1]) {
  3816.                                 if (8 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && ((za[6] | za[7]) & 3) == 0 && ed()) {} else {
  3817.                                     ha = za[6];
  3818.                                     ia = eb();
  3819.                                     ha = za[7];
  3820.                                     qb(ia);
  3821.                                     za[6] = (za[6] + (ya.df << 0)) & -1;
  3822.                                     za[7] = (za[7] + (ya.df << 0)) & -1;
  3823.                                     za[1] = (za[1] - 1) & -1;
  3824.                                 }
  3825.                                 Hb = Ib;
  3826.                             }
  3827.                         } else {
  3828.                             ha = za[6];
  3829.                             ia = eb();
  3830.                             ha = za[7];
  3831.                             qb(ia);
  3832.                             za[6] = (za[6] + (ya.df << 0)) & -1;
  3833.                             za[7] = (za[7] + (ya.df << 0)) & -1;
  3834.                         };
  3835.                         break Ee;
  3836.                     case 0xa5:
  3837.                         if (Fa & (0x0010 | 0x0020)) {
  3838.                             if (za[1]) {
  3839.                                 if (32 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && ((za[6] | za[7]) & 3) == 0 && ed()) {} else {
  3840.                                     ha = za[6];
  3841.                                     ia = ib();
  3842.                                     ha = za[7];
  3843.                                     ub(ia);
  3844.                                     za[6] = (za[6] + (ya.df << 2)) & -1;
  3845.                                     za[7] = (za[7] + (ya.df << 2)) & -1;
  3846.                                     za[1] = (za[1] - 1) & -1;
  3847.                                 }
  3848.                                 Hb = Ib;
  3849.                             }
  3850.                         } else {
  3851.                             ha = za[6];
  3852.                             ia = ib();
  3853.                             ha = za[7];
  3854.                             ub(ia);
  3855.                             za[6] = (za[6] + (ya.df << 2)) & -1;
  3856.                             za[7] = (za[7] + (ya.df << 2)) & -1;
  3857.                         };
  3858.                         break Ee;
  3859.                     case 0xaa:
  3860.                         if (Fa & (0x0010 | 0x0020)) {
  3861.                             if (za[1]) {
  3862.                                 if (8 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && (za[7] & 3) == 0 && jd()) {} else {
  3863.                                     ha = za[7];
  3864.                                     qb(za[0]);
  3865.                                     za[7] = (ha + (ya.df << 0)) & -1;
  3866.                                     za[1] = (za[1] - 1) & -1;
  3867.                                 }
  3868.                                 Hb = Ib;
  3869.                             }
  3870.                         } else {
  3871.                             ha = za[7];
  3872.                             qb(za[0]);
  3873.                             za[7] = (ha + (ya.df << 0)) & -1;
  3874.                         };
  3875.                         break Ee;
  3876.                     case 0xab:
  3877.                         if (Fa & (0x0010 | 0x0020)) {
  3878.                             if (za[1]) {
  3879.                                 if (32 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && (za[7] & 3) == 0 && jd()) {} else {
  3880.                                     ha = za[7];
  3881.                                     ub(za[0]);
  3882.                                     za[7] = (ha + (ya.df << 2)) & -1;
  3883.                                     za[1] = (za[1] - 1) & -1;
  3884.                                 }
  3885.                                 Hb = Ib;
  3886.                             }
  3887.                         } else {
  3888.                             ha = za[7];
  3889.                             ub(za[0]);
  3890.                             za[7] = (ha + (ya.df << 2)) & -1;
  3891.                         };
  3892.                         break Ee;
  3893.                     case 0xa6:
  3894.                         if (Fa & (0x0010 | 0x0020)) {
  3895.                             if (za[1]) {
  3896.                                 ha = za[6];
  3897.                                 ia = eb();
  3898.                                 ha = za[7];
  3899.                                 Ja = eb();
  3900.                                 Tb(7, ia, Ja);
  3901.                                 za[6] = (za[6] + (ya.df << 0)) & -1;
  3902.                                 za[7] = (za[7] + (ya.df << 0)) & -1;
  3903.                                 za[1] = (za[1] - 1) & -1;
  3904.                                 if (Fa & 0x0010) {
  3905.                                     if (!Xb(4)) break Ee;
  3906.                                 } else {
  3907.                                     if (Xb(4)) break Ee;
  3908.                                 }
  3909.                                 Hb = Ib;
  3910.                             }
  3911.                         } else {
  3912.                             ha = za[6];
  3913.                             ia = eb();
  3914.                             ha = za[7];
  3915.                             Ja = eb();
  3916.                             Tb(7, ia, Ja);
  3917.                             za[6] = (za[6] + (ya.df << 0)) & -1;
  3918.                             za[7] = (za[7] + (ya.df << 0)) & -1;
  3919.                         };
  3920.                         break Ee;
  3921.                     case 0xa7:
  3922.                         if (Fa & (0x0010 | 0x0020)) {
  3923.                             if (za[1]) {
  3924.                                 ha = za[6];
  3925.                                 ia = ib();
  3926.                                 ha = za[7];
  3927.                                 Ja = ib();
  3928.                                 dc(7, ia, Ja);
  3929.                                 za[6] = (za[6] + (ya.df << 2)) & -1;
  3930.                                 za[7] = (za[7] + (ya.df << 2)) & -1;
  3931.                                 za[1] = (za[1] - 1) & -1;
  3932.                                 if (Fa & 0x0010) {
  3933.                                     if (!Xb(4)) break Ee;
  3934.                                 } else {
  3935.                                     if (Xb(4)) break Ee;
  3936.                                 }
  3937.                                 Hb = Ib;
  3938.                             }
  3939.                         } else {
  3940.                             ha = za[6];
  3941.                             ia = ib();
  3942.                             ha = za[7];
  3943.                             Ja = ib();
  3944.                             dc(7, ia, Ja);
  3945.                             za[6] = (za[6] + (ya.df << 2)) & -1;
  3946.                             za[7] = (za[7] + (ya.df << 2)) & -1;
  3947.                         };
  3948.                         break Ee;
  3949.                     case 0xac:
  3950.                         if (Fa & (0x0010 | 0x0020)) {
  3951.                             if (za[1]) {
  3952.                                 ha = za[6];
  3953.                                 if (8 == 32) za[0] = ib();
  3954.                                 else Rb(0, eb());
  3955.                                 za[6] = (ha + (ya.df << 0)) & -1;
  3956.                                 za[1] = (za[1] - 1) & -1;
  3957.                                 Hb = Ib;
  3958.                             }
  3959.                         } else {
  3960.                             ha = za[6];
  3961.                             if (8 == 32) za[0] = ib();
  3962.                             else Rb(0, eb());
  3963.                             za[6] = (ha + (ya.df << 0)) & -1;
  3964.                         };
  3965.                         break Ee;
  3966.                     case 0xad:
  3967.                         if (Fa & (0x0010 | 0x0020)) {
  3968.                             if (za[1]) {
  3969.                                 ha = za[6];
  3970.                                 if (32 == 32) za[0] = ib();
  3971.                                 else Fe(0, ib());
  3972.                                 za[6] = (ha + (ya.df << 2)) & -1;
  3973.                                 za[1] = (za[1] - 1) & -1;
  3974.                                 Hb = Ib;
  3975.                             }
  3976.                         } else {
  3977.                             ha = za[6];
  3978.                             if (32 == 32) za[0] = ib();
  3979.                             else Fe(0, ib());
  3980.                             za[6] = (ha + (ya.df << 2)) & -1;
  3981.                         };
  3982.                         break Ee;
  3983.                     case 0xae:
  3984.                         if (Fa & (0x0010 | 0x0020)) {
  3985.                             if (za[1]) {
  3986.                                 ha = za[7];
  3987.                                 ia = eb();
  3988.                                 Tb(7, za[0], ia);
  3989.                                 za[7] = (za[7] + (ya.df << 0)) & -1;
  3990.                                 za[1] = (za[1] - 1) & -1;
  3991.                                 if (Fa & 0x0010) {
  3992.                                     if (!Xb(4)) break Ee;
  3993.                                 } else {
  3994.                                     if (Xb(4)) break Ee;
  3995.                                 }
  3996.                                 Hb = Ib;
  3997.                             }
  3998.                         } else {
  3999.                             ha = za[7];
  4000.                             ia = eb();
  4001.                             Tb(7, za[0], ia);
  4002.                             za[7] = (za[7] + (ya.df << 0)) & -1;
  4003.                         };
  4004.                         break Ee;
  4005.                     case 0xaf:
  4006.                         if (Fa & (0x0010 | 0x0020)) {
  4007.                             if (za[1]) {
  4008.                                 ha = za[7];
  4009.                                 ia = ib();
  4010.                                 dc(7, za[0], ia);
  4011.                                 za[7] = (za[7] + (ya.df << 2)) & -1;
  4012.                                 za[1] = (za[1] - 1) & -1;
  4013.                                 if (Fa & 0x0010) {
  4014.                                     if (!Xb(4)) break Ee;
  4015.                                 } else {
  4016.                                     if (Xb(4)) break Ee;
  4017.                                 }
  4018.                                 Hb = Ib;
  4019.                             }
  4020.                         } else {
  4021.                             ha = za[7];
  4022.                             ia = ib();
  4023.                             dc(7, za[0], ia);
  4024.                             za[7] = (za[7] + (ya.df << 2)) & -1;
  4025.                         };
  4026.                         break Ee;
  4027.                     case 0xd8:
  4028.                     case 0xd9:
  4029.                     case 0xda:
  4030.                     case 0xdb:
  4031.                     case 0xdc:
  4032.                     case 0xdd:
  4033.                     case 0xde:
  4034.                     case 0xdf:
  4035.                         if (ya.cr0 & ((1 << 2) | (1 << 3))) {
  4036.                             vc(7);
  4037.                         }
  4038.                         Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4039.                         Hb++;;
  4040.                         Ia = (Ga >> 3) & 7;
  4041.                         Ha = Ga & 7;
  4042.                         La = ((b & 7) << 3) | ((Ga >> 3) & 7);
  4043.                         Sb(0, 0xffff);
  4044.                         if ((Ga >> 6) == 3) {} else {
  4045.                             ha = Mb(Ga);
  4046.                         }
  4047.                         break Ee;
  4048.                     case 0x9b:
  4049.                         break Ee;
  4050.                     case 0xe4:
  4051.                         ye = (ya.eflags >> 12) & 3;
  4052.                         if (ya.cpl > ye) vc(13);
  4053.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4054.                         Hb++;;
  4055.                         Rb(0, ya.ld8_port(ia)); {
  4056.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4057.                         };
  4058.                         break Ee;
  4059.                     case 0xe5:
  4060.                         ye = (ya.eflags >> 12) & 3;
  4061.                         if (ya.cpl > ye) vc(13);
  4062.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4063.                         Hb++;;
  4064.                         za[0] = ya.ld32_port(ia); {
  4065.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4066.                         };
  4067.                         break Ee;
  4068.                     case 0xe6:
  4069.                         ye = (ya.eflags >> 12) & 3;
  4070.                         if (ya.cpl > ye) vc(13);
  4071.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4072.                         Hb++;;
  4073.                         ya.st8_port(ia, za[0] & 0xff); {
  4074.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4075.                         };
  4076.                         break Ee;
  4077.                     case 0xe7:
  4078.                         ye = (ya.eflags >> 12) & 3;
  4079.                         if (ya.cpl > ye) vc(13);
  4080.                         ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4081.                         Hb++;;
  4082.                         ya.st32_port(ia, za[0]); {
  4083.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4084.                         };
  4085.                         break Ee;
  4086.                     case 0xec:
  4087.                         ye = (ya.eflags >> 12) & 3;
  4088.                         if (ya.cpl > ye) vc(13);
  4089.                         Rb(0, ya.ld8_port(za[2] & 0xffff)); {
  4090.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4091.                         };
  4092.                         break Ee;
  4093.                     case 0xed:
  4094.                         ye = (ya.eflags >> 12) & 3;
  4095.                         if (ya.cpl > ye) vc(13);
  4096.                         za[0] = ya.ld32_port(za[2] & 0xffff); {
  4097.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4098.                         };
  4099.                         break Ee;
  4100.                     case 0xee:
  4101.                         ye = (ya.eflags >> 12) & 3;
  4102.                         if (ya.cpl > ye) vc(13);
  4103.                         ya.st8_port(za[2] & 0xffff, za[0] & 0xff); {
  4104.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4105.                         };
  4106.                         break Ee;
  4107.                     case 0xef:
  4108.                         ye = (ya.eflags >> 12) & 3;
  4109.                         if (ya.cpl > ye) vc(13);
  4110.                         ya.st32_port(za[2] & 0xffff, za[0]); {
  4111.                             if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  4112.                         };
  4113.                         break Ee;
  4114.                     case 0x26:
  4115.                     case 0x27:
  4116.                     case 0x2e:
  4117.                     case 0x2f:
  4118.                     case 0x36:
  4119.                     case 0x37:
  4120.                     case 0x3e:
  4121.                     case 0x3f:
  4122.                     case 0x62:
  4123.                     case 0x63:
  4124.                     case 0x67:
  4125.                     case 0x6c:
  4126.                     case 0x6d:
  4127.                     case 0x6e:
  4128.                     case 0x6f:
  4129.                     case 0x82:
  4130.                     case 0x9a:
  4131.                     case 0xc8:
  4132.                     case 0xca:
  4133.                     case 0xcb:
  4134.                     case 0xd4:
  4135.                     case 0xd5:
  4136.                     case 0xd6:
  4137.                     case 0xd7:
  4138.                     case 0xe0:
  4139.                     case 0xe1:
  4140.                     case 0xf1:
  4141.                         vc(6);
  4142.                         break;
  4143.                     case 0x0f:
  4144.                         b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4145.                         Hb++;;
  4146.                         switch (b) {
  4147.                         case 0x80:
  4148.                         case 0x81:
  4149.                         case 0x82:
  4150.                         case 0x83:
  4151.                         case 0x84:
  4152.                         case 0x85:
  4153.                         case 0x86:
  4154.                         case 0x87:
  4155.                         case 0x88:
  4156.                         case 0x89:
  4157.                         case 0x8a:
  4158.                         case 0x8b:
  4159.                         case 0x8c:
  4160.                         case 0x8d:
  4161.                         case 0x8e:
  4162.                         case 0x8f:
  4163.                             Ja = Xb(b & 0xf);
  4164.                             ia = Lb();
  4165.                             if (Ja) Hb = (Hb + ia) >> 0;
  4166.                             break Ee;
  4167.                         case 0x90:
  4168.                         case 0x91:
  4169.                         case 0x92:
  4170.                         case 0x93:
  4171.                         case 0x94:
  4172.                         case 0x95:
  4173.                         case 0x96:
  4174.                         case 0x97:
  4175.                         case 0x98:
  4176.                         case 0x99:
  4177.                         case 0x9a:
  4178.                         case 0x9b:
  4179.                         case 0x9c:
  4180.                         case 0x9d:
  4181.                         case 0x9e:
  4182.                         case 0x9f:
  4183.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4184.                             Hb++;;
  4185.                             ia = Xb(b & 0xf);
  4186.                             if ((Ga >> 6) == 3) {
  4187.                                 Rb(Ga & 7, ia);
  4188.                             } else {
  4189.                                 ha = Mb(Ga);
  4190.                                 qb(ia);
  4191.                             }
  4192.                             break Ee;
  4193.                         case 0x40:
  4194.                         case 0x41:
  4195.                         case 0x42:
  4196.                         case 0x43:
  4197.                         case 0x44:
  4198.                         case 0x45:
  4199.                         case 0x46:
  4200.                         case 0x47:
  4201.                         case 0x48:
  4202.                         case 0x49:
  4203.                         case 0x4a:
  4204.                         case 0x4b:
  4205.                         case 0x4c:
  4206.                         case 0x4d:
  4207.                         case 0x4e:
  4208.                         case 0x4f:
  4209.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4210.                             Hb++;;
  4211.                             if ((Ga >> 6) == 3) {
  4212.                                 ia = za[Ga & 7];
  4213.                             } else {
  4214.                                 ha = Mb(Ga);
  4215.                                 ia = ib();
  4216.                             }
  4217.                             if (Xb(b & 0xf)) za[(Ga >> 3) & 7] = ia;
  4218.                             break Ee;
  4219.                         case 0xb6:
  4220.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4221.                             Hb++;;
  4222.                             Ia = (Ga >> 3) & 7;
  4223.                             if ((Ga >> 6) == 3) {
  4224.                                 Ha = Ga & 7;
  4225.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  4226.                             } else {
  4227.                                 ha = Mb(Ga);
  4228.                                 ia = eb();
  4229.                             }
  4230.                             za[Ia] = ia;
  4231.                             break Ee;
  4232.                         case 0xb7:
  4233.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4234.                             Hb++;;
  4235.                             Ia = (Ga >> 3) & 7;
  4236.                             if ((Ga >> 6) == 3) {
  4237.                                 ia = za[Ga & 7];
  4238.                             } else {
  4239.                                 ha = Mb(Ga);
  4240.                                 ia = gb();
  4241.                             }
  4242.                             za[Ia] = ia & 0xffff;
  4243.                             break Ee;
  4244.                         case 0xbe:
  4245.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4246.                             Hb++;;
  4247.                             Ia = (Ga >> 3) & 7;
  4248.                             if ((Ga >> 6) == 3) {
  4249.                                 Ha = Ga & 7;
  4250.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  4251.                             } else {
  4252.                                 ha = Mb(Ga);
  4253.                                 ia = eb();
  4254.                             }
  4255.                             za[Ia] = (ia << 24) >> 24;
  4256.                             break Ee;
  4257.                         case 0xbf:
  4258.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4259.                             Hb++;;
  4260.                             Ia = (Ga >> 3) & 7;
  4261.                             if ((Ga >> 6) == 3) {
  4262.                                 ia = za[Ga & 7];
  4263.                             } else {
  4264.                                 ha = Mb(Ga);
  4265.                                 ia = gb();
  4266.                             }
  4267.                             za[Ia] = (ia << 16) >> 16;
  4268.                             break Ee;
  4269.                         case 0x00:
  4270.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4271.                             Hb++;;
  4272.                             La = (Ga >> 3) & 7;
  4273.                             switch (La) {
  4274.                             case 0:
  4275.                             case 1:
  4276.                                 if (La == 0) ia = ya.ldt.selector;
  4277.                                 else ia = ya.tr.selector;
  4278.                                 if ((Ga >> 6) == 3) {
  4279.                                     Sb(Ga & 7, ia);
  4280.                                 } else {
  4281.                                     ha = Mb(Ga);
  4282.                                     sb(ia);
  4283.                                 }
  4284.                                 break;
  4285.                             case 2:
  4286.                                 if (ya.cpl != 0) vc(13);
  4287.                                 if ((Ga >> 6) == 3) {
  4288.                                     ia = za[Ga & 7] & 0xffff;
  4289.                                 } else {
  4290.                                     ha = Mb(Ga);
  4291.                                     ia = gb();
  4292.                                 }
  4293.                                 de(ia);
  4294.                                 break;
  4295.                             case 3:
  4296.                                 if (ya.cpl != 0) vc(13);
  4297.                                 if ((Ga >> 6) == 3) {
  4298.                                     ia = za[Ga & 7] & 0xffff;
  4299.                                 } else {
  4300.                                     ha = Mb(Ga);
  4301.                                     ia = gb();
  4302.                                 }
  4303.                                 fe(ia);
  4304.                                 break;
  4305.                             default:
  4306.                                 vc(6);
  4307.                             }
  4308.                             break Ee;
  4309.                         case 0x01:
  4310.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4311.                             Hb++;;
  4312.                             La = (Ga >> 3) & 7;
  4313.                             switch (La) {
  4314.                             case 2:
  4315.                             case 3:
  4316.                                 if ((Ga >> 6) == 3) vc(6);
  4317.                                 if (this.cpl != 0) vc(13);
  4318.                                 ha = Mb(Ga);
  4319.                                 ia = gb();
  4320.                                 ha += 2;
  4321.                                 Ja = ib();
  4322.                                 if (La == 2) {
  4323.                                     this.gdt.base = Ja;
  4324.                                     this.gdt.limit = ia;
  4325.                                 } else {
  4326.                                     this.idt.base = Ja;
  4327.                                     this.idt.limit = ia;
  4328.                                 }
  4329.                                 break;
  4330.                             case 7:
  4331.                                 if (this.cpl != 0) vc(13);
  4332.                                 if ((Ga >> 6) == 3) vc(6);
  4333.                                 ha = Mb(Ga);
  4334.                                 ya.tlb_flush_page(ha & -4096);
  4335.                                 break;
  4336.                             default:
  4337.                                 vc(6);
  4338.                             }
  4339.                             break Ee;
  4340.                         case 0x20:
  4341.                             if (ya.cpl != 0) vc(13);
  4342.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4343.                             Hb++;;
  4344.                             if ((Ga >> 6) != 3) vc(6);
  4345.                             Ia = (Ga >> 3) & 7;
  4346.                             switch (Ia) {
  4347.                             case 0:
  4348.                                 ia = ya.cr0;
  4349.                                 break;
  4350.                             case 2:
  4351.                                 ia = ya.cr2;
  4352.                                 break;
  4353.                             case 3:
  4354.                                 ia = ya.cr3;
  4355.                                 break;
  4356.                             case 4:
  4357.                                 ia = ya.cr4;
  4358.                                 break;
  4359.                             default:
  4360.                                 vc(6);
  4361.                             }
  4362.                             za[Ga & 7] = ia;
  4363.                             break Ee;
  4364.                         case 0x22:
  4365.                             if (ya.cpl != 0) vc(13);
  4366.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4367.                             Hb++;;
  4368.                             if ((Ga >> 6) != 3) vc(6);
  4369.                             Ia = (Ga >> 3) & 7;
  4370.                             ia = za[Ga & 7];
  4371.                             switch (Ia) {
  4372.                             case 0:
  4373.                                 td(ia);
  4374.                                 break;
  4375.                             case 2:
  4376.                                 ya.cr2 = ia;
  4377.                                 break;
  4378.                             case 3:
  4379.                                 vd(ia);
  4380.                                 break;
  4381.                             case 4:
  4382.                                 xd(ia);
  4383.                                 break;
  4384.                             default:
  4385.                                 vc(6);
  4386.                             }
  4387.                             break Ee;
  4388.                         case 0x06:
  4389.                             if (ya.cpl != 0) vc(13);
  4390.                             td(ya.cr0 & ~ (1 << 3));
  4391.                             break Ee;
  4392.                         case 0x23:
  4393.                             if (ya.cpl != 0) vc(13);
  4394.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4395.                             Hb++;;
  4396.                             if ((Ga >> 6) != 3) vc(6);
  4397.                             Ia = (Ga >> 3) & 7;
  4398.                             ia = za[Ga & 7];
  4399.                             if (Ia == 4 || Ia == 5) vc(6);
  4400.                             break Ee;
  4401.                         case 0xb2:
  4402.                             {
  4403.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4404.                                 Hb++;;
  4405.                                 if ((Ga >> 3) == 3) vc(6);
  4406.                                 ha = Mb(Ga);
  4407.                                 ia = ib();
  4408.                                 ha += 4;
  4409.                                 Ja = gb();
  4410.                                 ge(2, Ja);
  4411.                                 za[(Ga >> 3) & 7] = ia;
  4412.                             };
  4413.                             break Ee;
  4414.                         case 0xb4:
  4415.                             {
  4416.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4417.                                 Hb++;;
  4418.                                 if ((Ga >> 3) == 3) vc(6);
  4419.                                 ha = Mb(Ga);
  4420.                                 ia = ib();
  4421.                                 ha += 4;
  4422.                                 Ja = gb();
  4423.                                 ge(4, Ja);
  4424.                                 za[(Ga >> 3) & 7] = ia;
  4425.                             };
  4426.                             break Ee;
  4427.                         case 0xb5:
  4428.                             {
  4429.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4430.                                 Hb++;;
  4431.                                 if ((Ga >> 3) == 3) vc(6);
  4432.                                 ha = Mb(Ga);
  4433.                                 ia = ib();
  4434.                                 ha += 4;
  4435.                                 Ja = gb();
  4436.                                 ge(5, Ja);
  4437.                                 za[(Ga >> 3) & 7] = ia;
  4438.                             };
  4439.                             break Ee;
  4440.                         case 0xa2:
  4441.                             Ce();
  4442.                             break Ee;
  4443.                         case 0xa4:
  4444.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4445.                             Hb++;;
  4446.                             Ja = za[(Ga >> 3) & 7];
  4447.                             if ((Ga >> 6) == 3) {
  4448.                                 Ka = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4449.                                 Hb++;;
  4450.                                 Ha = Ga & 7;
  4451.                                 za[Ha] = lc(za[Ha], Ja, Ka);
  4452.                             } else {
  4453.                                 ha = Mb(Ga);
  4454.                                 Ka = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4455.                                 Hb++;;
  4456.                                 ia = ob();
  4457.                                 ia = lc(La, ia, Ja, Ka);
  4458.                                 ub(ia);
  4459.                             }
  4460.                             break Ee;
  4461.                         case 0xa5:
  4462.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4463.                             Hb++;;
  4464.                             Ja = za[(Ga >> 3) & 7];
  4465.                             Ka = za[1];
  4466.                             if ((Ga >> 6) == 3) {
  4467.                                 Ha = Ga & 7;
  4468.                                 za[Ha] = lc(za[Ha], Ja, Ka);
  4469.                             } else {
  4470.                                 ha = Mb(Ga);
  4471.                                 ia = ob();
  4472.                                 ia = lc(La, ia, Ja, Ka);
  4473.                                 ub(ia);
  4474.                             }
  4475.                             break Ee;
  4476.                         case 0xac:
  4477.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4478.                             Hb++;;
  4479.                             Ja = za[(Ga >> 3) & 7];
  4480.                             if ((Ga >> 6) == 3) {
  4481.                                 Ka = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4482.                                 Hb++;;
  4483.                                 Ha = Ga & 7;
  4484.                                 za[Ha] = nc(za[Ha], Ja, Ka);
  4485.                             } else {
  4486.                                 ha = Mb(Ga);
  4487.                                 Ka = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4488.                                 Hb++;;
  4489.                                 ia = ob();
  4490.                                 ia = nc(La, ia, Ja, Ka);
  4491.                                 ub(ia);
  4492.                             }
  4493.                             break Ee;
  4494.                         case 0xad:
  4495.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4496.                             Hb++;;
  4497.                             Ja = za[(Ga >> 3) & 7];
  4498.                             Ka = za[1];
  4499.                             if ((Ga >> 6) == 3) {
  4500.                                 Ha = Ga & 7;
  4501.                                 za[Ha] = nc(za[Ha], Ja, Ka);
  4502.                             } else {
  4503.                                 ha = Mb(Ga);
  4504.                                 ia = ob();
  4505.                                 ia = nc(La, ia, Ja, Ka);
  4506.                                 ub(ia);
  4507.                             }
  4508.                             break Ee;
  4509.                         case 0xba:
  4510.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4511.                             Hb++;;
  4512.                             La = (Ga >> 3) & 7;
  4513.                             switch (La) {
  4514.                             case 4:
  4515.                                 if ((Ga >> 6) == 3) {
  4516.                                     ia = za[Ga & 7];
  4517.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4518.                                     Hb++;;
  4519.                                 } else {
  4520.                                     ha = Mb(Ga);
  4521.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4522.                                     Hb++;;
  4523.                                     ia = ob();
  4524.                                 }
  4525.                                 oc(ia, Ja);
  4526.                                 break;
  4527.                             case 5:
  4528.                                 if ((Ga >> 6) == 3) {
  4529.                                     Ha = Ga & 7;
  4530.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4531.                                     Hb++;;
  4532.                                     za[Ha] = pc(za[Ha], Ja);
  4533.                                 } else {
  4534.                                     ha = Mb(Ga);
  4535.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4536.                                     Hb++;;
  4537.                                     ia = ob();
  4538.                                     ia = pc(ia, Ja);
  4539.                                     ub(ia);
  4540.                                 };
  4541.                                 break;
  4542.                             case 6:
  4543.                                 if ((Ga >> 6) == 3) {
  4544.                                     Ha = Ga & 7;
  4545.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4546.                                     Hb++;;
  4547.                                     za[Ha] = qc(za[Ha], Ja);
  4548.                                 } else {
  4549.                                     ha = Mb(Ga);
  4550.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4551.                                     Hb++;;
  4552.                                     ia = ob();
  4553.                                     ia = qc(ia, Ja);
  4554.                                     ub(ia);
  4555.                                 };
  4556.                                 break;
  4557.                             case 6:
  4558.                                 if ((Ga >> 6) == 3) {
  4559.                                     Ha = Ga & 7;
  4560.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4561.                                     Hb++;;
  4562.                                     za[Ha] = rc(za[Ha], Ja);
  4563.                                 } else {
  4564.                                     ha = Mb(Ga);
  4565.                                     Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4566.                                     Hb++;;
  4567.                                     ia = ob();
  4568.                                     ia = rc(ia, Ja);
  4569.                                     ub(ia);
  4570.                                 };
  4571.                                 break;
  4572.                             default:
  4573.                                 vc(6);
  4574.                             }
  4575.                             break Ee;
  4576.                         case 0xa3:
  4577.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4578.                             Hb++;;
  4579.                             Ja = za[(Ga >> 3) & 7];
  4580.                             if ((Ga >> 6) == 3) {
  4581.                                 ia = za[Ga & 7];
  4582.                             } else {
  4583.                                 ha = Mb(Ga);
  4584.                                 ha = (ha + ((Ja >> 5) << 2)) & -1;
  4585.                                 ia = ib();
  4586.                             }
  4587.                             oc(ia, Ja);
  4588.                             break Ee;
  4589.                         case 0xab:
  4590.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4591.                             Hb++;;
  4592.                             Ja = za[(Ga >> 3) & 7];
  4593.                             if ((Ga >> 6) == 3) {
  4594.                                 Ha = Ga & 7;
  4595.                                 za[Ha] = pc(za[Ha], Ja);
  4596.                             } else {
  4597.                                 ha = Mb(Ga);
  4598.                                 ha = (ha + ((Ja >> 5) << 2)) & -1;
  4599.                                 ia = ob();
  4600.                                 ia = pc(ia, Ja);
  4601.                                 ub(ia);
  4602.                             }
  4603.                             break Ee;
  4604.                         case 0xb3:
  4605.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4606.                             Hb++;;
  4607.                             Ja = za[(Ga >> 3) & 7];
  4608.                             if ((Ga >> 6) == 3) {
  4609.                                 Ha = Ga & 7;
  4610.                                 za[Ha] = qc(za[Ha], Ja);
  4611.                             } else {
  4612.                                 ha = Mb(Ga);
  4613.                                 ha = (ha + ((Ja >> 5) << 2)) & -1;
  4614.                                 ia = ob();
  4615.                                 ia = qc(ia, Ja);
  4616.                                 ub(ia);
  4617.                             }
  4618.                             break Ee;
  4619.                         case 0xbb:
  4620.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4621.                             Hb++;;
  4622.                             Ja = za[(Ga >> 3) & 7];
  4623.                             if ((Ga >> 6) == 3) {
  4624.                                 Ha = Ga & 7;
  4625.                                 za[Ha] = rc(za[Ha], Ja);
  4626.                             } else {
  4627.                                 ha = Mb(Ga);
  4628.                                 ha = (ha + ((Ja >> 5) << 2)) & -1;
  4629.                                 ia = ob();
  4630.                                 ia = rc(ia, Ja);
  4631.                                 ub(ia);
  4632.                             }
  4633.                             break Ee;
  4634.                         case 0xbc:
  4635.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4636.                             Hb++;;
  4637.                             Ia = (Ga >> 3) & 7;
  4638.                             if ((Ga >> 6) == 3) {
  4639.                                 Ja = za[Ga & 7];
  4640.                             } else {
  4641.                                 ha = Mb(Ga);
  4642.                                 Ja = ib();
  4643.                             }
  4644.                             za[Ia] = sc(za[Ia], Ja);
  4645.                             break Ee;
  4646.                         case 0xbd:
  4647.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4648.                             Hb++;;
  4649.                             Ia = (Ga >> 3) & 7;
  4650.                             if ((Ga >> 6) == 3) {
  4651.                                 Ja = za[Ga & 7];
  4652.                             } else {
  4653.                                 ha = Mb(Ga);
  4654.                                 Ja = ib();
  4655.                             }
  4656.                             za[Ia] = tc(za[Ia], Ja);
  4657.                             break Ee;
  4658.                         case 0xaf:
  4659.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4660.                             Hb++;;
  4661.                             Ia = (Ga >> 3) & 7;
  4662.                             if ((Ga >> 6) == 3) {
  4663.                                 Ja = za[Ga & 7];
  4664.                             } else {
  4665.                                 ha = Mb(Ga);
  4666.                                 Ja = ib();
  4667.                             }
  4668.                             za[Ia] = Oc(za[Ia], Ja);
  4669.                             break Ee;
  4670.                         case 0x31:
  4671.                             if ((ya.cr4 & (1 << 2)) && ya.cpl != 0) vc(13);
  4672.                             ia = Wc();
  4673.                             za[0] = ia >>> 0;
  4674.                             za[2] = (ia / 0x100000000) >>> 0;
  4675.                             break Ee;
  4676.                         case 0xc0:
  4677.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4678.                             Hb++;;
  4679.                             Ia = (Ga >> 3) & 7;
  4680.                             if ((Ga >> 6) == 3) {
  4681.                                 Ha = Ga & 7;
  4682.                                 ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  4683.                                 Ja = Tb(0, ia, ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff));
  4684.                                 Rb(Ia, ia);
  4685.                                 Rb(Ha, Ja);
  4686.                             } else {
  4687.                                 ha = Mb(Ga);
  4688.                                 ia = kb();
  4689.                                 Ja = Tb(0, ia, ((za[Ia & 3] >> ((Ia & 4) << 1)) & 0xff));
  4690.                                 qb(Ja);
  4691.                                 Rb(Ia, ia);
  4692.                             }
  4693.                             break Ee;
  4694.                         case 0xc1:
  4695.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4696.                             Hb++;;
  4697.                             Ia = (Ga >> 3) & 7;
  4698.                             if ((Ga >> 6) == 3) {
  4699.                                 Ha = Ga & 7;
  4700.                                 ia = za[Ha];
  4701.                                 Ja = dc(0, ia, za[Ia]);
  4702.                                 za[Ia] = ia;
  4703.                                 za[Ha] = Ja;
  4704.                             } else {
  4705.                                 ha = Mb(Ga);
  4706.                                 ia = ob();
  4707.                                 Ja = dc(0, ia, za[Ia]);
  4708.                                 ub(Ja);
  4709.                                 za[Ia] = ia;
  4710.                             }
  4711.                             break Ee;
  4712.                         case 0xb1:
  4713.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4714.                             Hb++;;
  4715.                             Ia = (Ga >> 3) & 7;
  4716.                             if ((Ga >> 6) == 3) {
  4717.                                 Ha = Ga & 7;
  4718.                                 ia = za[Ha];
  4719.                                 Ja = dc(5, za[0], ia);
  4720.                                 if (Ja == 0) {
  4721.                                     za[Ha] = za[Ia];
  4722.                                 } else {
  4723.                                     za[0] = ia;
  4724.                                 }
  4725.                             } else {
  4726.                                 ha = Mb(Ga);
  4727.                                 ia = ob();
  4728.                                 Ja = dc(5, za[0], ia);
  4729.                                 if (Ja == 0) {
  4730.                                     ub(za[Ia]);
  4731.                                 } else {
  4732.                                     za[0] = ia;
  4733.                                 }
  4734.                             }
  4735.                             break Ee;
  4736.                         case 0xa0:
  4737.                             {
  4738.                                 ia = ya.segs[4].selector;
  4739.                                 ha = (za[4] - 4) & -1;
  4740.                                 ub(ia);
  4741.                                 za[4] = ha;
  4742.                             };
  4743.                             break Ee;
  4744.                         case 0xa8:
  4745.                             {
  4746.                                 ia = ya.segs[5].selector;
  4747.                                 ha = (za[4] - 4) & -1;
  4748.                                 ub(ia);
  4749.                                 za[4] = ha;
  4750.                             };
  4751.                             break Ee;
  4752.                         case 0xa1:
  4753.                             {
  4754.                                 ha = za[4];
  4755.                                 ia = ib();
  4756.                                 ge(4, ia & 0xffff);
  4757.                                 za[4] = (za[4] + 4) & -1;
  4758.                             };
  4759.                             break Ee;
  4760.                         case 0xa9:
  4761.                             {
  4762.                                 ha = za[4];
  4763.                                 ia = ib();
  4764.                                 ge(5, ia & 0xffff);
  4765.                                 za[4] = (za[4] + 4) & -1;
  4766.                             };
  4767.                             break Ee;
  4768.                         case 0xc8:
  4769.                         case 0xc9:
  4770.                         case 0xca:
  4771.                         case 0xcb:
  4772.                         case 0xcc:
  4773.                         case 0xcd:
  4774.                         case 0xce:
  4775.                         case 0xcf:
  4776.                             Ia = b & 7;
  4777.                             ia = za[Ia];
  4778.                             ia = (ia >>> 24) | ((ia >> 8) & 0x0000ff00) | ((ia << 8) & 0x00ff0000) | (ia << 24);
  4779.                             za[Ia] = ia;
  4780.                             break Ee;
  4781.                         case 0x02:
  4782.                         case 0x03:
  4783.                         case 0x04:
  4784.                         case 0x05:
  4785.                         case 0x07:
  4786.                         case 0x08:
  4787.                         case 0x09:
  4788.                         case 0x0a:
  4789.                         case 0x0b:
  4790.                         case 0x0c:
  4791.                         case 0x0d:
  4792.                         case 0x0e:
  4793.                         case 0x0f:
  4794.                         case 0x10:
  4795.                         case 0x11:
  4796.                         case 0x12:
  4797.                         case 0x13:
  4798.                         case 0x14:
  4799.                         case 0x15:
  4800.                         case 0x16:
  4801.                         case 0x17:
  4802.                         case 0x18:
  4803.                         case 0x19:
  4804.                         case 0x1a:
  4805.                         case 0x1b:
  4806.                         case 0x1c:
  4807.                         case 0x1d:
  4808.                         case 0x1e:
  4809.                         case 0x1f:
  4810.                         case 0x21:
  4811.                         case 0x24:
  4812.                         case 0x25:
  4813.                         case 0x26:
  4814.                         case 0x27:
  4815.                         case 0x28:
  4816.                         case 0x29:
  4817.                         case 0x2a:
  4818.                         case 0x2b:
  4819.                         case 0x2c:
  4820.                         case 0x2d:
  4821.                         case 0x2e:
  4822.                         case 0x2f:
  4823.                         case 0x30:
  4824.                         case 0x32:
  4825.                         case 0x33:
  4826.                         case 0x34:
  4827.                         case 0x35:
  4828.                         case 0x36:
  4829.                         case 0x37:
  4830.                         case 0x38:
  4831.                         case 0x39:
  4832.                         case 0x3a:
  4833.                         case 0x3b:
  4834.                         case 0x3c:
  4835.                         case 0x3d:
  4836.                         case 0x3e:
  4837.                         case 0x3f:
  4838.                         case 0x50:
  4839.                         case 0x51:
  4840.                         case 0x52:
  4841.                         case 0x53:
  4842.                         case 0x54:
  4843.                         case 0x55:
  4844.                         case 0x56:
  4845.                         case 0x57:
  4846.                         case 0x58:
  4847.                         case 0x59:
  4848.                         case 0x5a:
  4849.                         case 0x5b:
  4850.                         case 0x5c:
  4851.                         case 0x5d:
  4852.                         case 0x5e:
  4853.                         case 0x5f:
  4854.                         case 0x60:
  4855.                         case 0x61:
  4856.                         case 0x62:
  4857.                         case 0x63:
  4858.                         case 0x64:
  4859.                         case 0x65:
  4860.                         case 0x66:
  4861.                         case 0x67:
  4862.                         case 0x68:
  4863.                         case 0x69:
  4864.                         case 0x6a:
  4865.                         case 0x6b:
  4866.                         case 0x6c:
  4867.                         case 0x6d:
  4868.                         case 0x6e:
  4869.                         case 0x6f:
  4870.                         case 0x70:
  4871.                         case 0x71:
  4872.                         case 0x72:
  4873.                         case 0x73:
  4874.                         case 0x74:
  4875.                         case 0x75:
  4876.                         case 0x76:
  4877.                         case 0x77:
  4878.                         case 0x78:
  4879.                         case 0x79:
  4880.                         case 0x7a:
  4881.                         case 0x7b:
  4882.                         case 0x7c:
  4883.                         case 0x7d:
  4884.                         case 0x7e:
  4885.                         case 0x7f:
  4886.                         case 0xa6:
  4887.                         case 0xa7:
  4888.                         case 0xaa:
  4889.                         case 0xae:
  4890.                         case 0xb0:
  4891.                         case 0xb8:
  4892.                         case 0xb9:
  4893.                         case 0xc2:
  4894.                         case 0xc3:
  4895.                         case 0xc4:
  4896.                         case 0xc5:
  4897.                         case 0xc6:
  4898.                         case 0xc7:
  4899.                         case 0xd0:
  4900.                         case 0xd1:
  4901.                         case 0xd2:
  4902.                         case 0xd3:
  4903.                         case 0xd4:
  4904.                         case 0xd5:
  4905.                         case 0xd6:
  4906.                         case 0xd7:
  4907.                         case 0xd8:
  4908.                         case 0xd9:
  4909.                         case 0xda:
  4910.                         case 0xdb:
  4911.                         case 0xdc:
  4912.                         case 0xdd:
  4913.                         case 0xde:
  4914.                         case 0xdf:
  4915.                         case 0xe0:
  4916.                         case 0xe1:
  4917.                         case 0xe2:
  4918.                         case 0xe3:
  4919.                         case 0xe4:
  4920.                         case 0xe5:
  4921.                         case 0xe6:
  4922.                         case 0xe7:
  4923.                         case 0xe8:
  4924.                         case 0xe9:
  4925.                         case 0xea:
  4926.                         case 0xeb:
  4927.                         case 0xec:
  4928.                         case 0xed:
  4929.                         case 0xee:
  4930.                         case 0xef:
  4931.                         case 0xf0:
  4932.                         case 0xf1:
  4933.                         case 0xf2:
  4934.                         case 0xf3:
  4935.                         case 0xf4:
  4936.                         case 0xf5:
  4937.                         case 0xf6:
  4938.                         case 0xf7:
  4939.                         case 0xf8:
  4940.                         case 0xf9:
  4941.                         case 0xfa:
  4942.                         case 0xfb:
  4943.                         case 0xfc:
  4944.                         case 0xfd:
  4945.                         case 0xfe:
  4946.                         case 0xff:
  4947.                         default:
  4948.                             vc(6);
  4949.                         }
  4950.                         break;
  4951.                     default:
  4952.                         switch (b) {
  4953.                         case 0x166:
  4954.                             Fa |= 0x0100;
  4955.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4956.                             Hb++;;
  4957.                             b |= (Fa & 0x0100);
  4958.                             break;
  4959.                         case 0x1f0:
  4960.                             Fa |= 0x0040;
  4961.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4962.                             Hb++;;
  4963.                             b |= (Fa & 0x0100);
  4964.                             break;
  4965.                         case 0x1f2:
  4966.                             Fa |= 0x0020;
  4967.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4968.                             Hb++;;
  4969.                             b |= (Fa & 0x0100);
  4970.                             break;
  4971.                         case 0x1f3:
  4972.                             Fa |= 0x0010;
  4973.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4974.                             Hb++;;
  4975.                             b |= (Fa & 0x0100);
  4976.                             break;
  4977.                         case 0x164:
  4978.                             Fa = (Fa & ~0x000f) | (4 + 1);
  4979.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4980.                             Hb++;;
  4981.                             b |= (Fa & 0x0100);;
  4982.                             break;
  4983.                         case 0x165:
  4984.                             Fa = (Fa & ~0x000f) | (5 + 1);
  4985.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4986.                             Hb++;;
  4987.                             b |= (Fa & 0x0100);;
  4988.                             break;
  4989.                         case 0x189:
  4990.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  4991.                             Hb++;;
  4992.                             ia = za[(Ga >> 3) & 7];
  4993.                             if ((Ga >> 6) == 3) {
  4994.                                 Sb(Ga & 7, ia);
  4995.                             } else {
  4996.                                 ha = Mb(Ga);
  4997.                                 sb(ia);
  4998.                             }
  4999.                             break Ee;
  5000.                         case 0x18b:
  5001.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5002.                             Hb++;;
  5003.                             if ((Ga >> 6) == 3) {
  5004.                                 ia = za[Ga & 7];
  5005.                             } else {
  5006.                                 ha = Mb(Ga);
  5007.                                 ia = gb();
  5008.                             }
  5009.                             Sb((Ga >> 3) & 7, ia);
  5010.                             break Ee;
  5011.                         case 0x1b8:
  5012.                         case 0x1b9:
  5013.                         case 0x1ba:
  5014.                         case 0x1bb:
  5015.                         case 0x1bc:
  5016.                         case 0x1bd:
  5017.                         case 0x1be:
  5018.                         case 0x1bf:
  5019.                             Sb(b & 7, Kb());
  5020.                             break Ee;
  5021.                         case 0x1a1:
  5022.                             ha = Qb();
  5023.                             ia = gb();
  5024.                             Sb(0, ia);
  5025.                             break Ee;
  5026.                         case 0x1a3:
  5027.                             ha = Qb();
  5028.                             sb(za[0]);
  5029.                             break Ee;
  5030.                         case 0x1c7:
  5031.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5032.                             Hb++;;
  5033.                             if ((Ga >> 6) == 3) {
  5034.                                 ia = Kb();
  5035.                                 Sb(Ga & 7, ia);
  5036.                             } else {
  5037.                                 ha = Mb(Ga);
  5038.                                 ia = Kb();
  5039.                                 sb(ia);
  5040.                             }
  5041.                             break Ee;
  5042.                         case 0x191:
  5043.                         case 0x192:
  5044.                         case 0x193:
  5045.                         case 0x194:
  5046.                         case 0x195:
  5047.                         case 0x196:
  5048.                         case 0x197:
  5049.                             Ia = b & 7;
  5050.                             ia = za[0];
  5051.                             Sb(0, za[Ia]);
  5052.                             Sb(Ia, ia);
  5053.                             break Ee;
  5054.                         case 0x187:
  5055.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5056.                             Hb++;;
  5057.                             Ia = (Ga >> 3) & 7;
  5058.                             if ((Ga >> 6) == 3) {
  5059.                                 Ha = Ga & 7;
  5060.                                 ia = za[Ha];
  5061.                                 Sb(Ha, za[Ia]);
  5062.                             } else {
  5063.                                 ha = Mb(Ga);
  5064.                                 ia = mb();
  5065.                                 sb(za[Ia]);
  5066.                             }
  5067.                             Sb(Ia, ia);
  5068.                             break Ee;
  5069.                         case 0x101:
  5070.                         case 0x109:
  5071.                         case 0x111:
  5072.                         case 0x119:
  5073.                         case 0x121:
  5074.                         case 0x129:
  5075.                         case 0x131:
  5076.                         case 0x139:
  5077.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5078.                             Hb++;;
  5079.                             La = (b >> 3) & 7;
  5080.                             Ja = za[(Ga >> 3) & 7];
  5081.                             if ((Ga >> 6) == 3) {
  5082.                                 Ha = Ga & 7;
  5083.                                 Sb(Ha, ac(La, za[Ha], Ja));
  5084.                             } else {
  5085.                                 ha = Mb(Ga);
  5086.                                 if (La != 7) {
  5087.                                     ia = mb();
  5088.                                     ia = ac(La, ia, Ja);
  5089.                                     sb(ia);
  5090.                                 } else {
  5091.                                     ia = gb();
  5092.                                     ac(7, ia, Ja);
  5093.                                 }
  5094.                             }
  5095.                             break Ee;
  5096.                         case 0x103:
  5097.                         case 0x10b:
  5098.                         case 0x113:
  5099.                         case 0x11b:
  5100.                         case 0x123:
  5101.                         case 0x12b:
  5102.                         case 0x133:
  5103.                         case 0x13b:
  5104.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5105.                             Hb++;;
  5106.                             La = (b >> 3) & 7;
  5107.                             Ia = (Ga >> 3) & 7;
  5108.                             if ((Ga >> 6) == 3) {
  5109.                                 Ja = za[Ga & 7];
  5110.                             } else {
  5111.                                 ha = Mb(Ga);
  5112.                                 Ja = gb();
  5113.                             }
  5114.                             Sb(Ia, ac(La, za[Ia], Ja));
  5115.                             break Ee;
  5116.                         case 0x105:
  5117.                         case 0x10d:
  5118.                         case 0x115:
  5119.                         case 0x11d:
  5120.                         case 0x125:
  5121.                         case 0x12d:
  5122.                         case 0x135:
  5123.                         case 0x13d:
  5124.                             Ja = Kb();
  5125.                             La = (b >> 3) & 7;
  5126.                             Sb(0, ac(La, za[0], Ja));
  5127.                             break Ee;
  5128.                         case 0x181:
  5129.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5130.                             Hb++;;
  5131.                             La = (Ga >> 3) & 7;
  5132.                             if ((Ga >> 6) == 3) {
  5133.                                 Ha = Ga & 7;
  5134.                                 Ja = Kb();
  5135.                                 za[Ha] = ac(La, za[Ha], Ja);
  5136.                             } else {
  5137.                                 ha = Mb(Ga);
  5138.                                 Ja = Kb();
  5139.                                 if (La != 7) {
  5140.                                     ia = mb();
  5141.                                     ia = ac(La, ia, Ja);
  5142.                                     sb(ia);
  5143.                                 } else {
  5144.                                     ia = gb();
  5145.                                     ac(7, ia, Ja);
  5146.                                 }
  5147.                             }
  5148.                             break Ee;
  5149.                         case 0x183:
  5150.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5151.                             Hb++;;
  5152.                             La = (Ga >> 3) & 7;
  5153.                             if ((Ga >> 6) == 3) {
  5154.                                 Ha = Ga & 7;
  5155.                                 Ja = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  5156.                                 Hb++;;
  5157.                                 Sb(Ha, ac(La, za[Ha], Ja));
  5158.                             } else {
  5159.                                 ha = Mb(Ga);
  5160.                                 Ja = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  5161.                                 Hb++;;
  5162.                                 if (La != 7) {
  5163.                                     ia = mb();
  5164.                                     ia = ac(La, ia, Ja);
  5165.                                     sb(ia);
  5166.                                 } else {
  5167.                                     ia = gb();
  5168.                                     ac(7, ia, Ja);
  5169.                                 }
  5170.                             }
  5171.                             break Ee;
  5172.                         case 0x140:
  5173.                         case 0x141:
  5174.                         case 0x142:
  5175.                         case 0x143:
  5176.                         case 0x144:
  5177.                         case 0x145:
  5178.                         case 0x146:
  5179.                         case 0x147:
  5180.                             Ia = b & 7;
  5181.                             Sb(Ia, bc(za[Ia]));
  5182.                             break Ee;
  5183.                         case 0x148:
  5184.                         case 0x149:
  5185.                         case 0x14a:
  5186.                         case 0x14b:
  5187.                         case 0x14c:
  5188.                         case 0x14d:
  5189.                         case 0x14e:
  5190.                         case 0x14f:
  5191.                             Ia = b & 7;
  5192.                             Sb(Ia, cc(za[Ia]));
  5193.                             break Ee;
  5194.                         case 0x16b:
  5195.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5196.                             Hb++;;
  5197.                             Ia = (Ga >> 3) & 7;
  5198.                             if ((Ga >> 6) == 3) {
  5199.                                 Ja = za[Ga & 7];
  5200.                             } else {
  5201.                                 ha = Mb(Ga);
  5202.                                 Ja = gb();
  5203.                             }
  5204.                             Ka = ((((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua]) << 24) >> 24;
  5205.                             Hb++;;
  5206.                             Sb(Ia, Jc(Ja, Ka));
  5207.                             break Ee;
  5208.                         case 0x169:
  5209.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5210.                             Hb++;;
  5211.                             Ia = (Ga >> 3) & 7;
  5212.                             if ((Ga >> 6) == 3) {
  5213.                                 Ja = za[Ga & 7];
  5214.                             } else {
  5215.                                 ha = Mb(Ga);
  5216.                                 Ja = gb();
  5217.                             }
  5218.                             Ka = Kb();
  5219.                             Sb(Ia, Jc(Ja, Ka));
  5220.                             break Ee;
  5221.                         case 0x185:
  5222.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5223.                             Hb++;;
  5224.                             if ((Ga >> 6) == 3) {
  5225.                                 ia = za[Ga & 7];
  5226.                             } else {
  5227.                                 ha = Mb(Ga);
  5228.                                 ia = gb();
  5229.                             }
  5230.                             Ja = za[(Ga >> 3) & 7];
  5231.                             Ba = ia & Ja;
  5232.                             Ca = 13;
  5233.                             break Ee;
  5234.                         case 0x1a9:
  5235.                             Ja = Kb();
  5236.                             Ba = za[0] & Ja;
  5237.                             Ca = 13;
  5238.                             break Ee;
  5239.                         case 0x1f7:
  5240.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5241.                             Hb++;;
  5242.                             La = (Ga >> 3) & 7;
  5243.                             switch (La) {
  5244.                             case 0:
  5245.                                 if ((Ga >> 6) == 3) {
  5246.                                     ia = za[Ga & 7];
  5247.                                 } else {
  5248.                                     ha = Mb(Ga);
  5249.                                     ia = gb();
  5250.                                 }
  5251.                                 Ja = Kb();
  5252.                                 Ba = ia & Ja;
  5253.                                 Ca = 13;
  5254.                                 break;
  5255.                             case 2:
  5256.                                 if ((Ga >> 6) == 3) {
  5257.                                     Ha = Ga & 7;
  5258.                                     Sb(Ha, ~za[Ha]);
  5259.                                 } else {
  5260.                                     ha = Mb(Ga);
  5261.                                     ia = mb();
  5262.                                     ia = ~ia;
  5263.                                     sb(ia);
  5264.                                 }
  5265.                                 break;
  5266.                             case 3:
  5267.                                 if ((Ga >> 6) == 3) {
  5268.                                     Ha = Ga & 7;
  5269.                                     Sb(Ha, ac(5, 0, za[Ha]));
  5270.                                 } else {
  5271.                                     ha = Mb(Ga);
  5272.                                     ia = mb();
  5273.                                     ia = ac(5, 0, ia);
  5274.                                     sb(ia);
  5275.                                 }
  5276.                                 break;
  5277.                             case 4:
  5278.                                 if ((Ga >> 6) == 3) {
  5279.                                     ia = za[Ga & 7];
  5280.                                 } else {
  5281.                                     ha = Mb(Ga);
  5282.                                     ia = gb();
  5283.                                 }
  5284.                                 ia = Ic(za[0], ia);
  5285.                                 Sb(0, ia);
  5286.                                 Sb(2, ia >> 16);
  5287.                                 break;
  5288.                             case 5:
  5289.                                 if ((Ga >> 6) == 3) {
  5290.                                     ia = za[Ga & 7];
  5291.                                 } else {
  5292.                                     ha = Mb(Ga);
  5293.                                     ia = gb();
  5294.                                 }
  5295.                                 ia = Jc(za[0], ia);
  5296.                                 Sb(0, ia);
  5297.                                 Sb(2, ia >> 16);
  5298.                                 break;
  5299.                             case 6:
  5300.                                 if ((Ga >> 6) == 3) {
  5301.                                     ia = za[Ga & 7];
  5302.                                 } else {
  5303.                                     ha = Mb(Ga);
  5304.                                     ia = gb();
  5305.                                 }
  5306.                                 xc(ia);
  5307.                                 break;
  5308.                             case 7:
  5309.                                 if ((Ga >> 6) == 3) {
  5310.                                     ia = za[Ga & 7];
  5311.                                 } else {
  5312.                                     ha = Mb(Ga);
  5313.                                     ia = gb();
  5314.                                 }
  5315.                                 yc(ia);
  5316.                                 break;
  5317.                             default:
  5318.                                 vc(6);
  5319.                             }
  5320.                             break Ee;
  5321.                         case 0x1c1:
  5322.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5323.                             Hb++;;
  5324.                             La = (Ga >> 3) & 7;
  5325.                             if ((Ga >> 6) == 3) {
  5326.                                 Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5327.                                 Hb++;;
  5328.                                 Ha = Ga & 7;
  5329.                                 Sb(Ha, jc(La, za[Ha], Ja));
  5330.                             } else {
  5331.                                 ha = Mb(Ga);
  5332.                                 Ja = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5333.                                 Hb++;;
  5334.                                 ia = mb();
  5335.                                 ia = jc(La, ia, Ja);
  5336.                                 sb(ia);
  5337.                             }
  5338.                             break Ee;
  5339.                         case 0x1d1:
  5340.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5341.                             Hb++;;
  5342.                             La = (Ga >> 3) & 7;
  5343.                             if ((Ga >> 6) == 3) {
  5344.                                 Ha = Ga & 7;
  5345.                                 Sb(Ha, jc(La, za[Ha], 1));
  5346.                             } else {
  5347.                                 ha = Mb(Ga);
  5348.                                 ia = mb();
  5349.                                 ia = jc(La, ia, 1);
  5350.                                 sb(ia);
  5351.                             }
  5352.                             break Ee;
  5353.                         case 0x1d3:
  5354.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5355.                             Hb++;;
  5356.                             La = (Ga >> 3) & 7;
  5357.                             Ja = za[1] & 0xff;
  5358.                             if ((Ga >> 6) == 3) {
  5359.                                 Ha = Ga & 7;
  5360.                                 Sb(Ha, jc(La, za[Ha], Ja));
  5361.                             } else {
  5362.                                 ha = Mb(Ga);
  5363.                                 ia = mb();
  5364.                                 ia = jc(La, ia, Ja);
  5365.                                 sb(ia);
  5366.                             }
  5367.                             break Ee;
  5368.                         case 0x198:
  5369.                             Sb(0, (za[0] << 24) >> 24);
  5370.                             break Ee;
  5371.                         case 0x199:
  5372.                             Sb(2, (za[0] << 16) >> 31);
  5373.                             break Ee;
  5374.                         case 0x1ff:
  5375.                             Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5376.                             Hb++;;
  5377.                             La = (Ga >> 3) & 7;
  5378.                             switch (La) {
  5379.                             case 0:
  5380.                                 if ((Ga >> 6) == 3) {
  5381.                                     Ha = Ga & 7;
  5382.                                     Sb(Ha, bc(za[Ha]));
  5383.                                 } else {
  5384.                                     ha = Mb(Ga);
  5385.                                     ia = mb();
  5386.                                     ia = bc(ia);
  5387.                                     sb(ia);
  5388.                                 }
  5389.                                 break;
  5390.                             case 1:
  5391.                                 if ((Ga >> 6) == 3) {
  5392.                                     Ha = Ga & 7;
  5393.                                     Sb(Ha, cc(za[Ha]));
  5394.                                 } else {
  5395.                                     ha = Mb(Ga);
  5396.                                     ia = mb();
  5397.                                     ia = cc(ia);
  5398.                                     sb(ia);
  5399.                                 }
  5400.                                 break;
  5401.                             case 2:
  5402.                             case 4:
  5403.                             case 6:
  5404.                             case 3:
  5405.                             case 5:
  5406.                             default:
  5407.                                 throw "GRP5";
  5408.                             }
  5409.                             break Ee;
  5410.                         case 0x190:
  5411.                             break Ee;
  5412.                         case 0x1a5:
  5413.                             if (Fa & (0x0010 | 0x0020)) {
  5414.                                 if (za[1]) {
  5415.                                     if (16 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && ((za[6] | za[7]) & 3) == 0 && ed()) {} else {
  5416.                                         ha = za[6];
  5417.                                         ia = gb();
  5418.                                         ha = za[7];
  5419.                                         sb(ia);
  5420.                                         za[6] = (za[6] + (ya.df << 1)) & -1;
  5421.                                         za[7] = (za[7] + (ya.df << 1)) & -1;
  5422.                                         za[1] = (za[1] - 1) & -1;
  5423.                                     }
  5424.                                     Hb = Ib;
  5425.                                 }
  5426.                             } else {
  5427.                                 ha = za[6];
  5428.                                 ia = gb();
  5429.                                 ha = za[7];
  5430.                                 sb(ia);
  5431.                                 za[6] = (za[6] + (ya.df << 1)) & -1;
  5432.                                 za[7] = (za[7] + (ya.df << 1)) & -1;
  5433.                             };
  5434.                             break Ee;
  5435.                         case 0x1a7:
  5436.                             if (Fa & (0x0010 | 0x0020)) {
  5437.                                 if (za[1]) {
  5438.                                     ha = za[6];
  5439.                                     ia = gb();
  5440.                                     ha = za[7];
  5441.                                     Ja = gb();
  5442.                                     ac(7, ia, Ja);
  5443.                                     za[6] = (za[6] + (ya.df << 1)) & -1;
  5444.                                     za[7] = (za[7] + (ya.df << 1)) & -1;
  5445.                                     za[1] = (za[1] - 1) & -1;
  5446.                                     if (Fa & 0x0010) {
  5447.                                         if (!Xb(4)) break Ee;
  5448.                                     } else {
  5449.                                         if (Xb(4)) break Ee;
  5450.                                     }
  5451.                                     Hb = Ib;
  5452.                                 }
  5453.                             } else {
  5454.                                 ha = za[6];
  5455.                                 ia = gb();
  5456.                                 ha = za[7];
  5457.                                 Ja = gb();
  5458.                                 ac(7, ia, Ja);
  5459.                                 za[6] = (za[6] + (ya.df << 1)) & -1;
  5460.                                 za[7] = (za[7] + (ya.df << 1)) & -1;
  5461.                             };
  5462.                             break Ee;
  5463.                         case 0x1ad:
  5464.                             if (Fa & (0x0010 | 0x0020)) {
  5465.                                 if (za[1]) {
  5466.                                     ha = za[6];
  5467.                                     if (16 == 32) za[0] = ib();
  5468.                                     else Sb(0, gb());
  5469.                                     za[6] = (ha + (ya.df << 1)) & -1;
  5470.                                     za[1] = (za[1] - 1) & -1;
  5471.                                     Hb = Ib;
  5472.                                 }
  5473.                             } else {
  5474.                                 ha = za[6];
  5475.                                 if (16 == 32) za[0] = ib();
  5476.                                 else Sb(0, gb());
  5477.                                 za[6] = (ha + (ya.df << 1)) & -1;
  5478.                             };
  5479.                             break Ee;
  5480.                         case 0x1af:
  5481.                             if (Fa & (0x0010 | 0x0020)) {
  5482.                                 if (za[1]) {
  5483.                                     ha = za[7];
  5484.                                     ia = gb();
  5485.                                     ac(7, za[0], ia);
  5486.                                     za[7] = (za[7] + (ya.df << 1)) & -1;
  5487.                                     za[1] = (za[1] - 1) & -1;
  5488.                                     if (Fa & 0x0010) {
  5489.                                         if (!Xb(4)) break Ee;
  5490.                                     } else {
  5491.                                         if (Xb(4)) break Ee;
  5492.                                     }
  5493.                                     Hb = Ib;
  5494.                                 }
  5495.                             } else {
  5496.                                 ha = za[7];
  5497.                                 ia = gb();
  5498.                                 ac(7, za[0], ia);
  5499.                                 za[7] = (za[7] + (ya.df << 1)) & -1;
  5500.                             };
  5501.                             break Ee;
  5502.                         case 0x1ab:
  5503.                             if (Fa & (0x0010 | 0x0020)) {
  5504.                                 if (za[1]) {
  5505.                                     if (16 === 32 && (za[1] >>> 0) >= 4 && ya.df == 1 && (za[7] & 3) == 0 && jd()) {} else {
  5506.                                         ha = za[7];
  5507.                                         sb(za[0]);
  5508.                                         za[7] = (ha + (ya.df << 1)) & -1;
  5509.                                         za[1] = (za[1] - 1) & -1;
  5510.                                     }
  5511.                                     Hb = Ib;
  5512.                                 }
  5513.                             } else {
  5514.                                 ha = za[7];
  5515.                                 sb(za[0]);
  5516.                                 za[7] = (ha + (ya.df << 1)) & -1;
  5517.                             };
  5518.                             break Ee;
  5519.                         case 0x1d8:
  5520.                         case 0x1d9:
  5521.                         case 0x1da:
  5522.                         case 0x1db:
  5523.                         case 0x1dc:
  5524.                         case 0x1dd:
  5525.                         case 0x1de:
  5526.                         case 0x1df:
  5527.                             b &= 0xff;
  5528.                             break;
  5529.                         case 0x1e5:
  5530.                             ye = (ya.eflags >> 12) & 3;
  5531.                             if (ya.cpl > ye) vc(13);
  5532.                             ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5533.                             Hb++;;
  5534.                             Sb(0, ya.ld16_port(ia)); {
  5535.                                 if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  5536.                             };
  5537.                             break Ee;
  5538.                         case 0x1e7:
  5539.                             ye = (ya.eflags >> 12) & 3;
  5540.                             if (ya.cpl > ye) vc(13);
  5541.                             ia = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5542.                             Hb++;;
  5543.                             ya.st16_port(ia, za[0] & 0xffff); {
  5544.                                 if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  5545.                             };
  5546.                             break Ee;
  5547.                         case 0x1ed:
  5548.                             ye = (ya.eflags >> 12) & 3;
  5549.                             if (ya.cpl > ye) vc(13);
  5550.                             Sb(0, ya.ld16_port(za[2] & 0xffff)); {
  5551.                                 if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  5552.                             };
  5553.                             break Ee;
  5554.                         case 0x1ef:
  5555.                             ye = (ya.eflags >> 12) & 3;
  5556.                             if (ya.cpl > ye) vc(13);
  5557.                             ya.st16_port(za[2] & 0xffff, za[0] & 0xffff); {
  5558.                                 if (ya.hard_irq != 0 && (ya.eflags & 0x00000200)) break De;
  5559.                             };
  5560.                             break Ee;
  5561.                         case 0x100:
  5562.                         case 0x102:
  5563.                         case 0x104:
  5564.                         case 0x106:
  5565.                         case 0x107:
  5566.                         case 0x108:
  5567.                         case 0x10a:
  5568.                         case 0x10c:
  5569.                         case 0x10e:
  5570.                         case 0x110:
  5571.                         case 0x112:
  5572.                         case 0x114:
  5573.                         case 0x116:
  5574.                         case 0x117:
  5575.                         case 0x118:
  5576.                         case 0x11a:
  5577.                         case 0x11c:
  5578.                         case 0x11e:
  5579.                         case 0x11f:
  5580.                         case 0x120:
  5581.                         case 0x122:
  5582.                         case 0x124:
  5583.                         case 0x126:
  5584.                         case 0x127:
  5585.                         case 0x128:
  5586.                         case 0x12a:
  5587.                         case 0x12c:
  5588.                         case 0x12e:
  5589.                         case 0x12f:
  5590.                         case 0x130:
  5591.                         case 0x132:
  5592.                         case 0x134:
  5593.                         case 0x136:
  5594.                         case 0x137:
  5595.                         case 0x138:
  5596.                         case 0x13a:
  5597.                         case 0x13c:
  5598.                         case 0x13e:
  5599.                         case 0x13f:
  5600.                         case 0x150:
  5601.                         case 0x151:
  5602.                         case 0x152:
  5603.                         case 0x153:
  5604.                         case 0x154:
  5605.                         case 0x155:
  5606.                         case 0x156:
  5607.                         case 0x157:
  5608.                         case 0x158:
  5609.                         case 0x159:
  5610.                         case 0x15a:
  5611.                         case 0x15b:
  5612.                         case 0x15c:
  5613.                         case 0x15d:
  5614.                         case 0x15e:
  5615.                         case 0x15f:
  5616.                         case 0x160:
  5617.                         case 0x161:
  5618.                         case 0x162:
  5619.                         case 0x163:
  5620.                         case 0x167:
  5621.                         case 0x168:
  5622.                         case 0x16a:
  5623.                         case 0x16c:
  5624.                         case 0x16d:
  5625.                         case 0x16e:
  5626.                         case 0x16f:
  5627.                         case 0x170:
  5628.                         case 0x171:
  5629.                         case 0x172:
  5630.                         case 0x173:
  5631.                         case 0x174:
  5632.                         case 0x175:
  5633.                         case 0x176:
  5634.                         case 0x177:
  5635.                         case 0x178:
  5636.                         case 0x179:
  5637.                         case 0x17a:
  5638.                         case 0x17b:
  5639.                         case 0x17c:
  5640.                         case 0x17d:
  5641.                         case 0x17e:
  5642.                         case 0x17f:
  5643.                         case 0x180:
  5644.                         case 0x182:
  5645.                         case 0x184:
  5646.                         case 0x186:
  5647.                         case 0x188:
  5648.                         case 0x18a:
  5649.                         case 0x18c:
  5650.                         case 0x18d:
  5651.                         case 0x18e:
  5652.                         case 0x18f:
  5653.                         case 0x19a:
  5654.                         case 0x19b:
  5655.                         case 0x19c:
  5656.                         case 0x19d:
  5657.                         case 0x19e:
  5658.                         case 0x19f:
  5659.                         case 0x1a0:
  5660.                         case 0x1a2:
  5661.                         case 0x1a4:
  5662.                         case 0x1a6:
  5663.                         case 0x1a8:
  5664.                         case 0x1aa:
  5665.                         case 0x1ac:
  5666.                         case 0x1ae:
  5667.                         case 0x1b0:
  5668.                         case 0x1b1:
  5669.                         case 0x1b2:
  5670.                         case 0x1b3:
  5671.                         case 0x1b4:
  5672.                         case 0x1b5:
  5673.                         case 0x1b6:
  5674.                         case 0x1b7:
  5675.                         case 0x1c0:
  5676.                         case 0x1c2:
  5677.                         case 0x1c3:
  5678.                         case 0x1c4:
  5679.                         case 0x1c5:
  5680.                         case 0x1c6:
  5681.                         case 0x1c8:
  5682.                         case 0x1c9:
  5683.                         case 0x1ca:
  5684.                         case 0x1cb:
  5685.                         case 0x1cc:
  5686.                         case 0x1cd:
  5687.                         case 0x1ce:
  5688.                         case 0x1cf:
  5689.                         case 0x1d0:
  5690.                         case 0x1d2:
  5691.                         case 0x1d4:
  5692.                         case 0x1d5:
  5693.                         case 0x1d6:
  5694.                         case 0x1d7:
  5695.                         case 0x1e0:
  5696.                         case 0x1e1:
  5697.                         case 0x1e2:
  5698.                         case 0x1e3:
  5699.                         case 0x1e4:
  5700.                         case 0x1e6:
  5701.                         case 0x1e8:
  5702.                         case 0x1e9:
  5703.                         case 0x1ea:
  5704.                         case 0x1eb:
  5705.                         case 0x1ec:
  5706.                         case 0x1ee:
  5707.                         case 0x1f1:
  5708.                         case 0x1f4:
  5709.                         case 0x1f5:
  5710.                         case 0x1f6:
  5711.                         case 0x1f8:
  5712.                         case 0x1f9:
  5713.                         case 0x1fa:
  5714.                         case 0x1fb:
  5715.                         case 0x1fc:
  5716.                         case 0x1fd:
  5717.                         case 0x1fe:
  5718.                         default:
  5719.                             vc(6);
  5720.                         case 0x10f:
  5721.                             b = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5722.                             Hb++;;
  5723.                             b |= 0x0100;
  5724.                             switch (b) {
  5725.                             case 0x140:
  5726.                             case 0x141:
  5727.                             case 0x142:
  5728.                             case 0x143:
  5729.                             case 0x144:
  5730.                             case 0x145:
  5731.                             case 0x146:
  5732.                             case 0x147:
  5733.                             case 0x148:
  5734.                             case 0x149:
  5735.                             case 0x14a:
  5736.                             case 0x14b:
  5737.                             case 0x14c:
  5738.                             case 0x14d:
  5739.                             case 0x14e:
  5740.                             case 0x14f:
  5741.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5742.                                 Hb++;;
  5743.                                 if ((Ga >> 6) == 3) {
  5744.                                     ia = za[Ga & 7];
  5745.                                 } else {
  5746.                                     ha = Mb(Ga);
  5747.                                     ia = gb();
  5748.                                 }
  5749.                                 if (Xb(b & 0xf)) Sb((Ga >> 3) & 7, ia);
  5750.                                 break Ee;
  5751.                             case 0x1b6:
  5752.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5753.                                 Hb++;;
  5754.                                 Ia = (Ga >> 3) & 7;
  5755.                                 if ((Ga >> 6) == 3) {
  5756.                                     Ha = Ga & 7;
  5757.                                     ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  5758.                                 } else {
  5759.                                     ha = Mb(Ga);
  5760.                                     ia = eb();
  5761.                                 }
  5762.                                 Sb(Ia, ia);
  5763.                                 break Ee;
  5764.                             case 0x1be:
  5765.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5766.                                 Hb++;;
  5767.                                 Ia = (Ga >> 3) & 7;
  5768.                                 if ((Ga >> 6) == 3) {
  5769.                                     Ha = Ga & 7;
  5770.                                     ia = ((za[Ha & 3] >> ((Ha & 4) << 1)) & 0xff);
  5771.                                 } else {
  5772.                                     ha = Mb(Ga);
  5773.                                     ia = eb();
  5774.                                 }
  5775.                                 Sb(Ia, (ia << 24) >> 24);
  5776.                                 break Ee;
  5777.                             case 0x1af:
  5778.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5779.                                 Hb++;;
  5780.                                 Ia = (Ga >> 3) & 7;
  5781.                                 if ((Ga >> 6) == 3) {
  5782.                                     Ja = za[Ga & 7];
  5783.                                 } else {
  5784.                                     ha = Mb(Ga);
  5785.                                     Ja = gb();
  5786.                                 }
  5787.                                 Sb(Ia, Jc(za[Ia], Ja));
  5788.                                 break Ee;
  5789.                             case 0x1c1:
  5790.                                 Ga = ((Ua = Za[Hb >>> 12]) == -1) ? Jb(Hb) : Ra[Hb ^ Ua];
  5791.                                 Hb++;;
  5792.                                 Ia = (Ga >> 3) & 7;
  5793.                                 if ((Ga >> 6) == 3) {
  5794.                                     Ha = Ga & 7;
  5795.                                     ia = za[Ha];
  5796.                                     Ja = ac(0, ia, za[Ia]);
  5797.                                     Sb(Ia, ia);
  5798.                                     Sb(Ha, Ja);
  5799.                                 } else {
  5800.                                     ha = Mb(Ga);
  5801.                                     ia = mb();
  5802.                                     Ja = ac(0, ia, za[Ia]);
  5803.                                     sb(Ja);
  5804.                                     Sb(Ia, ia);
  5805.                                 }
  5806.                                 break Ee;
  5807.                             case 0x100:
  5808.                             case 0x101:
  5809.                             case 0x102:
  5810.                             case 0x103:
  5811.                             case 0x104:
  5812.                             case 0x105:
  5813.                             case 0x106:
  5814.                             case 0x107:
  5815.                             case 0x108:
  5816.                             case 0x109:
  5817.                             case 0x10a:
  5818.                             case 0x10b:
  5819.                             case 0x10c:
  5820.                             case 0x10d:
  5821.                             case 0x10e:
  5822.                             case 0x10f:
  5823.                             case 0x110:
  5824.                             case 0x111:
  5825.                             case 0x112:
  5826.                             case 0x113:
  5827.                             case 0x114:
  5828.                             case 0x115:
  5829.                             case 0x116:
  5830.                             case 0x117:
  5831.                             case 0x118:
  5832.                             case 0x119:
  5833.                             case 0x11a:
  5834.                             case 0x11b:
  5835.                             case 0x11c:
  5836.                             case 0x11d:
  5837.                             case 0x11e:
  5838.                             case 0x11f:
  5839.                             case 0x120:
  5840.                             case 0x121:
  5841.                             case 0x122:
  5842.                             case 0x123:
  5843.                             case 0x124:
  5844.                             case 0x125:
  5845.                             case 0x126:
  5846.                             case 0x127:
  5847.                             case 0x128:
  5848.                             case 0x129:
  5849.                             case 0x12a:
  5850.                             case 0x12b:
  5851.                             case 0x12c:
  5852.                             case 0x12d:
  5853.                             case 0x12e:
  5854.                             case 0x12f:
  5855.                             case 0x130:
  5856.                             case 0x131:
  5857.                             case 0x132:
  5858.                             case 0x133:
  5859.                             case 0x134:
  5860.                             case 0x135:
  5861.                             case 0x136:
  5862.                             case 0x137:
  5863.                             case 0x138:
  5864.                             case 0x139:
  5865.                             case 0x13a:
  5866.                             case 0x13b:
  5867.                             case 0x13c:
  5868.                             case 0x13d:
  5869.                             case 0x13e:
  5870.                             case 0x13f:
  5871.                             case 0x150:
  5872.                             case 0x151:
  5873.                             case 0x152:
  5874.                             case 0x153:
  5875.                             case 0x154:
  5876.                             case 0x155:
  5877.                             case 0x156:
  5878.                             case 0x157:
  5879.                             case 0x158:
  5880.                             case 0x159:
  5881.                             case 0x15a:
  5882.                             case 0x15b:
  5883.                             case 0x15c:
  5884.                             case 0x15d:
  5885.                             case 0x15e:
  5886.                             case 0x15f:
  5887.                             case 0x160:
  5888.                             case 0x161:
  5889.                             case 0x162:
  5890.                             case 0x163:
  5891.                             case 0x164:
  5892.                             case 0x165:
  5893.                             case 0x166:
  5894.                             case 0x167:
  5895.                             case 0x168:
  5896.                             case 0x169:
  5897.                             case 0x16a:
  5898.                             case 0x16b:
  5899.                             case 0x16c:
  5900.                             case 0x16d:
  5901.                             case 0x16e:
  5902.                             case 0x16f:
  5903.                             case 0x170:
  5904.                             case 0x171:
  5905.                             case 0x172:
  5906.                             case 0x173:
  5907.                             case 0x174:
  5908.                             case 0x175:
  5909.                             case 0x176:
  5910.                             case 0x177:
  5911.                             case 0x178:
  5912.                             case 0x179:
  5913.                             case 0x17a:
  5914.                             case 0x17b:
  5915.                             case 0x17c:
  5916.                             case 0x17d:
  5917.                             case 0x17e:
  5918.                             case 0x17f:
  5919.                             case 0x180:
  5920.                             case 0x181:
  5921.                             case 0x182:
  5922.                             case 0x183:
  5923.                             case 0x184:
  5924.                             case 0x185:
  5925.                             case 0x186:
  5926.                             case 0x187:
  5927.                             case 0x188:
  5928.                             case 0x189:
  5929.                             case 0x18a:
  5930.                             case 0x18b:
  5931.                             case 0x18c:
  5932.                             case 0x18d:
  5933.                             case 0x18e:
  5934.                             case 0x18f:
  5935.                             case 0x190:
  5936.                             case 0x191:
  5937.                             case 0x192:
  5938.                             case 0x193:
  5939.                             case 0x194:
  5940.                             case 0x195:
  5941.                             case 0x196:
  5942.                             case 0x197:
  5943.                             case 0x198:
  5944.                             case 0x199:
  5945.                             case 0x19a:
  5946.                             case 0x19b:
  5947.                             case 0x19c:
  5948.                             case 0x19d:
  5949.                             case 0x19e:
  5950.                             case 0x19f:
  5951.                             case 0x1a0:
  5952.                             case 0x1a1:
  5953.                             case 0x1a2:
  5954.                             case 0x1a3:
  5955.                             case 0x1a4:
  5956.                             case 0x1a5:
  5957.                             case 0x1a6:
  5958.                             case 0x1a7:
  5959.                             case 0x1a8:
  5960.                             case 0x1a9:
  5961.                             case 0x1aa:
  5962.                             case 0x1ab:
  5963.                             case 0x1ac:
  5964.                             case 0x1ad:
  5965.                             case 0x1ae:
  5966.                             case 0x1b0:
  5967.                             case 0x1b1:
  5968.                             case 0x1b2:
  5969.                             case 0x1b3:
  5970.                             case 0x1b4:
  5971.                             case 0x1b5:
  5972.                             case 0x1b7:
  5973.                             case 0x1b8:
  5974.                             case 0x1b9:
  5975.                             case 0x1ba:
  5976.                             case 0x1bb:
  5977.                             case 0x1bc:
  5978.                             case 0x1bd:
  5979.                             case 0x1bf:
  5980.                             case 0x1c0:
  5981.                             default:
  5982.                                 vc(6);
  5983.                             }
  5984.                             break;
  5985.                         }
  5986.                     }
  5987.                 }
  5988.             }
  5989.             while (--Ma);
  5990.         } catch (Ge) {
  5991.             var He;
  5992.             He = 0;
  5993.             for (Pa = 0;; Pa++) {
  5994.                 try {
  5995.                     if (Ge.hasOwnProperty("intno")) {
  5996.                         Od(Ge.intno, 0, Ge.error_code, 0, 0);
  5997.                     } else {
  5998.                         He = -1;
  5999.                     }
  6000.                     break;
  6001.                 } catch (Ie) {
  6002.                     Ge = Ie;
  6003.                 }
  6004.             }
  6005.             if (!He) continue;
  6006.             else throw Ge;
  6007.         }
  6008.         break;
  6009.     }
  6010.     this.cycle_count += (xa - Ma);
  6011.     this.eip = Hb;
  6012.     this.cc_src = Aa;
  6013.     this.cc_dst = Ba;
  6014.     this.cc_op = Ca;
  6015.     this.cc_op2 = Da;
  6016.     this.cc_dst2 = Ea;
  6017.     return Na;
  6018. };
  6019. ea.prototype.load_binary = function Je(Ke, ha) {
  6020.     var Le, Me, fd, i, Ne;
  6021.     Le = new XMLHttpRequest();
  6022.     Le.open('GET', Ke, false);
  6023.     if ('responseType' in Le) {
  6024.         Le.responseType = 'arraybuffer';
  6025.     } else {
  6026.         Le.overrideMimeType('text/plain; charset=x-user-defined');
  6027.     }
  6028.     Le.send(null);
  6029.     if (Le.status != 200 && Le.status != 0) {
  6030.         throw "Error while loading " + Ke;
  6031.     }
  6032.     if (Le.mozResponseArrayBuffer) {
  6033.         Me = Le.mozResponseArrayBuffer;
  6034.     } else if ('responseType' in Le) {
  6035.         Me = Le.response;
  6036.     } else {
  6037.         Me = Le.responseText;
  6038.     }
  6039.     fd = Me.byteLength;
  6040.     Ne = new Uint8Array(Me, 0, fd);
  6041.     for (i = 0; i < fd; i++) {
  6042.         this.st8_phys(ha + i, Ne[i]);
  6043.     }
  6044.     return fd;
  6045. };
  6046.  
  6047. function Oe(a) {
  6048.     return ((a / 10) << 4) | (a % 10);
  6049. }
  6050. function Pe(Qe) {
  6051.     var Re, d;
  6052.     Re = new Uint8Array(128);
  6053.     this.cmos_data = Re;
  6054.     this.cmos_index = 0;
  6055.     d = new Date();
  6056.     Re[0] = Oe(d.getUTCSeconds());
  6057.     Re[2] = Oe(d.getUTCMinutes());
  6058.     Re[4] = Oe(d.getUTCHours());
  6059.     Re[6] = Oe(d.getUTCDay());
  6060.     Re[7] = Oe(d.getUTCDate());
  6061.     Re[8] = Oe(d.getUTCMonth() + 1);
  6062.     Re[9] = Oe(d.getUTCFullYear() % 100);
  6063.     Re[10] = 0x26;
  6064.     Re[11] = 0x02;
  6065.     Re[12] = 0x00;
  6066.     Re[13] = 0x80;
  6067.     Re[0x14] = 0x02;
  6068.     Qe.register_ioport_write(0x70, 2, this.ioport_write.bind(this));
  6069.     Qe.register_ioport_read(0x70, 2, this.ioport_read.bind(this));
  6070. }
  6071. Pe.prototype.ioport_write = function (ha, Me) {
  6072.     if (ha == 0x70) {
  6073.         this.cmos_index = Me & 0x7f;
  6074.     }
  6075. };
  6076. Pe.prototype.ioport_read = function (ha) {
  6077.     var He;
  6078.     if (ha == 0x70) {
  6079.         return 0xff;
  6080.     } else {
  6081.         He = this.cmos_data[this.cmos_index];
  6082.         if (this.cmos_index == 10) this.cmos_data[10] ^= 0x80;
  6083.         else if (this.cmos_index == 12) this.cmos_data[12] = 0x00;
  6084.         return He;
  6085.     }
  6086. };
  6087.  
  6088. function Se(Qe, Te) {
  6089.     Qe.register_ioport_write(Te, 2, this.ioport_write.bind(this));
  6090.     Qe.register_ioport_read(Te, 2, this.ioport_read.bind(this));
  6091.     this.reset();
  6092. }
  6093. Se.prototype.reset = function () {
  6094.     this.last_irr = 0;
  6095.     this.irr = 0;
  6096.     this.imr = 0;
  6097.     this.isr = 0;
  6098.     this.priority_add = 0;
  6099.     this.irq_base = 0;
  6100.     this.read_reg_select = 0;
  6101.     this.special_mask = 0;
  6102.     this.init_state = 0;
  6103.     this.auto_eoi = 0;
  6104.     this.rotate_on_autoeoi = 0;
  6105.     this.init4 = 0;
  6106.     this.elcr = 0;
  6107.     this.elcr_mask = 0;
  6108. };
  6109. Se.prototype.set_irq1 = function (Ue, Ve) {
  6110.     var We;
  6111.     We = 1 << Ue;
  6112.     if (Ve) {
  6113.         if ((this.last_irr & We) == 0) this.irr |= We;
  6114.         this.last_irr |= We;
  6115.     } else {
  6116.         this.last_irr &= ~We;
  6117.     }
  6118. };
  6119. Se.prototype.get_priority = function (We) {
  6120.     var Xe;
  6121.     if (We == 0) return -1;
  6122.     Xe = 7;
  6123.     while ((We & (1 << ((Xe + this.priority_add) & 7))) == 0) Xe--;
  6124.     return Xe;
  6125. };
  6126. Se.prototype.get_irq = function () {
  6127.     var We, Ye, Xe;
  6128.     We = this.irr & ~this.imr;
  6129.     Xe = this.get_priority(We);
  6130.     if (Xe < 0) return -1;
  6131.     Ye = this.get_priority(this.isr);
  6132.     if (Xe > Ye) {
  6133.         return Xe;
  6134.     } else {
  6135.         return -1;
  6136.     }
  6137. };
  6138. Se.prototype.intack = function (Ue) {
  6139.     if (this.auto_eoi) {
  6140.         if (this.rotate_on_auto_eoi) this.priority_add = (Ue + 1) & 7;
  6141.     } else {
  6142.         this.isr |= (1 << Ue);
  6143.     }
  6144.     if (!(this.elcr & (1 << Ue))) this.irr &= ~ (1 << Ue);
  6145. };
  6146. Se.prototype.ioport_write = function (ha, ia) {
  6147.     var Xe;
  6148.     ha &= 1;
  6149.     if (ha == 0) {
  6150.         if (ia & 0x10) {
  6151.             this.reset();
  6152.             this.init_state = 1;
  6153.             this.init4 = ia & 1;
  6154.             if (ia & 0x02) throw "single mode not supported";
  6155.             if (ia & 0x08) throw "level sensitive irq not supported";
  6156.         } else if (ia & 0x08) {
  6157.             if (ia & 0x02) this.read_reg_select = ia & 1;
  6158.             if (ia & 0x40) this.special_mask = (ia >> 5) & 1;
  6159.         } else {
  6160.             switch (ia) {
  6161.             case 0x00:
  6162.             case 0x80:
  6163.                 this.rotate_on_autoeoi = ia >> 7;
  6164.                 break;
  6165.             case 0x20:
  6166.             case 0xa0:
  6167.                 Xe = this.get_priority(this.isr);
  6168.                 if (Xe >= 0) {
  6169.                     this.isr &= ~ (1 << ((Xe + this.priority_add) & 7));
  6170.                 }
  6171.                 if (ia == 0xa0) this.priority_add = (this.priority_add + 1) & 7;
  6172.                 break;
  6173.             case 0x60:
  6174.             case 0x61:
  6175.             case 0x62:
  6176.             case 0x63:
  6177.             case 0x64:
  6178.             case 0x65:
  6179.             case 0x66:
  6180.             case 0x67:
  6181.                 Xe = ia & 7;
  6182.                 this.isr &= ~ (1 << Xe);
  6183.                 break;
  6184.             case 0xc0:
  6185.             case 0xc1:
  6186.             case 0xc2:
  6187.             case 0xc3:
  6188.             case 0xc4:
  6189.             case 0xc5:
  6190.             case 0xc6:
  6191.             case 0xc7:
  6192.                 this.priority_add = (ia + 1) & 7;
  6193.                 break;
  6194.             case 0xe0:
  6195.             case 0xe1:
  6196.             case 0xe2:
  6197.             case 0xe3:
  6198.             case 0xe4:
  6199.             case 0xe5:
  6200.             case 0xe6:
  6201.             case 0xe7:
  6202.                 Xe = ia & 7;
  6203.                 this.isr &= ~ (1 << Xe);
  6204.                 this.priority_add = (Xe + 1) & 7;
  6205.                 break;
  6206.             }
  6207.         }
  6208.     } else {
  6209.         switch (this.init_state) {
  6210.         case 0:
  6211.             this.imr = ia;
  6212.             this.update_irq();
  6213.             break;
  6214.         case 1:
  6215.             this.irq_base = ia & 0xf8;
  6216.             this.init_state = 2;
  6217.             break;
  6218.         case 2:
  6219.             if (this.init4) {
  6220.                 this.init_state = 3;
  6221.             } else {
  6222.                 this.init_state = 0;
  6223.             }
  6224.             break;
  6225.         case 3:
  6226.             this.auto_eoi = (ia >> 1) & 1;
  6227.             this.init_state = 0;
  6228.             break;
  6229.         }
  6230.     }
  6231. };
  6232. Se.prototype.ioport_read = function (Ze) {
  6233.     var ha, He;
  6234.     ha = Ze & 1;
  6235.     if (ha == 0) {
  6236.         if (this.read_reg_select) He = this.isr;
  6237.         else He = this.irr;
  6238.     } else {
  6239.         He = this.imr;
  6240.     }
  6241.     return He;
  6242. };
  6243.  
  6244. function af(Qe, bf, Ze, cf) {
  6245.     this.pics = new Array();
  6246.     this.pics[0] = new Se(Qe, bf);
  6247.     this.pics[1] = new Se(Qe, Ze);
  6248.     this.pics[0].elcr_mask = 0xf8;
  6249.     this.pics[1].elcr_mask = 0xde;
  6250.     this.irq_requested = 0;
  6251.     this.cpu_set_irq = cf;
  6252.     this.pics[0].update_irq = this.update_irq.bind(this);
  6253.     this.pics[1].update_irq = this.update_irq.bind(this);
  6254. }
  6255. af.prototype.update_irq = function () {
  6256.     var df, Ue;
  6257.     df = this.pics[1].get_irq();
  6258.     if (df >= 0) {
  6259.         this.pics[0].set_irq1(2, 1);
  6260.         this.pics[0].set_irq1(2, 0);
  6261.     }
  6262.     Ue = this.pics[0].get_irq();
  6263.     if (Ue >= 0) {
  6264.         this.cpu_set_irq(1);
  6265.     } else {
  6266.         this.cpu_set_irq(0);
  6267.     }
  6268. };
  6269. af.prototype.set_irq = function (Ue, Ve) {
  6270.     this.pics[Ue >> 3].set_irq1(Ue & 7, Ve);
  6271.     this.update_irq();
  6272. };
  6273. af.prototype.get_hard_intno = function () {
  6274.     var Ue, df, intno;
  6275.     Ue = this.pics[0].get_irq();
  6276.     if (Ue >= 0) {
  6277.         this.pics[0].intack(Ue);
  6278.         if (Ue == 2) {
  6279.             df = this.pics[1].get_irq();
  6280.             if (df >= 0) {
  6281.                 this.pics[1].intack(df);
  6282.             } else {
  6283.                 df = 7;
  6284.             }
  6285.             intno = this.pics[1].irq_base + df;
  6286.             Ue = df + 8;
  6287.         } else {
  6288.             intno = this.pics[0].irq_base + Ue;
  6289.         }
  6290.     } else {
  6291.         Ue = 7;
  6292.         intno = this.pics[0].irq_base + Ue;
  6293.     }
  6294.     this.update_irq();
  6295.     return intno;
  6296. };
  6297.  
  6298. function ef() {
  6299.     return ya.cycle_count;
  6300. }
  6301. function ff(Qe, gf) {
  6302.     var s, i;
  6303.     this.pit_channels = new Array();
  6304.     for (i = 0; i < 3; i++) {
  6305.         s = new hf();
  6306.         this.pit_channels[i] = s;
  6307.         s.mode = 3;
  6308.         s.gate = (i != 2) >> 0;
  6309.         s.pit_load_count(0);
  6310.     }
  6311.     this.speaker_data_on = 0;
  6312.     this.set_irq = gf;
  6313.     Qe.register_ioport_write(0x40, 4, this.ioport_write.bind(this));
  6314.     Qe.register_ioport_read(0x40, 3, this.ioport_read.bind(this));
  6315.     Qe.register_ioport_read(0x61, 1, this.speaker_ioport_read.bind(this));
  6316.     Qe.register_ioport_write(0x61, 1, this.speaker_ioport_write.bind(this));
  6317. }
  6318. function hf() {
  6319.     this.count = 0;
  6320.     this.latched_count = 0;
  6321.     this.rw_state = 0;
  6322.     this.mode = 0;
  6323.     this.bcd = 0;
  6324.     this.gate = 0;
  6325.     this.count_load_time = 0;
  6326.     this.pit_time_unit = 1193182 / 2000000;
  6327. }
  6328. hf.prototype.get_time = function () {
  6329.     return Math.floor(ef() * this.pit_time_unit);
  6330. };
  6331. hf.prototype.pit_get_count = function () {
  6332.     var d, jf;
  6333.     d = this.get_time() - this.count_load_time;
  6334.     switch (this.mode) {
  6335.     case 0:
  6336.     case 1:
  6337.     case 4:
  6338.     case 5:
  6339.         jf = (this.count - d) & 0xffff;
  6340.         break;
  6341.     default:
  6342.         jf = this.count - (d % this.count);
  6343.         break;
  6344.     }
  6345.     return jf;
  6346. };
  6347. hf.prototype.pit_get_out = function () {
  6348.     var d, kf;
  6349.     d = this.get_time() - this.count_load_time;
  6350.     switch (this.mode) {
  6351.     default:
  6352.     case 0:
  6353.         kf = (d >= this.count) >> 0;
  6354.         break;
  6355.     case 1:
  6356.         kf = (d < this.count) >> 0;
  6357.         break;
  6358.     case 2:
  6359.         if ((d % this.count) == 0 && d != 0) kf = 1;
  6360.         else kf = 0;
  6361.         break;
  6362.     case 3:
  6363.         kf = ((d % this.count) < (this.count >> 1)) >> 0;
  6364.         break;
  6365.     case 4:
  6366.     case 5:
  6367.         kf = (d == this.count) >> 0;
  6368.         break;
  6369.     }
  6370.     return kf;
  6371. };
  6372. hf.prototype.get_next_transition_time = function () {
  6373.     var d, lf, base, mf;
  6374.     d = this.get_time() - this.count_load_time;
  6375.     switch (this.mode) {
  6376.     default:
  6377.     case 0:
  6378.     case 1:
  6379.         if (d < this.count) lf = this.count;
  6380.         else return -1;
  6381.         break;
  6382.     case 2:
  6383.         base = (d / this.count) * this.count;
  6384.         if ((d - base) == 0 && d != 0) lf = base + this.count;
  6385.         else lf = base + this.count + 1;
  6386.         break;
  6387.     case 3:
  6388.         base = (d / this.count) * this.count;
  6389.         mf = ((this.count + 1) >> 1);
  6390.         if ((d - base) < mf) lf = base + mf;
  6391.         else lf = base + this.count;
  6392.         break;
  6393.     case 4:
  6394.     case 5:
  6395.         if (d < this.count) lf = this.count;
  6396.         else if (d == this.count) lf = this.count + 1;
  6397.         else return -1;
  6398.         break;
  6399.     }
  6400.     lf = this.count_load_time + lf;
  6401.     return lf;
  6402. };
  6403. hf.prototype.pit_load_count = function (ia) {
  6404.     if (ia == 0) ia = 0x10000;
  6405.     this.count_load_time = this.get_time();
  6406.     this.count = ia;
  6407. };
  6408. ff.prototype.ioport_write = function (ha, ia) {
  6409.     var nf, of, s;
  6410.     ha &= 3;
  6411.     if (ha == 3) {
  6412.         nf = ia >> 6;
  6413.         if (nf == 3) return;
  6414.         s = this.pit_channels[nf];
  6415.         of = (ia >> 4) & 3;
  6416.         switch (of) {
  6417.         case 0:
  6418.             s.latched_count = s.pit_get_count();
  6419.             s.rw_state = 4;
  6420.             break;
  6421.         default:
  6422.             s.mode = (ia >> 1) & 7;
  6423.             s.bcd = ia & 1;
  6424.             s.rw_state = of - 1 + 0;
  6425.             break;
  6426.         }
  6427.     } else {
  6428.         s = this.pit_channels[ha];
  6429.         switch (s.rw_state) {
  6430.         case 0:
  6431.             s.pit_load_count(ia);
  6432.             break;
  6433.         case 1:
  6434.             s.pit_load_count(ia << 8);
  6435.             break;
  6436.         case 2:
  6437.         case 3:
  6438.             if (s.rw_state & 1) {
  6439.                 s.pit_load_count((s.latched_count & 0xff) | (ia << 8));
  6440.             } else {
  6441.                 s.latched_count = ia;
  6442.             }
  6443.             s.rw_state ^= 1;
  6444.             break;
  6445.         }
  6446.     }
  6447. };
  6448. ff.prototype.ioport_read = function (ha) {
  6449.     var He, oa, s;
  6450.     ha &= 3;
  6451.     s = this.pit_channels[ha];
  6452.     switch (s.rw_state) {
  6453.     case 0:
  6454.     case 1:
  6455.     case 2:
  6456.     case 3:
  6457.         oa = s.pit_get_count();
  6458.         if (s.rw_state & 1) He = (oa >> 8) & 0xff;
  6459.         else He = oa & 0xff;
  6460.         if (s.rw_state & 2) s.rw_state ^= 1;
  6461.         break;
  6462.     default:
  6463.     case 4:
  6464.     case 5:
  6465.         if (s.rw_state & 1) He = s.latched_count >> 8;
  6466.         else He = s.latched_count & 0xff;
  6467.         s.rw_state ^= 1;
  6468.         break;
  6469.     }
  6470.     return He;
  6471. };
  6472. ff.prototype.speaker_ioport_write = function (ha, ia) {
  6473.     this.speaker_data_on = (ia >> 1) & 1;
  6474.     this.pit_channels[2].gate = ia & 1;
  6475. };
  6476. ff.prototype.speaker_ioport_read = function (ha) {
  6477.     var kf, s, ia;
  6478.     s = this.pit_channels[2];
  6479.     kf = s.pit_get_out();
  6480.     ia = (this.speaker_data_on << 1) | s.gate | (kf << 5);
  6481.     return ia;
  6482. };
  6483. ff.prototype.update_irq = function () {
  6484.     this.set_irq(1);
  6485.     this.set_irq(0);
  6486. };
  6487.  
  6488. function pf(Qe, ha, qf) {
  6489.     this.divider = 0;
  6490.     this.rbr = 0;
  6491.     this.ier = 0;
  6492.     this.iir = 0x01;
  6493.     this.lcr = 0;
  6494.     this.mcr;
  6495.     this.lsr = 0x40 | 0x20;
  6496.     this.msr = 0;
  6497.     this.scr = 0;
  6498.     this.set_irq_func = qf;
  6499.     this.receive_fifo = "";
  6500.     Qe.register_ioport_write(0x3f8, 8, this.ioport_write.bind(this));
  6501.     Qe.register_ioport_read(0x3f8, 8, this.ioport_read.bind(this));
  6502. }
  6503. pf.prototype.update_irq = function () {
  6504.     if ((this.lsr & 0x01) && (this.ier & 0x01)) {
  6505.         this.iir = 0x04;
  6506.     } else if ((this.lsr & 0x20) && (this.ier & 0x02)) {
  6507.         this.iir = 0x02;
  6508.     } else {
  6509.         this.iir = 0x01;
  6510.     }
  6511.     if (this.iir != 0x01) {
  6512.         this.set_irq_func(1);
  6513.     } else {
  6514.         this.set_irq_func(0);
  6515.     }
  6516. };
  6517. pf.prototype.ioport_write = function (ha, ia) {
  6518.     ha &= 7;
  6519.     switch (ha) {
  6520.     default:
  6521.     case 0:
  6522.         if (this.lcr & 0x80) {
  6523.             this.divider = (this.divider & 0xff00) | ia;
  6524.         } else {
  6525.             this.lsr &= ~0x20;
  6526.             this.update_irq();
  6527.             aa.write(String.fromCharCode(ia));
  6528.             this.lsr |= 0x20;
  6529.             this.lsr |= 0x40;
  6530.             this.update_irq();
  6531.         }
  6532.         break;
  6533.     case 1:
  6534.         if (this.lcr & 0x80) {
  6535.             this.divider = (this.divider & 0x00ff) | (ia << 8);
  6536.         } else {
  6537.             this.ier = ia;
  6538.             this.update_irq();
  6539.         }
  6540.         break;
  6541.     case 2:
  6542.         break;
  6543.     case 3:
  6544.         this.lcr = ia;
  6545.         break;
  6546.     case 4:
  6547.         this.mcr = ia;
  6548.         break;
  6549.     case 5:
  6550.         break;
  6551.     case 6:
  6552.         this.msr = ia;
  6553.         break;
  6554.     case 7:
  6555.         this.scr = ia;
  6556.         break;
  6557.     }
  6558. };
  6559. pf.prototype.ioport_read = function (ha) {
  6560.     var He;
  6561.     ha &= 7;
  6562.     switch (ha) {
  6563.     default:
  6564.     case 0:
  6565.         if (this.lcr & 0x80) {
  6566.             He = this.divider & 0xff;
  6567.         } else {
  6568.             He = this.rbr;
  6569.             this.lsr &= ~ (0x01 | 0x10);
  6570.             this.update_irq();
  6571.             this.send_char_from_fifo();
  6572.         }
  6573.         break;
  6574.     case 1:
  6575.         if (this.lcr & 0x80) {
  6576.             He = (this.divider >> 8) & 0xff;
  6577.         } else {
  6578.             He = this.ier;
  6579.         }
  6580.         break;
  6581.     case 2:
  6582.         He = this.iir;
  6583.         break;
  6584.     case 3:
  6585.         He = this.lcr;
  6586.         break;
  6587.     case 4:
  6588.         He = this.mcr;
  6589.         break;
  6590.     case 5:
  6591.         He = this.lsr;
  6592.         break;
  6593.     case 6:
  6594.         He = this.msr;
  6595.         break;
  6596.     case 7:
  6597.         He = this.scr;
  6598.         break;
  6599.     }
  6600.     return He;
  6601. };
  6602. pf.prototype.send_break = function () {
  6603.     this.rbr = 0;
  6604.     this.lsr |= 0x10 | 0x01;
  6605.     this.update_irq();
  6606. };
  6607. pf.prototype.send_char = function (rf) {
  6608.     this.rbr = rf;
  6609.     this.lsr |= 0x01;
  6610.     this.update_irq();
  6611. };
  6612. pf.prototype.send_char_from_fifo = function () {
  6613.     var sf;
  6614.     sf = this.receive_fifo;
  6615.     if (sf != "" && !(this.lsr & 0x01)) {
  6616.         this.send_char(sf.charCodeAt(0));
  6617.         this.receive_fifo = sf.substr(1, sf.length - 1);
  6618.     }
  6619. };
  6620. pf.prototype.send_chars = function (va) {
  6621.     this.receive_fifo += va;
  6622.     this.send_char_from_fifo();
  6623. };
  6624.  
  6625. function tf(Qe, uf) {
  6626.     Qe.register_ioport_read(0x64, 1, this.read_status.bind(this));
  6627.     Qe.register_ioport_write(0x64, 1, this.write_command.bind(this));
  6628.     this.reset_request = uf;
  6629. }
  6630. tf.prototype.read_status = function (ha) {
  6631.     return 0;
  6632. };
  6633. tf.prototype.write_command = function (ha, ia) {
  6634.     switch (ia) {
  6635.     case 0xfe:
  6636.         this.reset_request();
  6637.         break;
  6638.     default:
  6639.         break;
  6640.     }
  6641. };
  6642.  
  6643. function cf(Ve) {
  6644.     this.hard_irq = Ve;
  6645. }
  6646. function vf() {
  6647.     this.init_ioports();
  6648.     this.register_ioport_write(0x80, 1, this.ioport80_write);
  6649.     this.pic = new af(this, 0x20, 0xa0, cf.bind(ya));
  6650.     this.pit = new ff(this, this.pic.set_irq.bind(this.pic, 0));
  6651.     this.cmos = new Pe(this);
  6652.     this.serial = new pf(this, 0x3f8, this.pic.set_irq.bind(this.pic, 4));
  6653.     this.kbd = new tf(this, this.reset.bind(this));
  6654.     this.reset_request = 0;
  6655. }
  6656. vf.prototype.init_ioports = function () {
  6657.     var i;
  6658.     this.ioport_readb_table = new Array();
  6659.     this.ioport_writeb_table = new Array();
  6660.     for (i = 0; i < 1024; i++) {
  6661.         this.ioport_readb_table[i] = this.default_ioport_readb;
  6662.         this.ioport_writeb_table[i] = this.default_ioport_writeb;
  6663.     }
  6664. };
  6665. vf.prototype.default_ioport_readb = function (Te) {
  6666.     var ia;
  6667.     ia = 0xff;
  6668.     return ia;
  6669. };
  6670. vf.prototype.default_ioport_writeb = function (Te, ia) {};
  6671. vf.prototype.ld8_port = function (Te) {
  6672.     var ia;
  6673.     ia = this.ioport_readb_table[Te & (1024 - 1)](Te);
  6674.     return ia;
  6675. };
  6676. vf.prototype.ld16_port = function (Te) {
  6677.     var ia;
  6678.     ia = this.ld8_port(Te);
  6679.     ia = this.ld8_port((Te + 1) & 0xffff) << 8;
  6680.     return ia;
  6681. };
  6682. vf.prototype.ld32_port = function (Te) {
  6683.     var ia;
  6684.     ia = -1;
  6685.     return ia;
  6686. };
  6687. vf.prototype.st8_port = function (Te, ia) {
  6688.     this.ioport_writeb_table[Te & (1024 - 1)](Te, ia);
  6689. };
  6690. vf.prototype.st16_port = function (Te, ia) {
  6691.     this.st8_port(Te, ia & 0xff);
  6692.     this.st8_port((Te + 1) & 0xffff, (ia >> 8) & 0xff);
  6693. };
  6694. vf.prototype.st32_port = function (Te, ia) {};
  6695. vf.prototype.register_ioport_read = function (start, fd, wf) {
  6696.     var i;
  6697.     for (i = start; i < start + fd; i++) {
  6698.         this.ioport_readb_table[i] = wf;
  6699.     }
  6700. };
  6701. vf.prototype.register_ioport_write = function (start, fd, wf) {
  6702.     var i;
  6703.     for (i = start; i < start + fd; i++) {
  6704.         this.ioport_writeb_table[i] = wf;
  6705.     }
  6706. };
  6707. vf.prototype.ioport80_write = function (ha, Me) {};
  6708. vf.prototype.reset = function () {
  6709.     this.request_request = 1;
  6710. };
  6711. var ya, xf, Qe;
  6712.  
  6713. function yf() {
  6714.     var Na, zf, Af, Bf, Cf;
  6715.     Af = ya.cycle_count + 100000;
  6716.     Bf = false;
  6717.     Cf = false;
  6718.     Df: while (ya.cycle_count < Af) {
  6719.         Qe.pit.update_irq();
  6720.         Na = ya.exec(Af - ya.cycle_count);
  6721.         if (Na == 256) {
  6722.             if (Qe.reset_request) {
  6723.                 Bf = true;
  6724.                 break;
  6725.             }
  6726.         } else if (Na == 257) {
  6727.             Cf = true;
  6728.             break;
  6729.         } else {
  6730.             Bf = true;
  6731.             break;
  6732.         }
  6733.     }
  6734.     if (!Bf) {
  6735.         if (Cf) {
  6736.             setTimeout(yf, 10);
  6737.         } else {
  6738.             setTimeout(yf, 0);
  6739.         }
  6740.     }
  6741. }
  6742. function Ef() {
  6743.     aa = new Term(80, 30, Ff);
  6744.     aa.open();
  6745. }
  6746. function Ff(va) {
  6747.     Qe.serial.send_chars(va);
  6748. }
  6749. function Gf() {
  6750.     return (window.Uint8Array && window.Uint16Array && window.Int32Array && window.ArrayBuffer);
  6751. }
  6752. function start() {
  6753.     var Hf, i, start, If, Jf;
  6754.     if (!Gf()) {
  6755.         aa.writeln("");
  6756.         aa.writeln("ERROR: your browser is too old to run JS/Linux.\n");
  6757.         aa.writeln("You should use a recent browser such as Firefox 4.x or Google Chrome.");
  6758.         return;
  6759.     }
  6760.     ya = new ea();
  6761.     Qe = new vf();
  6762.     If = 32 * 1024 * 1024;
  6763.     ya.phys_mem_resize(If);
  6764.     ya.load_binary("vmlinux26.bin", 0x00100000);
  6765.     Jf = ya.load_binary("root.bin", 0x00400000);
  6766.     start = 0x10000;
  6767.     ya.load_binary("linuxstart.bin", start);
  6768.     ya.eip = start;
  6769.     ya.regs[0] = If;
  6770.     ya.regs[3] = Jf;
  6771.     ya.cycle_count = 0;
  6772.     ya.ld8_port = Qe.ld8_port.bind(Qe);
  6773.     ya.ld16_port = Qe.ld16_port.bind(Qe);
  6774.     ya.ld32_port = Qe.ld32_port.bind(Qe);
  6775.     ya.st8_port = Qe.st8_port.bind(Qe);
  6776.     ya.st16_port = Qe.st16_port.bind(Qe);
  6777.     ya.st32_port = Qe.st32_port.bind(Qe);
  6778.     ya.get_hard_intno = Qe.pic.get_hard_intno.bind(Qe.pic);
  6779.     xf = Date.now();
  6780.     setTimeout(yf, 10);
  6781. }
  6782. Ef();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement