Ver Fonte

calc: REAL Ln, Exp, Sin, Cos, Arctan and Int (ladder 43902)

Exp scales its argument by 256, evaluates the Taylor series with a 12-term
polynomial and squares eight times.  Ln extracts the binary exponent, reduces
the mantissa to [1,2), and uses the atanh series.  Sin/Cos use the TPSRC
fltsin polynomial after a 2*pi reduction; Arctan uses the TPSRC atn table plus
the pi/4 and reciprocal reductions.  Int(REAL) is wired to real_int for CALC's
fact(int(f)).

The runtime is now 13,955 bytes.  The rt_exec scaffold moved to HDR=0x4000 /
data 0x5000; the compiler code ceiling is 0x7F00 so the large CALC image can
reach the next source frontier.  The fixed parser bug for negative REAL
constants (R := -1 became +65535 through W16) is also fixed.

Fixtures t105_lnexp and t106_trig execute under qemu and Exec86.  CALC now
stops at ERR 41 43902, the forward definition of Expression whose parameter
list is commented out while the body still uses ExpressionCh.  That is a
source/forward-declaration issue, not a missing REAL builtin.

Verified: compile matrix 107/107, ladder 1/1, 93 .COM executions under both
oracles, rt_exec 276/276, nonvacuity 121/121, run_all ALL PASS.
Eric Streit há 4 dias atrás
pai
commit
dcfbf8c3a3

+ 24 - 11
CALC-COMPILE.md

@@ -97,7 +97,7 @@ Current rung (measured today, normalised position):
 
 | position | blocker |
 |---|---|
-| **40930** | `exp(38) * ln(1)` in `Factor` — the real transcendental functions (`ERR 41`) |
+| **43902** | the commented-out parameter list on the forward definition of `Expression` (`ERR 41`) |
 
 Rungs behind it (now passed):
 
@@ -152,7 +152,10 @@ Rungs ahead:
 | 33778 | local REAL variable (`F : Real`) - DONE |
 | 35135 | `Copy` string builtin - DONE |
 | 40333 | mixed REAL/integer comparison (`f > 0`) - DONE |
-| 40930 | `exp`/`ln` (and then sin/cos/arctan) |
+| 40930 | `Exp`/`Ln` - DONE |
+| 41118 | `Sin`/`Cos`/`Arctan` - DONE |
+| 41595 | `Int(f)` - DONE |
+| 43902 | forward definition with a commented parameter list (`ERR 41`) |
 
 Corrections the measurements force, worth stating plainly because the stage list
 below was written before them:
@@ -477,9 +480,11 @@ file control-block operations, VAR string parameters, `Chr`, typed-file
 block I/O, text-file output, `Str`, pointer types with `New`/dereference,
 text `Eof`/`Readln`, integer `Str`, integer `Val`, and VAR REAL parameters). The
 ladder has moved from the first typed constant at 7,791 to **35,135**, where
-`exp(38) * ln(1)` asks for the real transcendental functions.  Copy, real
-`Val`, `Abs`, `Sqr` and `Sqrt` are landed; `Sin`, `Cos`, `Arctan`, `Ln` and
-`Exp` remain.
+The real functions `Ln`, `Exp`, `Sin`, `Cos` and `Arctan` are landed.  The
+ladder now stops at `function Expression{(var ExpressionCh : Char):Real;
+forward};` in `CALC.INC`, whose parameter list is commented out while the body
+still uses `ExpressionCh`; this is a source/forward-definition issue rather
+than a missing runtime function.
 
 The rung commits and their tags, in order (each is one rung with its own
 fixture, red proof, and — where the harness allows — execution under qemu and
@@ -527,7 +532,8 @@ Exec86):
 | `a4e72bf` | `v-TP3-CALC-VARREAL` | `ERR 102 32096` (REAL function result) |
 | `884edba` | `v-TP3-CALC-REALFUNC` | `ERR 102 32482` (REAL constants) |
 | `30782f6` | `v-TP3-CALC-REALEXPR` | `ERR 41 35135` (`Copy`) |
-| *(this commit)* | `v-TP3-CALC-COPYVAL` | **`ERR 41 40930`** (`Exp`) |
+| `df54e71` | `v-TP3-CALC-COPYVAL` | `ERR 41 40930` (`Exp`) |
+| *(this commit)* | `v-TP3-CALC-TRANSCEND` | **`ERR 41 43902`** (forward definition) |
 
 - **Code HEAD** is the layout rung (`v-TP3-CALC-LAYOUT`).  Nothing is pushed.
   The terminal-config work (`v-TP3-TERMCFG`) and the editor key map
@@ -586,8 +592,13 @@ Exec86):
   error and returning the 1-based first-bad position.
 - **`Abs`, `Sqr` and `Sqrt` are landed (`t104_mathbasic`).**  `Abs` clears the
   MBF sign, `Sqr` lowers to the real multiply entry, and `Sqrt` is Newton over
-  the existing real division/addition entries.  `Sin`, `Cos`, `Arctan`, `Ln`
-  and `Exp` still have no runtime implementation and remain loud.
+  the existing real division/addition entries.
+- **`Ln`, `Exp`, `Sin`, `Cos` and `Arctan` are landed (`t105_lnexp`,
+  `t106_trig`).**  `Exp` scales by 256, evaluates a Taylor series and squares
+  eight times; `Ln` extracts the exponent and uses the atanh series.  The
+  trigonometric entries use a polynomial generated from the TPSRC tables and
+  the same real arithmetic entries.  `Int(REAL)` is also wired to `real_int`
+  for CALC's `fact(int(f))`.
 - **REAL function results and value REAL parameters are landed**
   (`t98_realfunc`, `t99_valreal`).  A REAL function's caller supplies a
   six-byte scratch address in DI; the callee saves it in a hidden local and
@@ -1213,9 +1224,11 @@ and TEXT file output is done (`t91_textout`), both compile-only because the
 harness has no filesystem.  `Str` real formatting is done (`t92_strreal`),
 pointer types with `New`/`Dispose`/dereference are done (`t93_pointer`), and
 text `Eof`/`Readln` plus integer `Str` are done (`t94_textread`/`t95_strint`).
-The next ladder blocker is `Exp`/`Ln` in `Factor`; `Sin`, `Cos` and `Arctan`
-follow.  Copy, real `Val`, `Abs`, `Sqr` and `Sqrt` are landed.  The probe
-scaffold is at HDR=0x1800 / data 0x2110; the runtime is 5,228 bytes.
+The next ladder blocker is the forward definition of `Expression` in
+`CALC.INC`: its parameter list is commented out, so `ExpressionCh` is not in
+scope.  All the REAL builtins CALC uses are now implemented.  The runtime is
+13,955 bytes; `rt_exec` moved to HDR=0x4000 / data 0x5000, and the compiler's
+code ceiling is 0x7F00 so the large CALC image can reach this source point.
 
 **Stage 14 — the CRT identifiers.** `GotoXY` (25), `LowVideo`/`NormVideo`
 (16 + 16), `ClrEol` (10), `ClrScr` (6), `KeyPressed` (3), `Delay` (1),

+ 4 - 4
SUMMARY.md

@@ -2044,7 +2044,7 @@ the compiler *emitting* a 16,560-byte program). The ratchet and front-end
 features through **file control-block operations and the original memory
 layout** are landed: the ladder (`tests/calc_ladder.sh` +
 `tests/fixtures/calc_ladder.tsv`, run by `run_all.sh`; CALC.PAS now stops at
-`ERR 41` at pos 40930, `exp(38) * ln(1)` in Factor), the `{$I}` include,
+`ERR 41` at pos 43902, the commented parameter list on Expression), the `{$I}` include,
 `^X`/`#nn`, scalar typed constants, sets, enums, records (CellRec = 80),
 subranges, arrays, element/field access, file types, string value parameters,
 `Length`, the CRT identifiers (`ClrScr`/`GotoXY`/`ClrEol`/`LowVideo`/
@@ -2066,9 +2066,9 @@ pointer types with `New`/`Dispose`/dereference (`t93`), text `Eof`/`Readln`
 (`t94`), integer `Str` (`t95`), and integer `Val` (`t96`). The next rung is
 REAL function results (`t98`), value REAL parameters (`t99`), REAL
 literals/comparisons/arithmetic (`t100`) and self-recursion (`t101`). The next
-rung is `Exp`/`Ln`, then `Sin`/`Cos`/`Arctan`.  Copy, real `Val`, `Abs`,
-`Sqr` and `Sqrt` are landed.  The runtime is 5,228 bytes / 49 entries; the
-probe scaffold moved to HDR=0x1800. Items 1-4
+rung is the forward definition of `Expression`; all REAL builtins used by CALC
+are landed.  The runtime is 13,955 bytes / 54 entries; the rt_exec scaffold
+moved to HDR=0x4000 / data 0x5000. Items 1-4
 below are independent of both tracks.
 
 1. The rest of the string language. `v-TP3-STRVAR`/`v-TP3-STRREAD-ASSIGN` cover

+ 55 - 4
shell/Compiler.mod

@@ -75,7 +75,7 @@ CONST
       displacement is relative to the END of the jump, so every offset in the
       image is EntSize further along than it was before the jump existed. *)
    EntSize   = 3 ;
-   MaxCode   = 24000 ;
+   MaxCode   = 7F00H ;
    (* Program layout, image offsets.  The original puts the runtime and the
       program's code in CS and the globals in a SEPARATE DS segment, so the
       .COM contains no data and the code is not limited by a data gap.  We
@@ -85,7 +85,7 @@ CONST
       code must end below CodeMax, where the boot harness puts the stdin
       descriptor (memory 7000h). *)
    DataStart = 8000H ;       (* image offset of the first global (memory 8100h) *)
-   CodeMax   = 6F00H ;       (* code must end below memory 7000h *)
+   CodeMax   = 7F00H ;       (* code must end below memory 7000h *)
 
    MaxSym    = 3000 ;
    MaxPatch  = 2000 ;
@@ -143,6 +143,8 @@ CONST
    BI_Close = 19 ; BI_IoResult = 20 ; BI_Chr = 21 ; BI_Str = 22 ;
    BI_New = 23 ; BI_Dispose = 24 ; BI_Eof = 25 ; BI_Val = 26 ;
    BI_Copy = 27 ; BI_Abs = 28 ; BI_Sqrt = 29 ; BI_Sqr = 30 ;
+   BI_Ln = 31 ; BI_Exp = 32 ; BI_Sin = 33 ; BI_Cos = 34 ; BI_Arctan = 35 ;
+   BI_Int = 36 ;
    (* the sub-codes EmCrtSeq takes *)
    CrtClr = 0 ; CrtDl = 1 ; CrtDh = 2 ; CrtCaret = 3 ; CrtEol = 4 ;
    CrtLow = 5 ; CrtNorm = 6 ; CrtDelay = 7 ; CrtKey = 8 ;
@@ -419,6 +421,9 @@ VAR
    TU_StrCopy     : CARDINAL ;  (* Copy(S,start,len) *)
    TU_ValReal     : CARDINAL ;  (* counted string -> REAL *)
    TU_RealAbs     : CARDINAL ;  TU_RealSqrt : CARDINAL ;
+   TU_RealLn      : CARDINAL ;  TU_RealExp : CARDINAL ;
+   TU_RealSin     : CARDINAL ;  TU_RealCos : CARDINAL ;  TU_RealArctan : CARDINAL ;
+   TU_RealIntFunc : CARDINAL ;
    TU_CmpStr   : CARDINAL ;  (* string comparison; two addresses on the stack,
                                 signed -1/0/+1 in AX *)
    TU_StrCat   : CARDINAL ;  (* string concatenation; dest and source addresses
@@ -4463,7 +4468,10 @@ BEGIN
       r.chr := FALSE ;
       RETURN
    ELSIF (symtab [idx].tag = KBuiltin) AND
-         ((symtab [idx].cls = BI_Abs) OR (symtab [idx].cls = BI_Sqrt)) THEN
+         ((symtab [idx].cls = BI_Abs) OR (symtab [idx].cls = BI_Sqrt)
+          OR (symtab [idx].cls = BI_Ln) OR (symtab [idx].cls = BI_Exp)
+          OR (symtab [idx].cls = BI_Sin) OR (symtab [idx].cls = BI_Cos)
+          OR (symtab [idx].cls = BI_Arctan) OR (symtab [idx].cls = BI_Int)) THEN
       IF NOT MatchDelim ('(') THEN
          Err (ENoSemi) ;
          RETURN
@@ -4473,14 +4481,32 @@ BEGIN
       IF NOT OK () THEN
          RETURN
       END ;
+      IF (r.cls = TScalar) AND (r.kind = 0) THEN
+         scratch := NewScratchReal () ;
+         EmCopyRealTo (symtab [scratch].off, r) ;
+         r.idx := scratch ; r.kind := 1 ; r.cls := TReal ;
+         r.sz := 6 ; r.boff := 0
+      END ;
       IF r.cls # TReal THEN
          Err (ETypeErr) ;
          RETURN
       END ;
       IF symtab [idx].cls = BI_Abs THEN
          RealUnary (TU_RealAbs, r)
-      ELSE
+      ELSIF symtab [idx].cls = BI_Sqrt THEN
          RealUnary (TU_RealSqrt, r)
+      ELSIF symtab [idx].cls = BI_Ln THEN
+         RealUnary (TU_RealLn, r)
+      ELSIF symtab [idx].cls = BI_Exp THEN
+         RealUnary (TU_RealExp, r)
+      ELSIF symtab [idx].cls = BI_Sin THEN
+         RealUnary (TU_RealSin, r)
+      ELSIF symtab [idx].cls = BI_Cos THEN
+         RealUnary (TU_RealCos, r)
+      ELSIF symtab [idx].cls = BI_Arctan THEN
+         RealUnary (TU_RealArctan, r)
+      ELSE
+         RealUnary (TU_RealIntFunc, r)
       END ;
       RETURN
    ELSIF (symtab [idx].tag = KBuiltin) AND (symtab [idx].cls = BI_Sqr) THEN
@@ -4893,6 +4919,13 @@ BEGIN
       b [i] := CHR (0) ;
       INC (i)
    END ;
+   (* The parser represents a negated 16-bit INTEGER constant as its
+      unsigned 16-bit bit pattern (W16), so -1 arrives as 65535.  Convert that
+      back to a signed value before building a REAL; otherwise `R := -1' would
+      become +65535. *)
+   IF (v > 32767) AND (v <= 65535) THEN
+      v := v - 65536
+   END ;
    IF v = 0 THEN
       RETURN
    END ;
@@ -7875,6 +7908,18 @@ BEGIN
    symtab [i].defnd := TRUE ;
    i := NewSym ("SQR", KBuiltin, BI_Sqr, 0, 0, 0, 0, FALSE) ;
    symtab [i].defnd := TRUE ;
+   i := NewSym ("LN", KBuiltin, BI_Ln, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
+   i := NewSym ("EXP", KBuiltin, BI_Exp, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
+   i := NewSym ("SIN", KBuiltin, BI_Sin, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
+   i := NewSym ("COS", KBuiltin, BI_Cos, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
+   i := NewSym ("ARCTAN", KBuiltin, BI_Arctan, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
+   i := NewSym ("INT", KBuiltin, BI_Int, 0, 0, 0, 0, FALSE) ;
+   symtab [i].defnd := TRUE ;
    (* KBD: the console keyboard as a TEXT file.  This runtime's read entries
       already read the console, so `Read(Kbd, Ch)' drops the file argument and
       reads a character exactly as `Read(Ch)' does. *)
@@ -8056,6 +8101,12 @@ BEGIN
    TU_ValReal     := RT_Entry (46) ;
    TU_RealAbs     := RT_Entry (47) ;
    TU_RealSqrt    := RT_Entry (48) ;
+   TU_RealLn      := RT_Entry (49) ;
+   TU_RealExp     := RT_Entry (50) ;
+   TU_RealSin     := RT_Entry (51) ;
+   TU_RealCos     := RT_Entry (52) ;
+   TU_RealArctan  := RT_Entry (53) ;
+   TU_RealIntFunc := RT_Entry (27) ;
    TU_WrStr    := RT_Entry (15) ;      (* a string variable is written through
                                           the address on the stack *)
    TU_RdStr    := RT_Entry (16) ;      (* readln(s)/read(s): TPSRC8 prdstr,

+ 5 - 0
shell/Runtime.def

@@ -88,6 +88,11 @@ CONST
    E_ValReal = 46 ;         (* [BP+4]=string, [BP+6]=dest real, [BP+8]=error *)
    E_RealAbs = 47 ;         (* [BP+4]=12-byte block; result in its first 6 bytes *)
    E_RealSqrt = 48 ;        (* [BP+4]=12-byte block; Sqrt of the first REAL *)
+   E_RealLn = 49 ;          (* [BP+4]=12-byte block; Ln of the first REAL *)
+   E_RealExp = 50 ;         (* [BP+4]=12-byte block; Exp of the first REAL *)
+   E_RealSin = 51 ;         (* [BP+4]=12-byte block; Sin of the first REAL *)
+   E_RealCos = 52 ;         (* [BP+4]=12-byte block; Cos of the first REAL *)
+   E_RealArctan = 53 ;      (* [BP+4]=12-byte block; Arctan of the first REAL *)
 
    (* File control block, mirrored by Compiler.FileVarSize. *)
    F_NameOff = 4 ;           (* handle word, mode word, then the name *)

+ 336 - 6
shell/Runtime.mod

@@ -41,7 +41,7 @@ IMPLEMENTATION MODULE Runtime ;
 FROM SYSTEM IMPORT BYTE ;
 
 CONST
-   MaxRt  = 8192 ;
+   MaxRt  = 32768 ;
    (* MaxLbl and MaxFix were 64 and 400, and M/AddFix used to DROP once full.
       That limit does not announce itself: a dropped label leaves its bytes in
       place, so the runtime still has the right LENGTH and the only symptom is
@@ -52,8 +52,8 @@ CONST
       that case; the fill checks below make any future overflow a HALT instead
       of wrong code.  tests/check_runtime.py's branch-boundary check is what
       caught this one. *)
-   MaxLbl = 320 ;       (* fmtreal/ascreal added ~70 labels to the MBF core's 160 *)
-   MaxFix = 768 ;
+   MaxLbl = 512 ;       (* fmtreal/ascreal added ~70 labels to the MBF core's 160 *)
+   MaxFix = 8192 ;
    MaxNm  = 15 ;
 
    (* Offsets inside the runtime's own data block.  These must agree with the
@@ -108,7 +108,32 @@ CONST
    D_MATHX = 466 ;    (* 6 bytes: the current Newton iterate *)
    D_MATHQ = 472 ;    (* 6 bytes: a division result *)
    D_MATHI = 478 ;    (* 1 byte: a small loop counter *)
-   D_END   = 479 ;    (* the block is padded to here *)
+   D_ONE   = 479 ;    (* 1.0 *)
+   D_EXP256 = 485 ;   (* 256.0: the Exp range-reduction divisor *)
+   D_LN2   = 491 ;    (* ln 2 *)
+   D_HALF  = 497 ;    (* 0.5 *)
+   D_LNC   = 503 ;    (* 8 x 6 bytes: 1/15 .. 1 for Ln *)
+   D_EXPC  = 551 ;    (* 12 x 6 bytes: 1/0! .. 1/11! for Exp *)
+   D_PI    = 623 ;    (* pi *)
+   D_PI2   = 629 ;    (* pi/2 *)
+   D_2PI   = 635 ;    (* 2*pi *)
+   D_FLTSIN = 641 ;   (* 7 x 6 bytes: the sin/cos polynomial *)
+   D_FLTATN = 683 ;   (* 5 x 6 bytes: the arctan polynomial *)
+   D_FLTATNRG = 713 ; (* 8 x 6 bytes: arctan range table *)
+   D_X     = 761 ;    (* 6 bytes: math argument *)
+   D_Y     = 767 ;    (* 6 bytes: math temporary *)
+   D_P     = 773 ;    (* 6 bytes: polynomial accumulator *)
+   D_BLK   = 779 ;    (* 12 bytes: a/b block for the runtime entries *)
+   D_E     = 791 ;    (* 6 bytes: saved exponent as a real *)
+   D_EI    = 797 ;    (* 1 byte: exponent integer *)
+   D_NPI   = 798 ;    (* -pi *)
+   D_SIGN  = 804 ;    (* arctan sign flag *)
+   D_RECIP = 805 ;    (* arctan reciprocal flag *)
+   D_TRANS = 806 ;    (* arctan transformation flag *)
+   D_ATNT  = 807 ;    (* tan(pi/8) *)
+   D_PI4   = 813 ;    (* pi/4 *)
+   D_ZERO  = 819 ;    (* 0.0 *)
+   D_END   = 825 ;    (* the block is padded to here *)    (* the block is padded to here *)
 
    (* THE LOAD BIAS.  Everything above is an offset into the image as this
       compiler numbers it: the entry JMP is at image 0.  But a DOS .COM is
@@ -2334,7 +2359,70 @@ BEGIN
    Jmp8 ("ri_store")
 END EmitRealInt ;
 
+PROCEDURE Copy6 (src, dst : CARDINAL) ;
+(* emit a six-byte move between two runtime-data offsets *)
+BEGIN
+   MovAxData (src) ; StDataAx (dst) ;
+   MovBxData (src + 2) ; StDataBx (dst + 2) ;
+   MovDxData (src + 4) ; StDataDx (dst + 4)
+END Copy6 ;
+
+PROCEDURE MathAdd (a, b, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ; Copy6 (b, D_BLK + 6) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_add") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathAdd ;
+
+PROCEDURE MathSub (a, b, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ; Copy6 (b, D_BLK + 6) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_sub") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathSub ;
+
+PROCEDURE MathMul (a, b, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ; Copy6 (b, D_BLK + 6) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_mul") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathMul ;
+
+PROCEDURE MathDiv (a, b, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ; Copy6 (b, D_BLK + 6) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_div") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathDiv ;
+
+PROCEDURE MathCmp (a, b : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ; Copy6 (b, D_BLK + 6) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_cmp") ; AddSp2
+END MathCmp ;
+
+PROCEDURE MathAbs (a, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_abs") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathAbs ;
+
+PROCEDURE MathNeg (a, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, dst) ;
+   MovDiData (dst) ; XorDiOffImm (5, 80H)
+END MathNeg ;
+
+PROCEDURE MathInt (a, dst : CARDINAL) ;
+BEGIN
+   Copy6 (a, D_BLK) ;
+   MovBxDataAddr (D_BLK) ; PushBx ; Call ("real_int") ; AddSp2 ;
+   Copy6 (D_BLK, dst)
+END MathInt ;
+
 PROCEDURE EmitRealMath ;
+VAR k : CARDINAL ;
 (* REAL math entries.  The caller passes a 12-byte block; the first six bytes
    are the argument and are overwritten by the result.  Abs is a sign clear.
    Sqrt is Newton's iteration with a fixed count: the 8086 has no FPU, so the
@@ -2418,7 +2506,165 @@ BEGIN
    PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR ;
    M ("ms_err") ;
    PopDi ;
-   MovAlD (3) ; MovAh (4CH) ; Int21
+   MovAlD (3) ; MovAh (4CH) ; Int21 ;
+
+   M ("real_exp") ;
+   PushBp ; MovBpSp ; PushBx ; PushDx ; PushSi ; PushDi ;
+   PushBp4 ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   StoreMath (D_X) ;
+   MathDiv (D_X, D_EXP256, D_Y) ;
+   Copy6 (D_EXPC + 66, D_P) ;
+   k := 10 ;
+   WHILE k > 0 DO
+      MathMul (D_P, D_Y, D_P) ;
+      MathAdd (D_P, D_EXPC + k * 6, D_P) ;
+      DEC (k)
+   END ;
+   MathMul (D_P, D_Y, D_P) ;
+   MathAdd (D_P, D_EXPC, D_P) ;
+   k := 0 ;
+   WHILE k < 8 DO
+      MathMul (D_P, D_P, D_P) ;
+      INC (k)
+   END ;
+   PopDi ; LoadMath (D_P) ;
+   StDiAx ; StDiOffBx (2) ; StDiOffDx (4) ;
+   Jmp8 ("ex_done") ;
+   M ("ex_done") ;
+   PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR ;
+
+   M ("real_ln") ;
+   PushBp ; MovBpSp ; PushBx ; PushDx ; PushSi ; PushDi ;
+   PushBp4 ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   CmpAl0 ; JccNear (74H, "ln_err") ;
+   TestDhImm (80H) ; JccNear (75H, "ln_err") ;
+   AddAlImm (7FH) ; Cbw ; Call ("rf_core") ; StoreMath (D_E) ;
+   MovDiBp4 ; MovAlD (081H) ; StDiAl ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   StoreMath (D_X) ;
+   MathSub (D_X, D_ONE, D_Y) ;
+   MathAdd (D_X, D_ONE, D_P) ;
+   MathDiv (D_Y, D_P, D_Y) ;
+   MathMul (D_Y, D_Y, D_P) ;
+   Copy6 (D_LNC, D_X) ;
+   k := 1 ;
+   WHILE k < 8 DO
+      MathMul (D_X, D_P, D_X) ;
+      MathAdd (D_X, D_LNC + k * 6, D_X) ;
+      INC (k)
+   END ;
+   MathMul (D_Y, D_X, D_X) ;
+   MathAdd (D_X, D_X, D_X) ;
+   MathMul (D_E, D_LN2, D_E) ;
+   MathAdd (D_X, D_E, D_X) ;
+   PopDi ; LoadMath (D_X) ;
+   StDiAx ; StDiOffBx (2) ; StDiOffDx (4) ;
+   Jmp8 ("ln_done") ;
+   M ("ln_err") ;
+   PopDi ;
+   MovAlD (4) ; MovAh (4CH) ; Int21 ;
+   M ("ln_done") ;
+   PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR ;
+
+   M ("real_sin") ;
+   PushBp ; MovBpSp ; PushBx ; PushDx ; PushSi ; PushDi ;
+   PushBp4 ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   StoreMath (D_X) ;
+   (* Reduce x modulo 2*pi. *)
+   MathDiv (D_X, D_2PI, D_Y) ;
+   MathInt (D_Y, D_Y) ;
+   MathMul (D_Y, D_2PI, D_Y) ;
+   MathSub (D_X, D_Y, D_X) ;
+   (* Bring into [-pi, pi]. *)
+   MathCmp (D_X, D_PI) ; CmpAx0 ; JccNear (7EH, "sn_high_done") ;
+   MathSub (D_X, D_2PI, D_X) ;
+   M ("sn_high_done") ;
+   MathCmp (D_X, D_NPI) ; CmpAx0 ; JccNear (7DH, "sn_low_done") ;
+   MathAdd (D_X, D_2PI, D_X) ;
+   M ("sn_low_done") ;
+   (* sin(x) = x * (1 + c1*x^2 + ...), the TPSRC fltsin table. *)
+   MathMul (D_X, D_X, D_Y) ;
+   Copy6 (D_FLTSIN, D_P) ;
+   MathMul (D_P, D_Y, D_P) ;
+   k := 1 ;
+   WHILE k < 7 DO
+      MathAdd (D_P, D_FLTSIN + k * 6, D_P) ;
+      MathMul (D_P, D_Y, D_P) ;
+      INC (k)
+   END ;
+   MathAdd (D_P, D_ONE, D_P) ;
+   MathMul (D_P, D_X, D_P) ;
+   PopDi ; LoadMath (D_P) ;
+   StDiAx ; StDiOffBx (2) ; StDiOffDx (4) ;
+   Jmp8 ("sn_done") ;
+   M ("sn_done") ;
+   PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR ;
+
+   M ("real_cos") ;
+   PushBp ; MovBpSp ; PushBx ; PushDx ; PushSi ; PushDi ;
+   PushBp4 ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   StoreMath (D_X) ;
+   MathAdd (D_X, D_PI2, D_X) ;
+   PopDi ; LoadMath (D_X) ;
+   StDiAx ; StDiOffBx (2) ; StDiOffDx (4) ;
+   PushBp4 ; Call ("real_sin") ; AddSp2 ;
+   PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR ;
+
+   M ("real_arctan") ;
+   PushBp ; MovBpSp ; PushBx ; PushDx ; PushSi ; PushDi ;
+   PushBp4 ;
+   MovSiBp4 ; LdAxSi ; LdCxSiOff (2) ; MovBxCx ; LdDxSiOff (4) ;
+   StoreMath (D_X) ;
+   MathCmp (D_X, D_ZERO) ; CmpAx0 ; JccNear (7DH, "at_pos") ;
+   StDataByte (D_SIGN, 1) ; JmpNear ("at_abs") ;
+   M ("at_pos") ;
+   StDataByte (D_SIGN, 0) ;
+   M ("at_abs") ;
+   MathAbs (D_X, D_Y) ;
+   StDataByte (D_RECIP, 0) ;
+   MathCmp (D_Y, D_ONE) ; CmpAx0 ; JccNear (7EH, "at_no_recip") ;
+   StDataByte (D_RECIP, 1) ;
+   MathDiv (D_ONE, D_Y, D_Y) ;
+   M ("at_no_recip") ;
+   StDataByte (D_TRANS, 0) ;
+   MathCmp (D_Y, D_ATNT) ; CmpAx0 ; JccNear (7EH, "at_no_trans") ;
+   StDataByte (D_TRANS, 1) ;
+   MathSub (D_Y, D_ONE, D_X) ;
+   MathAdd (D_Y, D_ONE, D_P) ;
+   MathDiv (D_X, D_P, D_X) ;
+   JmpNear ("at_poly") ;
+   M ("at_no_trans") ;
+   Copy6 (D_Y, D_X) ;
+   M ("at_poly") ;
+   MathMul (D_X, D_X, D_P) ;
+   Copy6 (D_FLTATN, D_Y) ;
+   MathMul (D_Y, D_P, D_Y) ;
+   k := 1 ;
+   WHILE k < 5 DO
+      MathAdd (D_Y, D_FLTATN + k * 6, D_Y) ;
+      MathMul (D_Y, D_P, D_Y) ;
+      INC (k)
+   END ;
+   MathAdd (D_Y, D_ONE, D_Y) ;
+   MathMul (D_Y, D_X, D_Y) ;
+   TestDataImm (D_TRANS, 1) ; JccNear (74H, "at_after_trans") ;
+   MathAdd (D_Y, D_PI4, D_Y) ;
+   M ("at_after_trans") ;
+   TestDataImm (D_RECIP, 1) ; JccNear (74H, "at_after_recip") ;
+   MathSub (D_PI2, D_Y, D_Y) ;
+   M ("at_after_recip") ;
+   TestDataImm (D_SIGN, 1) ; JccNear (74H, "at_after_sign") ;
+   MathNeg (D_Y, D_Y) ;
+   M ("at_after_sign") ;
+   PopDi ; LoadMath (D_Y) ;
+   StDiAx ; StDiOffBx (2) ; StDiOffDx (4) ;
+   Jmp8 ("at_done") ;
+   M ("at_done") ;
+   PopDi ; PopSi ; PopDx ; PopBx ; MovSpBp ; PopBp ; RetR
 END EmitRealMath ;
 
 PROCEDURE EmitRealConv ;
@@ -3408,6 +3654,10 @@ BEGIN
    MovSpBp ; PopBp ; RetR
 END EmitValReal ;
 
+PROCEDURE Data6 (ax, bx, dx : CARDINAL) ;
+(* emit one six-byte MBF constant in the runtime data block *)
+BEGIN W (ax) ; W (bx) ; W (dx) END Data6 ;
+
 PROCEDURE EmitData ;
 (* The runtime's data block.  The D_ constants name the offsets in it and are
    ASSERTED against what is emitted here, three ways: the starting offset of
@@ -3565,6 +3815,81 @@ BEGIN
       HALT
    END ;
    B (0) ; B (0) ;                 (* Val digit scratch *)
+   WHILE rpos < dataAt + D_ONE DO
+      B (0)                           (* the 256-byte ASCIIZ Val buffer *)
+   END ;
+   IF dataAt + D_ONE # rpos THEN HALT END ;
+   Data6 (0081H, 0000H, 0000H) ;
+   IF dataAt + D_EXP256 # rpos THEN HALT END ;
+   Data6 (0089H, 0000H, 0000H) ;
+   IF dataAt + D_LN2 # rpos THEN HALT END ;
+   Data6 (0D280H, 17F7H, 3172H) ;
+   IF dataAt + D_HALF # rpos THEN HALT END ;
+   Data6 (0080H, 0000H, 0000H) ;
+   IF dataAt + D_LNC # rpos THEN HALT END ;
+   Data6 (897DH, 8888H, 0888H) ;
+   Data6 (8A7DH, 0D89DH, 1D89H) ;
+   Data6 (0E97DH, 8BA2H, 3A2EH) ;
+   Data6 (8E7DH, 38E3H, 638EH) ;
+   Data6 (497EH, 2492H, 1249H) ;
+   Data6 (0CD7EH, 0CCCCH, 4CCCH) ;
+   Data6 (0AB7FH, 0AAAAH, 2AAAH) ;
+   Data6 (0081H, 0000H, 0000H) ;
+   IF dataAt + D_EXPC # rpos THEN HALT END ;
+   Data6 (0081H, 0000H, 0000H) ;
+   Data6 (0081H, 0000H, 0000H) ;
+   Data6 (0080H, 0000H, 0000H) ;
+   Data6 (0AB7EH, 0AAAAH, 2AAAH) ;
+   Data6 (0AB7CH, 0AAAAH, 2AAAH) ;
+   Data6 (897AH, 8888H, 0888H) ;
+   Data6 (0B77H, 60B6H, 360BH) ;
+   Data6 (0D74H, 00D0H, 500DH) ;
+   Data6 (0D71H, 00D0H, 500DH) ;
+   Data6 (0B66EH, 1D2AH, 38EFH) ;
+   Data6 (0C56BH, 7DBBH, 13F2H) ;
+   Data6 (0AA67H, 2B3FH, 5732H) ;
+   IF dataAt + D_PI # rpos THEN HALT END ;
+   Data6 (2182H, 0DAA2H, 490FH) ;
+   IF dataAt + D_PI2 # rpos THEN HALT END ;
+   Data6 (2181H, 0DAA2H, 490FH) ;
+   IF dataAt + D_2PI # rpos THEN HALT END ;
+   Data6 (2183H, 0DAA2H, 490FH) ;
+   IF dataAt + D_FLTSIN # rpos THEN HALT END ;
+   Data6 (9D58H, 9F39H, 0D73FH) ;
+   Data6 (4360H, 309DH, 3092H) ;
+   Data6 (0AA67H, 283FH, 0D732H) ;
+   Data6 (0B66EH, 1D2AH, 38EFH) ;
+   Data6 (0D74H, 00D0H, 0D00DH) ;
+   Data6 (887AH, 8888H, 0888H) ;
+   Data6 (0AB7EH, 0AAAAH, 0AAAAH) ;
+   IF dataAt + D_FLTATN # rpos THEN HALT END ;
+   Data6 (0E87DH, 8BA2H, 0BA2EH) ;
+   Data6 (8E7DH, 38E3H, 638EH) ;
+   Data6 (497EH, 2492H, 9249H) ;
+   Data6 (0CD7EH, 0CCCCH, 4CCCH) ;
+   Data6 (0AB7FH, 0AAAAH, 0AAAAH) ;
+   IF dataAt + D_FLTATNRG # rpos THEN HALT END ;
+   Data6 (0E77FH, 0CCCFH, 5413H) ;
+   Data6 (0F67FH, 0A2F4H, 0930H) ;
+   Data6 (6A7FH, 91C1H, 060AH) ;
+   Data6 (0B580H, 8A9EH, 446FH) ;
+   Data6 (8280H, 3A2CH, 13CDH) ;
+   Data6 (6A80H, 91C1H, 060AH) ;
+   Data6 (0081H, 0000H, 0000H) ;
+   Data6 (2180H, 0DAA2H, 490FH) ;
+   WHILE rpos < dataAt + D_NPI DO
+      B (0)
+   END ;
+   IF dataAt + D_NPI # rpos THEN HALT END ;
+   Data6 (2182H, 0DAA2H, 0C90FH) ;
+   IF dataAt + D_SIGN # rpos THEN HALT END ;
+   B (0) ; B (0) ; B (0) ;          (* sign, reciprocal, transform *)
+   IF dataAt + D_ATNT # rpos THEN HALT END ;
+   Data6 (0E77FH, 0CCCFH, 5413H) ;
+   IF dataAt + D_PI4 # rpos THEN HALT END ;
+   Data6 (2180H, 0DAA2H, 490FH) ;
+   IF dataAt + D_ZERO # rpos THEN HALT END ;
+   Data6 (0000H, 0000H, 0000H) ;
    WHILE rpos < dataAt + D_END DO
       B (0)
    END ;
@@ -3687,6 +4012,11 @@ BEGIN
    SetStr (entNm [46], "val_real") ;
    SetStr (entNm [47], "real_abs") ;
    SetStr (entNm [48], "real_sqrt") ;
+   SetStr (entNm [49], "real_ln") ;
+   SetStr (entNm [50], "real_exp") ;
+   SetStr (entNm [51], "real_sin") ;
+   SetStr (entNm [52], "real_cos") ;
+   SetStr (entNm [53], "real_arctan") ;
    built := TRUE
 END RT_Build ;
 
@@ -3714,7 +4044,7 @@ BEGIN
    IF NOT built THEN
       RT_Build (0)
    END ;
-   IF i > 48 THEN
+   IF i > 53 THEN
       RETURN 0
    END ;
    RETURN rtBase + LblOff (entNm [i])

+ 8 - 3
shell/tests/RtProbe.mod

@@ -108,7 +108,7 @@ END PENT ;
 
 PROCEDURE Main ;
 VAR i, n, base : CARDINAL ;
-    names : ARRAY [0..48] OF ARRAY [0..15] OF CHAR ;
+    names : ARRAY [0..53] OF ARRAY [0..15] OF CHAR ;
 BEGIN
    base := GetBase () ;
    RT_Build (base) ;
@@ -121,7 +121,7 @@ BEGIN
    PCARD (RT_Size ()) ; PS (" bytes") ; NL ;
    PS ("code ends at ") ; PCARD (RT_CodeEnd ()) ; NL ;
    i := 0 ;
-   WHILE i <= 48 DO
+   WHILE i <= 53 DO
       names [i] := "" ;
       INC (i)
    END ;
@@ -161,8 +161,13 @@ BEGIN
    names [46] := "val_real" ;
    names [47] := "real_abs" ;
    names [48] := "real_sqrt" ;
+   names [49] := "real_ln" ;
+   names [50] := "real_exp" ;
+   names [51] := "real_sin" ;
+   names [52] := "real_cos" ;
+   names [53] := "real_arctan" ;
    i := 0 ;
-   WHILE i <= 48 DO
+   WHILE i <= 53 DO
       PENT (i, names [i]) ;
       INC (i)
    END ;

+ 65 - 64
shell/tests/exec/rtdrv.s

@@ -92,73 +92,74 @@
 # silently run into the test scaffolding.  rt_exec.py asserts
 # RT_BASE + blob size <= HDR, so the bound is a checked one.
 	.set	RT_BASE, 0x0190
-	.set	HDR, 0x1800
-	.set	FMTDEST, 0x2430	# 64-byte destination for real_fmt
-	.set	ASCSRC, 0x2470	# ASCIIZ sources for real_val
-	.set	DATA, 0x2110
+	.set	HDR, 0x4000
+	.set	FMTDEST, DSHIFT+0x2430	# 64-byte destination for real_fmt
+	.set	ASCSRC, DSHIFT+0x2470	# ASCIIZ sources for real_val
+	.set	DATA, 0x5000
+	.set	DSHIFT, 0x2EF0
 	.set	DLEN, 32			# bytes of data area for initmem to clear
-	.set	STORE, 0x2140		# where a read entry's result is stored
-	.set	WSTR, 0x2150		# a string for the wrstr case: length + chars
-	.set	WSTR_EMPTY, 0x2158	# the same, with a length of 0
-	.set	CASE, 0x2160		# the case record
-	.set	D_DUMPLEN, 0x21a0	# the driver's own three words
-	.set	D_DUMPADR, 0x21a2
-	.set	D_CNT, 0x21a4
-	.set	D_AX, 0x21a6		# last call's AX, for the comparison cases
-	.set	RDSTR_DST, 0x21b0	# destination for the rdstr cases
-	.set	SST_HELLO, 0x21c0	# a short source string for strstore
-	.set	SST_LONG, 0x21d0	# a source longer than a small max
-	.set	SST_EMPTY, 0x21e0	# an empty source string
-	.set	SST_DST, 0x21f0		# destination for the strstore cases
-	.set	SST_CAT, 0x2200		# destination for the strcat cases, with a
+	.set	STORE, DSHIFT+0x2140		# where a read entry's result is stored
+	.set	WSTR, DSHIFT+0x2150		# a string for the wrstr case: length + chars
+	.set	WSTR_EMPTY, DSHIFT+0x2158	# the same, with a length of 0
+	.set	CASE, DSHIFT+0x2160		# the case record
+	.set	D_DUMPLEN, DSHIFT+0x21a0	# the driver's own three words
+	.set	D_DUMPADR, DSHIFT+0x21a2
+	.set	D_CNT, DSHIFT+0x21a4
+	.set	D_AX, DSHIFT+0x21a6		# last call's AX, for the comparison cases
+	.set	RDSTR_DST, DSHIFT+0x21b0	# destination for the rdstr cases
+	.set	SST_HELLO, DSHIFT+0x21c0	# a short source string for strstore
+	.set	SST_LONG, DSHIFT+0x21d0	# a source longer than a small max
+	.set	SST_EMPTY, DSHIFT+0x21e0	# an empty source string
+	.set	SST_DST, DSHIFT+0x21f0		# destination for the strstore cases
+	.set	SST_CAT, DSHIFT+0x2200		# destination for the strcat cases, with a
 					# length to append to -- unlike SST_DST,
 					# which strstore overwrites
-	.set	SST_CAT0, 0x2210	# ...and one that starts empty
-	.set	SST_WORLD, 0x2220	# a source distinct from SST_HELLO
-	.set	R_BLK1, 0x2230
-	.set	R_BLK2, 0x2240
-	.set	R_BLK3, 0x2250
-	.set	R_BLK4, 0x2260
-	.set	R_BLK5, 0x2270
-	.set	R_BLK6, 0x2280
-	.set	R_BLK7, 0x2290
-	.set	R_BLK8, 0x22a0
-	.set	R_BLK9, 0x22b0
-	.set	R_BLK10, 0x22c0
-	.set	R_BLK11, 0x22d0
-	.set	R_BLK12, 0x22e0
-	.set	R_BLK13, 0x22f0
-	.set	R_BLK14, 0x2300
-	.set	R_BLK15, 0x2310
-	.set	R_BLK16, 0x2320
-	.set	R_BLK17, 0x2330
-	.set	R_BLK18, 0x2340
-	.set	R_BLK19, 0x2350
-	.set	R_BLK20, 0x2360
-	.set	R_BLK21, 0x2370
-	.set	R_BLK22, 0x2380
-	.set	R_BLK23, 0x2390
-	.set	R_BLK24, 0x23a0
-	.set	R_BLK25, 0x23b0
-	.set	R_BLK26, 0x23c0
-	.set	R_BLK27, 0x23d0
-	.set	R_BLK28, 0x23e0
-	.set	R_BLK29, 0x23f0
-	.set	R_BLK30, 0x2400
-	.set	R_BLK31, 0x2410
-	.set	R_BLK32, 0x2500
-	.set	R_BLK33, 0x2510
-	.set	R_BLK34, 0x2520
-	.set	R_BLK35, 0x2530
-	.set	R_BLK36, 0x2540
-	.set	FILEBLK, 0x2a00	# the 132-byte file control block
-	.set	SETA, 0x2580
-	.set	SETB, 0x2590
-	.set	SETC, 0x25a0
-	.set	SETD, 0x25b0
-	.set	SET2A, 0x25c0
-	.set	SET2B, 0x25d0
-	.set	SET2D, 0x25e0
+	.set	SST_CAT0, DSHIFT+0x2210	# ...and one that starts empty
+	.set	SST_WORLD, DSHIFT+0x2220	# a source distinct from SST_HELLO
+	.set	R_BLK1, DSHIFT+0x2230
+	.set	R_BLK2, DSHIFT+0x2240
+	.set	R_BLK3, DSHIFT+0x2250
+	.set	R_BLK4, DSHIFT+0x2260
+	.set	R_BLK5, DSHIFT+0x2270
+	.set	R_BLK6, DSHIFT+0x2280
+	.set	R_BLK7, DSHIFT+0x2290
+	.set	R_BLK8, DSHIFT+0x22a0
+	.set	R_BLK9, DSHIFT+0x22b0
+	.set	R_BLK10, DSHIFT+0x22c0
+	.set	R_BLK11, DSHIFT+0x22d0
+	.set	R_BLK12, DSHIFT+0x22e0
+	.set	R_BLK13, DSHIFT+0x22f0
+	.set	R_BLK14, DSHIFT+0x2300
+	.set	R_BLK15, DSHIFT+0x2310
+	.set	R_BLK16, DSHIFT+0x2320
+	.set	R_BLK17, DSHIFT+0x2330
+	.set	R_BLK18, DSHIFT+0x2340
+	.set	R_BLK19, DSHIFT+0x2350
+	.set	R_BLK20, DSHIFT+0x2360
+	.set	R_BLK21, DSHIFT+0x2370
+	.set	R_BLK22, DSHIFT+0x2380
+	.set	R_BLK23, DSHIFT+0x2390
+	.set	R_BLK24, DSHIFT+0x23a0
+	.set	R_BLK25, DSHIFT+0x23b0
+	.set	R_BLK26, DSHIFT+0x23c0
+	.set	R_BLK27, DSHIFT+0x23d0
+	.set	R_BLK28, DSHIFT+0x23e0
+	.set	R_BLK29, DSHIFT+0x23f0
+	.set	R_BLK30, DSHIFT+0x2400
+	.set	R_BLK31, DSHIFT+0x2410
+	.set	R_BLK32, DSHIFT+0x2500
+	.set	R_BLK33, DSHIFT+0x2510
+	.set	R_BLK34, DSHIFT+0x2520
+	.set	R_BLK35, DSHIFT+0x2530
+	.set	R_BLK36, DSHIFT+0x2540
+	.set	FILEBLK, DSHIFT+0x2a00	# the 132-byte file control block
+	.set	SETA, DSHIFT+0x2580
+	.set	SETB, DSHIFT+0x2590
+	.set	SETC, DSHIFT+0x25a0
+	.set	SETD, DSHIFT+0x25b0
+	.set	SET2A, DSHIFT+0x25c0
+	.set	SET2B, DSHIFT+0x25d0
+	.set	SET2D, DSHIFT+0x25e0
 
 	.code16
 	.text

+ 1 - 1
shell/tests/fixtures/calc_ladder.tsv

@@ -36,4 +36,4 @@
 # 22280 -> 22706 -> 22859 -> 23700 -> 25674 -> 26066 -> 26924 -> 27648 ->
 # 28074 -> 31758 -> 32096 -> 32284 -> 32482 -> 32564 -> 33374 -> 33537 ->
 # 33778 -> 35135.  The next blocker is the Copy string builtin (TP3 error 41).
-CALC.PAS	ERR	41	40930
+CALC.PAS	ERR	41	43902

+ 5 - 0
shell/tests/fixtures/expected.tsv

@@ -711,3 +711,8 @@ t103_valreal	OK	350	34
 
 #   t104_mathbasic       REAL Abs, Sqr and Sqrt.
 t104_mathbasic	OK	472	80
+
+#   t105_lnexp           REAL Ln and Exp against hand-derived values.
+t105_lnexp	OK	1154	184
+
+t106_trig	OK	1338	184

+ 8 - 0
shell/tests/fixtures/t105_lnexp.out

@@ -0,0 +1,8 @@
+1.000000
+2.718282
+0.367879
+0.693147
+0.000000
+2.302585
+1.000000
+2.000000

+ 26 - 0
shell/tests/fixtures/t105_lnexp.pas

@@ -0,0 +1,26 @@
+program t105_lnexp;
+
+{ t105 -- Ln and Exp on REAL.  Exp scales its argument by 256 and Taylor-squares;
+  Ln reduces the exponent and uses the atanh series for the mantissa. }
+
+var
+  R : real;
+  S : string[40];
+begin
+  R := 0;
+  Str (Exp (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1;
+  Str (Exp (R) : 0 : 6, S) ; writeln (S) ;
+  R := -1;
+  Str (Exp (R) : 0 : 6, S) ; writeln (S) ;
+  R := 2;
+  Str (Ln (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1;
+  Str (Ln (R) : 0 : 6, S) ; writeln (S) ;
+  R := 10;
+  Str (Ln (R) : 0 : 6, S) ; writeln (S) ;
+  R := Exp (1);
+  Str (Ln (R) : 0 : 6, S) ; writeln (S) ;
+  R := Ln (2);
+  Str (Exp (R) : 0 : 6, S) ; writeln (S)
+end.

+ 10 - 0
shell/tests/fixtures/t106_trig.out

@@ -0,0 +1,10 @@
+0.000000
+1.000000
+0.841471
+1.000000
+-1.000000
+0.540302
+0.000000
+0.785398
+-0.785398
+1.107149

+ 29 - 0
shell/tests/fixtures/t106_trig.pas

@@ -0,0 +1,29 @@
+program t106_trig;
+
+{ t106 -- Sin, Cos and Arctan. }
+
+var
+  R : real;
+  S : string[40];
+begin
+  R := 0;
+  Str (Sin (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1.5707963268;
+  Str (Sin (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1;
+  Str (Sin (R) : 0 : 6, S) ; writeln (S) ;
+  R := 0;
+  Str (Cos (R) : 0 : 6, S) ; writeln (S) ;
+  R := 3.1415926536;
+  Str (Cos (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1;
+  Str (Cos (R) : 0 : 6, S) ; writeln (S) ;
+  R := 0;
+  Str (Arctan (R) : 0 : 6, S) ; writeln (S) ;
+  R := 1;
+  Str (Arctan (R) : 0 : 6, S) ; writeln (S) ;
+  R := -1;
+  Str (Arctan (R) : 0 : 6, S) ; writeln (S) ;
+  R := 2;
+  Str (Arctan (R) : 0 : 6, S) ; writeln (S)
+end.

+ 60 - 58
shell/tests/rt_exec.py

@@ -63,26 +63,27 @@ SHELL = os.path.dirname(HERE)
 # two are written down and then CHECKED against each other (see build_image).
 # A restated constant that is never compared is a constant waiting to lie.
 RT_BASE = 0x0190
-HDR = 0x1800
+HDR = 0x4000
 DLEN = 32
-DATA = 0x2110
-STORE = 0x2140
-WSTR = 0x2150
-WSTR_EMPTY = 0x2158
-CASE = 0x2160
+DATA = 0x5000
+DSHIFT = 0x2EF0
+STORE = DSHIFT+0x2140
+WSTR = DSHIFT+0x2150
+WSTR_EMPTY = DSHIFT+0x2158
+CASE = DSHIFT+0x2160
 CASE_SZ = 64
-RDSTR_DST = 0x21b0
-SST_HELLO = 0x21c0
-SST_LONG = 0x21d0
-SST_EMPTY = 0x21e0
-SST_DST = 0x21f0
-SST_CAT = 0x2200
-SST_CAT0 = 0x2210
-SST_WORLD = 0x2220
-AXOUT = 0x21a6          # the driver stores the last call's AX here
-FMTDEST = 0x2430        # a 64-byte string for the real_fmt cases
-ASCSRC = 0x2470          # the ASCIIZ strings for real_val
-FILEBLK = 0x2a00         # the 132-byte file control block
+RDSTR_DST = DSHIFT+0x21b0
+SST_HELLO = DSHIFT+0x21c0
+SST_LONG = DSHIFT+0x21d0
+SST_EMPTY = DSHIFT+0x21e0
+SST_DST = DSHIFT+0x21f0
+SST_CAT = DSHIFT+0x2200
+SST_CAT0 = DSHIFT+0x2210
+SST_WORLD = DSHIFT+0x2220
+AXOUT = DSHIFT+0x21a6          # the driver stores the last call's AX here
+FMTDEST = DSHIFT+0x2430        # a 64-byte string for the real_fmt cases
+ASCSRC = DSHIFT+0x2470          # the ASCIIZ strings for real_val
+FILEBLK = DSHIFT+0x2a00         # the 132-byte file control block
 REALDST = 0x0FA8
 
 # A .COM is loaded at CS:0100, and every address in the image is an image
@@ -115,7 +116,8 @@ ENTS = ["initmem", "progend", "stackchk", "wrint", "wrchar", "wrbool",
         "file_assign", "file_reset", "file_rewrite", "file_close",
         "ioresult", "io_store", "heap_new", "file_eof", "file_readln",
         "int_fmt", "val_int", "str_copy", "val_real", "real_abs",
-        "real_sqrt"]
+        "real_sqrt", "real_ln", "real_exp", "real_sin", "real_cos",
+        "real_arctan"]
 
 # A call slot's flags, as rtdrv.s reads them.
 F_STACK = 1     # the argument goes on the stack, popped by the caller
@@ -551,7 +553,7 @@ def build_cases():
               (6, 2), (10, 2), (15, 3), (1000, 2), (-6, 2), (6, -2),
               (-6, -2), (0, 5), (5, 2), (42, 6)]
     for bi, (a, b) in enumerate(BLOCKS):
-        blk = 0x2230 + 16 * bi
+        blk = DSHIFT+0x2230 + 16 * bi
         add("real_add(%d,%d)" % (a, b),
             [s("real_add", blk + LOAD_BIAS)],
             dump=6, dumpbytes=mbf(a + b), dumpadr=blk,
@@ -584,7 +586,7 @@ def build_cases():
         if (a, b) in seen:
             continue
         seen.add((a, b))
-        blk = 0x2230 + 16 * bi
+        blk = DSHIFT+0x2230 + 16 * bi
         want = (a > b) - (a < b)
         add("real_cmp(%d,%d)" % (a, b),
             [s("real_cmp", blk + LOAD_BIAS)],
@@ -596,14 +598,14 @@ def build_cases():
             (-0.5, 0.5), (12345.75, 12345.5), (2.5, 0.0), (-2.5, 0.0),
             (0.99, 0.0), (1.9, 0.0)]
     for fi, (a, b) in enumerate(FRAC):
-        blk = 0x2370 + 16 * fi
+        blk = DSHIFT+0x2370 + 16 * fi
         want = (a > b) - (a < b)
         add("real_cmp(%g,%g)" % (a, b),
             [s("real_cmp", blk + LOAD_BIAS)],
             dump=2, dumpbytes=struct.pack("<H", want & 0xFFFF), dumpadr=AXOUT,
             note="fractional magnitudes: the mantissa decides")
     add("real_cmp(2^40,0)",
-        [s("real_cmp", 0x2410 + LOAD_BIAS)],
+        [s("real_cmp", DSHIFT+0x2410 + LOAD_BIAS)],
         dump=2, dumpbytes=struct.pack("<h", 1), dumpadr=AXOUT,
         note="the exponent alone decides")
 
@@ -613,20 +615,20 @@ def build_cases():
     # (TPSRC's xint pushes the six-byte result back).
     for bi, (a, b) in enumerate(BLOCKS):
         if a in (0, 1, -3, 32767):
-            blk = 0x2230 + 16 * bi
+            blk = DSHIFT+0x2230 + 16 * bi
             add("real_int(%d)" % a,
                 [s("real_int", blk + LOAD_BIAS)],
                 dump=6, dumpbytes=mbf(math.trunc(a)), dumpadr=blk,
                 note="the integer part as a real, the reference's reint")
     for fi, (a, b) in enumerate(FRAC):
-        blk = 0x2370 + 16 * fi
+        blk = DSHIFT+0x2370 + 16 * fi
         add("real_int(%g)" % a,
             [s("real_int", blk + LOAD_BIAS)],
             dump=6, dumpbytes=mbf(math.trunc(a)), dumpadr=blk,
             note="the fraction is masked away; the sign and exponent stay")
     add("real_int(2^40)",
-        [s("real_int", 0x2410 + LOAD_BIAS)],
-        dump=6, dumpbytes=bytes.fromhex("A90000000000"), dumpadr=0x2410,
+        [s("real_int", DSHIFT+0x2410 + LOAD_BIAS)],
+        dump=6, dumpbytes=bytes.fromhex("A90000000000"), dumpadr=DSHIFT+0x2410,
         note="exponent >= 0A8h is already integral and returns unchanged")
 
     # --- fmtreal: real_fmt writes a length-prefixed, left-padded field -----
@@ -643,15 +645,15 @@ def build_cases():
          s2cx("real_fmt", STORE + LOAD_BIAS, FMTDEST + LOAD_BIAS, 0)],
         stdin=struct.pack("<h", 1), dump=2, dumpbytes=bytes([1]) + b"1",
         dumpadr=FMTDEST, note="a known-good 1.0 from real_from_int")
-    fmt("real_fmt(1:0:0)", 0x2230, 0, 0, b"1")
-    fmt("real_fmt(0:0:0)", 0x22b0, 0, 0, b"0")
-    fmt("real_fmt(3.7:0:2)", 0x2370, 0, 2, b"3.70")
-    fmt("real_fmt(12345.75:12:2)", 0x23c0, 12, 2, b"    12345.75")
-    fmt("real_fmt(0.5:6:3)", 0x23a0, 6, 3, b" 0.500")
-    fmt("real_fmt(-3.7:0:1)", 0x2390, 0, 1, b"-3.7")
-    fmt("real_fmt(0:5:2)", 0x22b0, 5, 2, b" 0.00")
-    fmt("real_fmt(2.5:0:0)", 0x23d0, 0, 0, b"3")
-    fmt("real_fmt(3.7:10:25)", 0x2370, 10, 25, b"3.7000E+00")
+    fmt("real_fmt(1:0:0)", DSHIFT+0x2230, 0, 0, b"1")
+    fmt("real_fmt(0:0:0)", DSHIFT+0x22b0, 0, 0, b"0")
+    fmt("real_fmt(3.7:0:2)", DSHIFT+0x2370, 0, 2, b"3.70")
+    fmt("real_fmt(12345.75:12:2)", DSHIFT+0x23c0, 12, 2, b"    12345.75")
+    fmt("real_fmt(0.5:6:3)", DSHIFT+0x23a0, 6, 3, b" 0.500")
+    fmt("real_fmt(-3.7:0:1)", DSHIFT+0x2390, 0, 1, b"-3.7")
+    fmt("real_fmt(0:5:2)", DSHIFT+0x22b0, 5, 2, b" 0.00")
+    fmt("real_fmt(2.5:0:0)", DSHIFT+0x23d0, 0, 0, b"3")
+    fmt("real_fmt(3.7:10:25)", DSHIFT+0x2370, 10, 25, b"3.7000E+00")
 
     # --- ascreal: real_val parses an ASCIIZ string ------------------------
     # A dump of AXOUT shows the returned offset, or FFFFh on a hard error.
@@ -682,13 +684,13 @@ def build_cases():
         off += len(txt)
 
     for bi, (a, b) in [(0, (12340, 5)), (1, (12340, 1))]:
-        blk = 0x2500 + 16 * bi
+        blk = DSHIFT+0x2500 + 16 * bi
         add("real_add(%d,%d)" % (a, b), [s("real_add", blk + LOAD_BIAS)],
             dump=6, dumpbytes=mbf(a + b), dumpadr=blk,
             note="a large value plus a small digit: the add core's alignment")
 
     for bi, a in [(2, 12341), (3, 12345), (4, 12340)]:
-        blk = 0x2500 + 16 * bi
+        blk = DSHIFT+0x2500 + 16 * bi
         add("real_mul(%d,1)" % a, [s("real_mul", blk + LOAD_BIAS)],
             dump=6, dumpbytes=mbf(a), dumpadr=blk,
             note="multiplying by 1.0 must be exact")
@@ -697,14 +699,14 @@ def build_cases():
     def wr(name, blk, width, dec, text):
         add(name, [s3("real_write", dec, width, blk + LOAD_BIAS)], out=text,
             note="fmtreal's field, padded and printed by the entry itself")
-    wr("real_write(3.7:0:2)", 0x2370, 0, 2, b"3.70")
-    wr("real_write(3.7:10:2)", 0x2370, 10, 2, b"      3.70")
-    wr("real_write(12345.75:12:2)", 0x23c0, 12, 2, b"    12345.75")
-    wr("real_write(0.5:0:3)", 0x23a0, 0, 3, b"0.500")
-    wr("real_write(-3.7:0:1)", 0x2390, 0, 1, b"-3.7")
-    wr("real_write(2.5:0:0)", 0x23d0, 0, 0, b"3")
-    wr("real_write(42:0:0)", 0x2290, 0, 0, b"42")
-    wr("real_write(3.7:18:FFFF)", 0x2370, 18, 0xFFFF,
+    wr("real_write(3.7:0:2)", DSHIFT+0x2370, 0, 2, b"3.70")
+    wr("real_write(3.7:10:2)", DSHIFT+0x2370, 10, 2, b"      3.70")
+    wr("real_write(12345.75:12:2)", DSHIFT+0x23c0, 12, 2, b"    12345.75")
+    wr("real_write(0.5:0:3)", DSHIFT+0x23a0, 0, 3, b"0.500")
+    wr("real_write(-3.7:0:1)", DSHIFT+0x2390, 0, 1, b"-3.7")
+    wr("real_write(2.5:0:0)", DSHIFT+0x23d0, 0, 0, b"3")
+    wr("real_write(42:0:0)", DSHIFT+0x2290, 0, 0, b"42")
+    wr("real_write(3.7:18:FFFF)", DSHIFT+0x2370, 18, 0xFFFF,
        b"  3.7000000000E+00")
 
     # --- set algebra ----------------------------------------------------
@@ -715,10 +717,10 @@ def build_cases():
                        right + LOAD_BIAS, left + LOAD_BIAS)],
             dump=size, dumpbytes=want, dumpadr=dest,
             note="the loops in EmitSetOps, exact bytes")
-    setop("set_op /", 0, 1, 0x25b0, 0x2590, 0x2580, b"\x08")
-    setop("set_op +", 1, 1, 0x25b0, 0x2590, 0x2580, b"\x1A")
-    setop("set_op -", 2, 1, 0x25b0, 0x2590, 0x2580, b"\x02")
-    setop("set_op / 2 bytes", 0, 2, 0x25e0, 0x25d0, 0x25c0, b"\x08\x03")
+    setop("set_op /", 0, 1, DSHIFT+0x25b0, DSHIFT+0x2590, DSHIFT+0x2580, b"\x08")
+    setop("set_op +", 1, 1, DSHIFT+0x25b0, DSHIFT+0x2590, DSHIFT+0x2580, b"\x1A")
+    setop("set_op -", 2, 1, DSHIFT+0x25b0, DSHIFT+0x2590, DSHIFT+0x2580, b"\x02")
+    setop("set_op / 2 bytes", 0, 2, DSHIFT+0x25e0, DSHIFT+0x25d0, DSHIFT+0x25c0, b"\x08\x03")
 
     # set_cmp: [BP+4]=size, [BP+6]=right, [BP+8]=left; AX = equal bit 0,
     # strict subset bit 1, strict superset bit 2.
@@ -726,16 +728,16 @@ def build_cases():
         add(name, [s3("set_cmp", size, right + LOAD_BIAS, left + LOAD_BIAS)],
             dump=2, dumpbytes=struct.pack("<H", mask), dumpadr=AXOUT,
             note="the reference mask: 1 equal, 2 subset, 4 superset")
-    setcmp("set_cmp size 0", 0, 0x2580, 0x2590, 1)
-    setcmp("set_cmp A=A", 1, 0x2580, 0x2580, 1)
-    setcmp("set_cmp A~B", 1, 0x2580, 0x2590, 0)
-    setcmp("set_cmp C<A", 1, 0x25a0, 0x2580, 2)
-    setcmp("set_cmp A>C", 1, 0x2580, 0x25a0, 4)
-    setcmp("set_cmp 2-byte incomparable", 2, 0x25c0, 0x25d0, 0)
+    setcmp("set_cmp size 0", 0, DSHIFT+0x2580, DSHIFT+0x2590, 1)
+    setcmp("set_cmp A=A", 1, DSHIFT+0x2580, DSHIFT+0x2580, 1)
+    setcmp("set_cmp A~B", 1, DSHIFT+0x2580, DSHIFT+0x2590, 0)
+    setcmp("set_cmp C<A", 1, DSHIFT+0x25a0, DSHIFT+0x2580, 2)
+    setcmp("set_cmp A>C", 1, DSHIFT+0x2580, DSHIFT+0x25a0, 4)
+    setcmp("set_cmp 2-byte incomparable", 2, DSHIFT+0x25c0, DSHIFT+0x25d0, 0)
 
     add("set_copy 2 bytes",
-        [s3("set_copy", 2, 0x25c0 + LOAD_BIAS, 0x25e0 + LOAD_BIAS)],
-        dump=2, dumpbytes=b"\x0A\x0F", dumpadr=0x25e0,
+        [s3("set_copy", 2, DSHIFT+0x25c0 + LOAD_BIAS, DSHIFT+0x25e0 + LOAD_BIAS)],
+        dump=2, dumpbytes=b"\x0A\x0F", dumpadr=DSHIFT+0x25e0,
         note="[BP+4]=size, [BP+6]=src, [BP+8]=dest")
 
     add("wrchar('A')", [s("wrchar", ord("A"))], out=b"A")

+ 3583 - 1179
shell/tests/runtime.golden

@@ -22,7 +22,7 @@
 0015  39 CF       cmp di,cx
 0017  72 F5       jb 0eh
 0019  89 C8       mov ax,cx
-001B  A3 52 14    mov word ptr [1452h],ax
+001B  A3 0F 35    mov word ptr [350fh],ax
 001E  1E          push ds
 001F  07          pop es
 0020  C3          ret
@@ -43,7 +43,7 @@
 003B  58          pop ax
 003C  F7 D8       neg ax
 003E  B9 0A 00    mov cx,0ah
-0041  BB 95 13    mov bx,1395h
+0041  BB 52 34    mov bx,3452h
 0044  89 DE       mov si,bx
 0046  31 D2       xor dx,dx
 0048  F7 F1       div ax,cx
@@ -95,7 +95,7 @@
 00A7  58          pop ax
 00A8  F7 D8       neg ax
 00AA  B9 0A 00    mov cx,0ah
-00AD  BB 95 13    mov bx,1395h
+00AD  BB 52 34    mov bx,3452h
 00B0  89 DE       mov si,bx
 00B2  31 D2       xor dx,dx
 00B4  F7 F1       div ax,cx
@@ -127,18 +127,18 @@
 00E3  83 7E 04 00 cmp word ptr [bp+4h],0h
 00E7  89 EC       mov sp,bp
 00E9  75 05       jne 0f0h
-00EB  BA 9A 13    mov dx,139ah
+00EB  BA 57 34    mov dx,3457h
 00EE  EB 03       jmp 0f3h
-00F0  BA 95 13    mov dx,1395h
+00F0  BA 52 34    mov dx,3452h
 00F3  B4 09       mov ah,9h
 00F5  CD 21       int 21h
 00F7  5D          pop bp
 00F8  C3          ret
-00F9  BA A3 13    mov dx,13a3h
+00F9  BA 60 34    mov dx,3460h
 00FC  B4 09       mov ah,9h
 00FE  CD 21       int 21h
 0100  C3          ret
-0101  BA A0 13    mov dx,13a0h
+0101  BA 5D 34    mov dx,345dh
 0104  B4 09       mov ah,9h
 0106  CD 21       int 21h
 0108  C3          ret
@@ -305,12 +305,12 @@
 021C  EB EF       jmp 20dh
 021E  58          pop ax
 021F  C3          ret
-0220  8B 1E A9 13 mov bx,word ptr [13a9h]
+0220  8B 1E 66 34 mov bx,word ptr [3466h]
 0224  83 FB 00    cmp bx,0h
 0227  74 09       je 232h
 0229  8A C3       mov al,bl
 022B  31 DB       xor bx,bx
-022D  89 1E A9 13 mov word ptr [13a9h],bx
+022D  89 1E 66 34 mov word ptr [3466h],bx
 0231  C3          ret
 0232  B4 08       mov ah,8h
 0234  CD 21       int 21h
@@ -318,7 +318,7 @@
 0237  88 C2       mov dl,al
 0239  BB 01 00    mov bx,1h
 023C  8A DA       mov bl,dl
-023E  89 1E A9 13 mov word ptr [13a9h],bx
+023E  89 1E 66 34 mov word ptr [3466h],bx
 0242  C3          ret
 0243  55          push bp
 0244  8B EC       mov bp,sp
@@ -606,7 +606,7 @@
 0431  8B 4D 06    mov cx,word ptr [di+6h]
 0434  8B 75 08    mov si,word ptr [di+8h]
 0437  8B 7D 0A    mov di,word ptr [di+0ah]
-043A  C7 06 AB 13 00 00 mov word ptr [13abh],0h
+043A  C7 06 68 34 00 00 mov word ptr [3468h],0h
 0440  E8 4D 00    call 490h
 0443  5F          pop di
 0444  89 05       mov word ptr [di],ax
@@ -635,7 +635,7 @@
 046D  8B 4D 06    mov cx,word ptr [di+6h]
 0470  8B 75 08    mov si,word ptr [di+8h]
 0473  8B 7D 0A    mov di,word ptr [di+0ah]
-0476  C7 06 AB 13 00 80 mov word ptr [13abh],8000h
+0476  C7 06 68 34 00 80 mov word ptr [3468h],8000h
 047C  E8 11 00    call 490h
 047F  5F          pop di
 0480  89 05       mov word ptr [di],ax
@@ -650,7 +650,7 @@
 048F  C3          ret
 0490  80 F9 00    cmp cl,0h
 0493  74 0E       je 4a3h
-0495  33 3E AB 13 xor di,word ptr [13abh]
+0495  33 3E 68 34 xor di,word ptr [3468h]
 0499  3C 00       cmp al,0h
 049B  75 07       jne 4a4h
 049D  89 C8       mov ax,cx
@@ -662,16 +662,16 @@
 04A8  91          xchg ax,cx
 04A9  87 F3       xchg bx,si
 04AB  87 FA       xchg dx,di
-04AD  88 0E AF 13 mov byte ptr [13afh],cl
+04AD  88 0E 6C 34 mov byte ptr [346ch],cl
 04B1  28 C1       sub cl,al
 04B3  80 F9 28    cmp cl,28h
 04B6  72 06       jb 4beh
-04B8  8A 0E AF 13 mov cl,byte ptr [13afh]
+04B8  8A 0E 6C 34 mov cl,byte ptr [346ch]
 04BC  EB DF       jmp 49dh
-04BE  89 3E AB 13 mov word ptr [13abh],di
-04C2  80 26 AC 13 80 and byte ptr [13ach],80h
-04C7  89 3E AD 13 mov word ptr [13adh],di
-04CB  30 36 AE 13 xor byte ptr [13aeh],dh
+04BE  89 3E 68 34 mov word ptr [3468h],di
+04C2  80 26 69 34 80 and byte ptr [3469h],80h
+04C7  89 3E 6A 34 mov word ptr [346ah],di
+04CB  30 36 6B 34 xor byte ptr [346bh],dh
 04CF  81 CF 00 80 or di,8000h
 04D3  80 CE 80    or dh,80h
 04D6  80 F9 10    cmp cl,10h
@@ -696,8 +696,8 @@
 0501  D0 DC       rcr ah,1h
 0503  FE C9       dec cl
 0505  75 F6       jne 4fdh
-0507  A0 AF 13    mov al,byte ptr [13afh]
-050A  F6 06 AE 13 80 test byte ptr [13aeh],80h
+0507  A0 6C 34    mov al,byte ptr [346ch]
+050A  F6 06 6B 34 80 test byte ptr [346bh],80h
 050F  75 14       jne 525h
 0511  00 EC       add ah,ch
 0513  11 F3       adc bx,si
@@ -717,7 +717,7 @@
 052D  19 F3       sbb bx,si
 052F  19 FA       sbb dx,di
 0531  73 14       jnb 547h
-0533  80 36 AC 13 80 xor byte ptr [13ach],80h
+0533  80 36 69 34 80 xor byte ptr [3469h],80h
 0538  F6 D4       not ah
 053A  F7 D3       not bx
 053C  F7 D2       not dx
@@ -749,7 +749,7 @@
 0575  31 D2       xor dx,dx
 0577  C3          ret
 0578  80 E6 7F    and dh,7fh
-057B  32 36 AC 13 xor dh,byte ptr [13ach]
+057B  32 36 69 34 xor dh,byte ptr [3469h]
 057F  C3          ret
 0580  55          push bp
 0581  8B EC       mov bp,sp
@@ -795,23 +795,23 @@
 05D4  B0 01       mov al,1h
 05D6  B4 4C       mov ah,4ch
 05D8  CD 21       int 21h
-05DA  89 0E B6 13 mov word ptr [13b6h],cx
+05DA  89 0E 73 34 mov word ptr [3473h],cx
 05DE  8B CA       mov cx,dx
 05E0  31 F9       xor cx,di
 05E2  F6 D5       not ch
 05E4  80 E5 80    and ch,80h
-05E7  88 2E AC 13 mov byte ptr [13ach],ch
+05E7  88 2E 69 34 mov byte ptr [3469h],ch
 05EB  80 CE 80    or dh,80h
 05EE  81 CF 00 80 or di,8000h
-05F2  89 36 B8 13 mov word ptr [13b8h],si
-05F6  89 3E BA 13 mov word ptr [13bah],di
-05FA  A3 B0 13    mov word ptr [13b0h],ax
-05FD  89 1E B2 13 mov word ptr [13b2h],bx
-0601  89 16 B4 13 mov word ptr [13b4h],dx
+05F2  89 36 75 34 mov word ptr [3475h],si
+05F6  89 3E 77 34 mov word ptr [3477h],di
+05FA  A3 6D 34    mov word ptr [346dh],ax
+05FD  89 1E 6F 34 mov word ptr [346fh],bx
+0601  89 16 71 34 mov word ptr [3471h],dx
 0605  30 E4       xor ah,ah
 0607  31 DB       xor bx,bx
 0609  31 D2       xor dx,dx
-060B  BF B6 13    mov di,13b6h
+060B  BF 73 34    mov di,3473h
 060E  B1 05       mov cl,5h
 0610  47          inc di
 0611  8A 2D       mov ch,byte ptr [di]
@@ -826,9 +826,9 @@
 0624  BE 08 00    mov si,8h
 0627  D0 DD       rcr ch,1h
 0629  73 0C       jnb 637h
-062B  02 26 B1 13 add ah,byte ptr [13b1h]
-062F  13 1E B2 13 adc bx,word ptr [13b2h]
-0633  13 16 B4 13 adc dx,word ptr [13b4h]
+062B  02 26 6E 34 add ah,byte ptr [346eh]
+062F  13 1E 6F 34 adc bx,word ptr [346fh]
+0633  13 16 71 34 adc dx,word ptr [3471h]
 0637  D1 DA       rcr dx,1h
 0639  D1 DB       rcr bx,1h
 063B  D0 DC       rcr ah,1h
@@ -848,7 +848,7 @@
 0655  74 02       je 659h
 0657  FE C9       dec cl
 0659  91          xchg ax,cx
-065A  32 36 AC 13 xor dh,byte ptr [13ach]
+065A  32 36 69 34 xor dh,byte ptr [3469h]
 065E  3C 00       cmp al,0h
 0660  75 06       jne 668h
 0662  31 C0       xor ax,ax
@@ -897,29 +897,29 @@
 06B6  B0 01       mov al,1h
 06B8  B4 4C       mov ah,4ch
 06BA  CD 21       int 21h
-06BC  89 0E B6 13 mov word ptr [13b6h],cx
+06BC  89 0E 73 34 mov word ptr [3473h],cx
 06C0  8B CA       mov cx,dx
 06C2  31 F9       xor cx,di
 06C4  F6 D5       not ch
 06C6  80 E5 80    and ch,80h
-06C9  88 2E AC 13 mov byte ptr [13ach],ch
+06C9  88 2E 69 34 mov byte ptr [3469h],ch
 06CD  80 CE 80    or dh,80h
 06D0  81 CF 00 80 or di,8000h
-06D4  89 36 B8 13 mov word ptr [13b8h],si
-06D8  89 3E BA 13 mov word ptr [13bah],di
-06DC  A2 B0 13    mov byte ptr [13b0h],al
-06DF  BF B5 13    mov di,13b5h
+06D4  89 36 75 34 mov word ptr [3475h],si
+06D8  89 3E 77 34 mov word ptr [3477h],di
+06DC  A2 6D 34    mov byte ptr [346dh],al
+06DF  BF 72 34    mov di,3472h
 06E2  B1 05       mov cl,5h
 06E4  BE 08 00    mov si,8h
-06E7  3B 16 BA 13 cmp dx,word ptr [13bah]
+06E7  3B 16 77 34 cmp dx,word ptr [3477h]
 06EB  75 0A       jne 6f7h
-06ED  3B 1E B8 13 cmp bx,word ptr [13b8h]
+06ED  3B 1E 75 34 cmp bx,word ptr [3475h]
 06F1  75 04       jne 6f7h
-06F3  3A 26 B7 13 cmp ah,byte ptr [13b7h]
+06F3  3A 26 74 34 cmp ah,byte ptr [3474h]
 06F7  72 0C       jb 705h
-06F9  2A 26 B7 13 sub ah,byte ptr [13b7h]
-06FD  1B 1E B8 13 sbb bx,word ptr [13b8h]
-0701  1B 16 BA 13 sbb dx,word ptr [13bah]
+06F9  2A 26 74 34 sub ah,byte ptr [3474h]
+06FD  1B 1E 75 34 sbb bx,word ptr [3475h]
+0701  1B 16 77 34 sbb dx,word ptr [3477h]
 0705  F5          cmc
 0706  D0 D5       rcl ch,1h
 0708  4E          dec si
@@ -933,24 +933,24 @@
 0717  D1 D3       rcl bx,1h
 0719  D1 D2       rcl dx,1h
 071B  73 CA       jnb 6e7h
-071D  2A 26 B7 13 sub ah,byte ptr [13b7h]
-0721  1B 1E B8 13 sbb bx,word ptr [13b8h]
-0725  1B 16 BA 13 sbb dx,word ptr [13bah]
+071D  2A 26 74 34 sub ah,byte ptr [3474h]
+0721  1B 1E 75 34 sbb bx,word ptr [3475h]
+0725  1B 16 77 34 sbb dx,word ptr [3477h]
 0729  F8          clc
 072A  EB D9       jmp 705h
 072C  D0 E4       shl ah,1h
 072E  D1 D3       rcl bx,1h
 0730  D1 D2       rcl dx,1h
 0732  72 11       jb 745h
-0734  3B 16 BA 13 cmp dx,word ptr [13bah]
+0734  3B 16 77 34 cmp dx,word ptr [3477h]
 0738  75 0A       jne 744h
-073A  3B 1E B8 13 cmp bx,word ptr [13b8h]
+073A  3B 1E 75 34 cmp bx,word ptr [3475h]
 073E  75 04       jne 744h
-0740  3A 26 B7 13 cmp ah,byte ptr [13b7h]
+0740  3A 26 74 34 cmp ah,byte ptr [3474h]
 0744  F5          cmc
-0745  8B 0E B0 13 mov cx,word ptr [13b0h]
-0749  8B 1E B2 13 mov bx,word ptr [13b2h]
-074D  8B 16 B4 13 mov dx,word ptr [13b4h]
+0745  8B 0E 6D 34 mov cx,word ptr [346dh]
+0749  8B 1E 6F 34 mov bx,word ptr [346fh]
+074D  8B 16 71 34 mov dx,word ptr [3471h]
 0751  9F          lahf
 0752  F6 C6 80    test dh,80h
 0755  75 09       jne 760h
@@ -1082,7 +1082,7 @@
 084A  C3          ret
 084B  B0 00       mov al,0h
 084D  EB EB       jmp 83ah
-084F  C7 06 AB 13 00 00 mov word ptr [13abh],0h
+084F  C7 06 68 34 00 00 mov word ptr [3468h],0h
 0855  E8 38 FC    call 490h
 0858  C3          ret
 0859  E8 43 FE    call 69fh
@@ -1128,32 +1128,32 @@
 08A5  F6 C6 80    test dh,80h
 08A8  74 03       je 8adh
 08AA  E9 06 01    jmp 9b3h
-08AD  A3 59 15    mov word ptr [1559h],ax
-08B0  89 1E 5B 15 mov word ptr [155bh],bx
-08B4  89 16 5D 15 mov word ptr [155dh],dx
+08AD  A3 16 36    mov word ptr [3616h],ax
+08B0  89 1E 18 36 mov word ptr [3618h],bx
+08B4  89 16 1A 36 mov word ptr [361ah],dx
 08B8  88 C1       mov cl,al
 08BA  80 C1 80    add cl,80h
 08BD  D0 F9       sar cl,1h
 08BF  80 C1 80    add cl,80h
 08C2  88 C8       mov al,cl
-08C4  A3 5F 15    mov word ptr [155fh],ax
-08C7  89 1E 61 15 mov word ptr [1561h],bx
-08CB  89 16 63 15 mov word ptr [1563h],dx
-08CF  C6 06 6B 15 0C mov byte ptr [156bh],0ch
+08C4  A3 1C 36    mov word ptr [361ch],ax
+08C7  89 1E 1E 36 mov word ptr [361eh],bx
+08CB  89 16 20 36 mov word ptr [3620h],dx
+08CF  C6 06 28 36 0C mov byte ptr [3628h],0ch
 08D4  8B 7E 04    mov di,word ptr [bp+4h]
-08D7  8B 06 59 15 mov ax,word ptr [1559h]
+08D7  8B 06 16 36 mov ax,word ptr [3616h]
 08DB  89 05       mov word ptr [di],ax
-08DD  8B 1E 5B 15 mov bx,word ptr [155bh]
+08DD  8B 1E 18 36 mov bx,word ptr [3618h]
 08E1  89 5D 02    mov word ptr [di+2h],bx
-08E4  8B 16 5D 15 mov dx,word ptr [155dh]
+08E4  8B 16 1A 36 mov dx,word ptr [361ah]
 08E8  89 55 04    mov word ptr [di+4h],dx
 08EB  8B 7E 04    mov di,word ptr [bp+4h]
 08EE  81 C7 06 00 add di,6h
-08F2  8B 06 5F 15 mov ax,word ptr [155fh]
+08F2  8B 06 1C 36 mov ax,word ptr [361ch]
 08F6  89 05       mov word ptr [di],ax
-08F8  8B 1E 61 15 mov bx,word ptr [1561h]
+08F8  8B 1E 1E 36 mov bx,word ptr [361eh]
 08FC  89 5D 02    mov word ptr [di+2h],bx
-08FF  8B 16 63 15 mov dx,word ptr [1563h]
+08FF  8B 16 20 36 mov dx,word ptr [3620h]
 0903  89 55 04    mov word ptr [di+4h],dx
 0906  FF 76 04    push word ptr [bp+4h]
 0909  E8 5D FD    call 669h
@@ -1163,23 +1163,23 @@
 0914  8B 4C 02    mov cx,word ptr [si+2h]
 0917  89 CB       mov bx,cx
 0919  8B 54 04    mov dx,word ptr [si+4h]
-091C  A3 65 15    mov word ptr [1565h],ax
-091F  89 1E 67 15 mov word ptr [1567h],bx
-0923  89 16 69 15 mov word ptr [1569h],dx
+091C  A3 22 36    mov word ptr [3622h],ax
+091F  89 1E 24 36 mov word ptr [3624h],bx
+0923  89 16 26 36 mov word ptr [3626h],dx
 0927  8B 7E 04    mov di,word ptr [bp+4h]
-092A  8B 06 5F 15 mov ax,word ptr [155fh]
+092A  8B 06 1C 36 mov ax,word ptr [361ch]
 092E  89 05       mov word ptr [di],ax
-0930  8B 1E 61 15 mov bx,word ptr [1561h]
+0930  8B 1E 1E 36 mov bx,word ptr [361eh]
 0934  89 5D 02    mov word ptr [di+2h],bx
-0937  8B 16 63 15 mov dx,word ptr [1563h]
+0937  8B 16 20 36 mov dx,word ptr [3620h]
 093B  89 55 04    mov word ptr [di+4h],dx
 093E  8B 7E 04    mov di,word ptr [bp+4h]
 0941  81 C7 06 00 add di,6h
-0945  8B 06 65 15 mov ax,word ptr [1565h]
+0945  8B 06 22 36 mov ax,word ptr [3622h]
 0949  89 05       mov word ptr [di],ax
-094B  8B 1E 67 15 mov bx,word ptr [1567h]
+094B  8B 1E 24 36 mov bx,word ptr [3624h]
 094F  89 5D 02    mov word ptr [di+2h],bx
-0952  8B 16 69 15 mov dx,word ptr [1569h]
+0952  8B 16 26 36 mov dx,word ptr [3626h]
 0956  89 55 04    mov word ptr [di+4h],dx
 0959  FF 76 04    push word ptr [bp+4h]
 095C  E8 B9 FA    call 418h
@@ -1190,19 +1190,19 @@
 096A  89 CB       mov bx,cx
 096C  8B 54 04    mov dx,word ptr [si+4h]
 096F  FE C8       dec al
-0971  A3 5F 15    mov word ptr [155fh],ax
-0974  89 1E 61 15 mov word ptr [1561h],bx
-0978  89 16 63 15 mov word ptr [1563h],dx
-097C  FE 0E 6B 15 dec byte ptr [156bh]
+0971  A3 1C 36    mov word ptr [361ch],ax
+0974  89 1E 1E 36 mov word ptr [361eh],bx
+0978  89 16 20 36 mov word ptr [3620h],dx
+097C  FE 0E 28 36 dec byte ptr [3628h]
 0980  74 03       je 985h
 0982  E9 4F FF    jmp 8d4h
-0985  8B 06 5F 15 mov ax,word ptr [155fh]
-0989  8B 1E 61 15 mov bx,word ptr [1561h]
-098D  8B 16 63 15 mov dx,word ptr [1563h]
+0985  8B 06 1C 36 mov ax,word ptr [361ch]
+0989  8B 1E 1E 36 mov bx,word ptr [361eh]
+098D  8B 16 20 36 mov dx,word ptr [3620h]
 0991  EB 0C       jmp 99fh
-0993  8B 06 65 15 mov ax,word ptr [1565h]
-0997  8B 1E 67 15 mov bx,word ptr [1567h]
-099B  8B 16 69 15 mov dx,word ptr [1569h]
+0993  8B 06 22 36 mov ax,word ptr [3622h]
+0997  8B 1E 24 36 mov bx,word ptr [3624h]
+099B  8B 16 26 36 mov dx,word ptr [3626h]
 099F  5F          pop di
 09A0  89 05       mov word ptr [di],ax
 09A2  89 5D 02    mov word ptr [di+2h],bx
@@ -1226,1093 +1226,3497 @@
 09BE  52          push dx
 09BF  56          push si
 09C0  57          push di
-09C1  8B 7E 04    mov di,word ptr [bp+4h]
-09C4  88 EA       mov dl,ch
-09C6  B5 00       mov ch,0h
-09C8  B6 00       mov dh,0h
-09CA  51          push cx
-09CB  BB 06 14    mov bx,1406h
-09CE  E8 41 02    call 0c12h
-09D1  59          pop cx
-09D2  89 D8       mov ax,bx
-09D4  BB 06 14    mov bx,1406h
-09D7  2B C3       sub ax,bx
-09D9  A3 46 14    mov word ptr [1446h],ax
-09DC  89 0E 48 14 mov word ptr [1448h],cx
-09E0  8B 06 48 14 mov ax,word ptr [1448h]
-09E4  8B 16 46 14 mov dx,word ptr [1446h]
-09E8  2B C2       sub ax,dx
-09EA  83 F8 00    cmp ax,0h
-09ED  7D 02       jnl 9f1h
-09EF  31 C0       xor ax,ax
-09F1  A3 4A 14    mov word ptr [144ah],ax
-09F4  8B 16 46 14 mov dx,word ptr [1446h]
-09F8  03 C2       add ax,dx
-09FA  3D FF 00    cmp ax,0ffh
-09FD  77 03       jnbe 0a02h
-09FF  E9 03 00    jmp 0a05h
-0A02  B8 FF 00    mov ax,0ffh
-0A05  A3 4C 14    mov word ptr [144ch],ax
-0A08  8B 56 06    mov dx,word ptr [bp+6h]
-0A0B  89 D7       mov di,dx
-0A0D  88 05       mov byte ptr [di],al
-0A0F  47          inc di
-0A10  8B 0E 4A 14 mov cx,word ptr [144ah]
-0A14  E3 07       jcxz 0a1dh
-0A16  B0 20       mov al,20h
-0A18  88 05       mov byte ptr [di],al
-0A1A  47          inc di
-0A1B  E2 F9       loop 0a16h
-0A1D  BE 06 14    mov si,1406h
-0A20  8B 0E 46 14 mov cx,word ptr [1446h]
-0A24  E3 08       jcxz 0a2eh
-0A26  8A 04       mov al,byte ptr [si]
-0A28  88 05       mov byte ptr [di],al
-0A2A  46          inc si
-0A2B  47          inc di
-0A2C  E2 F8       loop 0a26h
-0A2E  8B 06 4C 14 mov ax,word ptr [144ch]
-0A32  5F          pop di
-0A33  5E          pop si
-0A34  5A          pop dx
-0A35  5B          pop bx
-0A36  89 EC       mov sp,bp
-0A38  5D          pop bp
-0A39  C3          ret
-0A3A  55          push bp
-0A3B  8B EC       mov bp,sp
-0A3D  53          push bx
-0A3E  52          push dx
-0A3F  56          push si
-0A40  57          push di
-0A41  8B 5E 04    mov bx,word ptr [bp+4h]
-0A44  8B 7E 06    mov di,word ptr [bp+6h]
-0A47  89 1E 4E 14 mov word ptr [144eh],bx
-0A4B  E8 CF 02    call 0d1dh
-0A4E  73 03       jnb 0a53h
-0A50  E9 0B 00    jmp 0a5eh
-0A53  89 D8       mov ax,bx
-0A55  8B 16 4E 14 mov dx,word ptr [144eh]
-0A59  2B C2       sub ax,dx
-0A5B  E9 03 00    jmp 0a61h
-0A5E  B8 FF FF    mov ax,0ffffh
-0A61  5F          pop di
-0A62  5E          pop si
-0A63  5A          pop dx
-0A64  5B          pop bx
-0A65  89 EC       mov sp,bp
-0A67  5D          pop bp
-0A68  C3          ret
-0A69  3C 00       cmp al,0h
-0A6B  74 03       je 0a70h
-0A6D  E9 01 00    jmp 0a71h
-0A70  C3          ret
-0A71  80 CE 80    or dh,80h
-0A74  51          push cx
-0A75  52          push dx
-0A76  53          push bx
-0A77  50          push ax
-0A78  D1 EA       shr dx,1h
-0A7A  D1 DB       rcr bx,1h
-0A7C  D0 DC       rcr ah,1h
-0A7E  D1 EA       shr dx,1h
-0A80  D1 DB       rcr bx,1h
-0A82  D0 DC       rcr ah,1h
-0A84  59          pop cx
-0A85  00 EC       add ah,ch
-0A87  59          pop cx
-0A88  13 D9       adc bx,cx
-0A8A  59          pop cx
-0A8B  13 D1       adc dx,cx
-0A8D  59          pop cx
-0A8E  72 03       jb 0a93h
-0A90  E9 0F 00    jmp 0aa2h
-0A93  D1 DA       rcr dx,1h
-0A95  D1 DB       rcr bx,1h
-0A97  D0 DC       rcr ah,1h
-0A99  FE C0       inc al
-0A9B  74 03       je 0aa0h
-0A9D  E9 02 00    jmp 0aa2h
-0AA0  F9          stc
-0AA1  C3          ret
-0AA2  80 E6 7F    and dh,7fh
-0AA5  04 03       add al,3h
-0AA7  C3          ret
-0AA8  52          push dx
-0AA9  53          push bx
-0AAA  50          push ax
-0AAB  88 0E C8 13 mov byte ptr [13c8h],cl
-0AAF  80 F9 00    cmp cl,0h
-0AB2  78 03       js 0ab7h
-0AB4  E9 02 00    jmp 0ab9h
-0AB7  F6 D9       neg cl
-0AB9  88 CB       mov bl,cl
-0ABB  80 E3 FC    and bl,0fch
-0ABE  88 DF       mov bh,bl
-0AC0  D0 EB       shr bl,1h
-0AC2  00 FB       add bl,bh
-0AC4  30 FF       xor bh,bh
-0AC6  8D BF CA 13 lea di,[bx+13cah]
-0ACA  8B 05       mov ax,word ptr [di]
-0ACC  8B 5D 02    mov bx,word ptr [di+2h]
-0ACF  8B 55 04    mov dx,word ptr [di+4h]
-0AD2  80 E1 03    and cl,3h
-0AD5  75 03       jne 0adah
-0AD7  E9 0A 00    jmp 0ae4h
-0ADA  E8 8C FF    call 0a69h
-0ADD  FE C9       dec cl
-0ADF  74 03       je 0ae4h
-0AE1  E9 F6 FF    jmp 0adah
-0AE4  89 C1       mov cx,ax
-0AE6  89 DE       mov si,bx
-0AE8  89 D7       mov di,dx
-0AEA  58          pop ax
-0AEB  5B          pop bx
-0AEC  5A          pop dx
-0AED  F6 06 C8 13 80 test byte ptr [13c8h],80h
-0AF2  74 03       je 0af7h
-0AF4  E9 03 00    jmp 0afah
-0AF7  E9 BC FA    jmp 5b6h
-0AFA  E9 A2 FB    jmp 69fh
-0AFD  80 F9 DA    cmp cl,0dah
-0B00  7D 03       jnl 0b05h
-0B02  E9 12 00    jmp 0b17h
-0B05  80 F9 26    cmp cl,26h
-0B08  7E 03       jle 0b0dh
-0B0A  E9 0A 00    jmp 0b17h
-0B0D  51          push cx
-0B0E  56          push si
-0B0F  57          push di
-0B10  E8 95 FF    call 0aa8h
-0B13  5F          pop di
-0B14  5E          pop si
-0B15  59          pop cx
-0B16  C3          ret
-0B17  F9          stc
-0B18  C3          ret
-0B19  8B 05       mov ax,word ptr [di]
-0B1B  8B 5D 02    mov bx,word ptr [di+2h]
-0B1E  8B 55 04    mov dx,word ptr [di+4h]
-0B21  3C 00       cmp al,0h
-0B23  74 03       je 0b28h
-0B25  E9 16 00    jmp 0b3eh
-0B28  BE BC 13    mov si,13bch
-0B2B  C7 04 30 30 mov word ptr [si],3030h
-0B2F  46          inc si
-0B30  46          inc si
-0B31  81 FE C8 13 cmp si,13c8h
-0B35  74 03       je 0b3ah
-0B37  E9 F1 FF    jmp 0b2bh
-0B3A  B9 00 00    mov cx,0h
-0B3D  C3          ret
-0B3E  88 F5       mov ch,dh
-0B40  80 E6 7F    and dh,7fh
-0B43  50          push ax
-0B44  52          push dx
-0B45  2C 80       sub al,80h
-0B47  98          cbw
-0B48  BA 4D 00    mov dx,4dh
-0B4B  F7 EA       imul dx
-0B4D  05 05 00    add ax,5h
-0B50  88 E1       mov cl,ah
-0B52  5A          pop dx
-0B53  58          pop ax
-0B54  80 F9 D9    cmp cl,0d9h
-0B57  74 03       je 0b5ch
-0B59  E9 02 00    jmp 0b5eh
-0B5C  FE C1       inc cl
-0B5E  51          push cx
-0B5F  F6 D9       neg cl
-0B61  E8 44 FF    call 0aa8h
-0B64  59          pop cx
-0B65  3C 81       cmp al,81h
-0B67  72 03       jb 0b6ch
-0B69  E9 05 00    jmp 0b71h
-0B6C  E8 FA FE    call 0a69h
-0B6F  FE C9       dec cl
-0B71  51          push cx
-0B72  80 CE 80    or dh,80h
-0B75  B1 84       mov cl,84h
-0B77  28 C1       sub cl,al
-0B79  B0 00       mov al,0h
-0B7B  80 F9 00    cmp cl,0h
-0B7E  75 03       jne 0b83h
-0B80  E9 0D 00    jmp 0b90h
-0B83  D1 EA       shr dx,1h
-0B85  D1 DB       rcr bx,1h
-0B87  D0 DC       rcr ah,1h
-0B89  FE C9       dec cl
-0B8B  74 03       je 0b90h
-0B8D  E9 F3 FF    jmp 0b83h
-0B90  BE BC 13    mov si,13bch
-0B93  88 F5       mov ch,dh
-0B95  B1 04       mov cl,4h
-0B97  D2 ED       shr ch,cl
-0B99  80 C5 30    add ch,30h
-0B9C  88 2C       mov byte ptr [si],ch
-0B9E  80 E6 0F    and dh,0fh
-0BA1  52          push dx
-0BA2  53          push bx
-0BA3  50          push ax
-0BA4  D1 E0       shl ax,1h
-0BA6  D1 D3       rcl bx,1h
-0BA8  D1 D2       rcl dx,1h
-0BAA  D1 E0       shl ax,1h
-0BAC  D1 D3       rcl bx,1h
-0BAE  D1 D2       rcl dx,1h
-0BB0  59          pop cx
-0BB1  03 C1       add ax,cx
-0BB3  59          pop cx
-0BB4  13 D9       adc bx,cx
-0BB6  59          pop cx
-0BB7  13 D1       adc dx,cx
-0BB9  D1 E0       shl ax,1h
-0BBB  D1 D3       rcl bx,1h
-0BBD  D1 D2       rcl dx,1h
-0BBF  46          inc si
-0BC0  81 FE C8 13 cmp si,13c8h
-0BC4  74 03       je 0bc9h
-0BC6  E9 CA FF    jmp 0b93h
-0BC9  59          pop cx
-0BCA  C3          ret
-0BCB  30 E4       xor ah,ah
-0BCD  BB BC 13    mov bx,13bch
-0BD0  03 D8       add bx,ax
-0BD2  80 3F 35    cmp byte ptr [bx],35h
-0BD5  C6 07 00    mov byte ptr [bx],0h
-0BD8  73 03       jnb 0bddh
-0BDA  E9 21 00    jmp 0bfeh
-0BDD  FE C8       dec al
-0BDF  79 03       jns 0be4h
-0BE1  E9 11 00    jmp 0bf5h
-0BE4  4B          dec bx
-0BE5  FE 07       inc byte ptr [bx]
-0BE7  80 3F 3A    cmp byte ptr [bx],3ah
-0BEA  73 03       jnb 0befh
-0BEC  E9 0F 00    jmp 0bfeh
-0BEF  C6 07 00    mov byte ptr [bx],0h
-0BF2  E9 E8 FF    jmp 0bddh
-0BF5  C6 07 31    mov byte ptr [bx],31h
-0BF8  C6 47 01 00 mov byte ptr [bx+1h],0h
-0BFC  FE C1       inc cl
-0BFE  C3          ret
-0BFF  8A 04       mov al,byte ptr [si]
-0C01  3C 00       cmp al,0h
-0C03  75 03       jne 0c08h
-0C05  E9 04 00    jmp 0c0ch
-0C08  46          inc si
-0C09  E9 02 00    jmp 0c0eh
-0C0C  B0 30       mov al,30h
-0C0E  88 07       mov byte ptr [bx],al
-0C10  43          inc bx
-0C11  C3          ret
-0C12  53          push bx
-0C13  81 FA 19 00 cmp dx,19h
-0C17  73 03       jnb 0c1ch
-0C19  E9 3F 00    jmp 0c5bh
-0C1C  89 C8       mov ax,cx
-0C1E  80 FD 00    cmp ch,0h
-0C21  75 03       jne 0c26h
-0C23  E9 10 00    jmp 0c36h
-0C26  F6 C5 80    test ch,80h
-0C29  75 03       jne 0c2eh
-0C2B  E9 05 00    jmp 0c33h
-0C2E  31 C0       xor ax,ax
-0C30  E9 03 00    jmp 0c36h
-0C33  B8 FF 00    mov ax,0ffh
-0C36  B2 07       mov dl,7h
-0C38  F6 45 05 80 test byte ptr [di+5h],80h
-0C3C  75 03       jne 0c41h
-0C3E  E9 02 00    jmp 0c43h
-0C41  FE C2       inc dl
-0C43  2A C2       sub al,dl
-0C45  72 03       jb 0c4ah
-0C47  E9 02 00    jmp 0c4ch
-0C4A  B0 00       mov al,0h
-0C4C  3C 09       cmp al,9h
-0C4E  73 03       jnb 0c53h
-0C50  E9 02 00    jmp 0c55h
-0C53  B0 09       mov al,9h
-0C55  FE C0       inc al
-0C57  88 C2       mov dl,al
-0C59  88 C6       mov dh,al
-0C5B  52          push dx
-0C5C  E8 BA FE    call 0b19h
-0C5F  5A          pop dx
-0C60  8A C2       mov al,dl
-0C62  FE C0       inc al
-0C64  80 FE 00    cmp dh,0h
-0C67  74 03       je 0c6ch
-0C69  E9 18 00    jmp 0c84h
-0C6C  00 C8       add al,cl
-0C6E  78 03       js 0c73h
-0C70  E9 08 00    jmp 0c7bh
-0C73  C6 06 BC 13 00 mov byte ptr [13bch],0h
-0C78  E9 0C 00    jmp 0c87h
-0C7B  3C 0C       cmp al,0ch
-0C7D  73 03       jnb 0c82h
-0C7F  E9 02 00    jmp 0c84h
-0C82  B0 0B       mov al,0bh
-0C84  E8 44 FF    call 0bcbh
-0C87  5B          pop bx
-0C88  BE BC 13    mov si,13bch
-0C8B  F6 C5 80    test ch,80h
-0C8E  75 03       jne 0c93h
-0C90  E9 05 00    jmp 0c98h
-0C93  B0 2D       mov al,2dh
-0C95  E8 76 FF    call 0c0eh
-0C98  88 CD       mov ch,cl
-0C9A  80 FE 00    cmp dh,0h
-0C9D  75 03       jne 0ca2h
-0C9F  E9 02 00    jmp 0ca4h
-0CA2  B5 00       mov ch,0h
-0CA4  80 FD 00    cmp ch,0h
-0CA7  78 03       js 0cach
-0CA9  E9 06 00    jmp 0cb2h
-0CAC  E8 5D FF    call 0c0ch
-0CAF  E9 0A 00    jmp 0cbch
-0CB2  E8 4A FF    call 0bffh
-0CB5  FE CD       dec ch
-0CB7  78 03       js 0cbch
-0CB9  E9 F6 FF    jmp 0cb2h
-0CBC  80 FA 00    cmp dl,0h
-0CBF  75 03       jne 0cc4h
-0CC1  E9 23 00    jmp 0ce7h
-0CC4  B0 2E       mov al,2eh
-0CC6  E8 45 FF    call 0c0eh
-0CC9  FE C5       inc ch
-0CCB  75 03       jne 0cd0h
-0CCD  E9 0A 00    jmp 0cdah
-0CD0  E8 39 FF    call 0c0ch
-0CD3  FE CA       dec dl
-0CD5  74 03       je 0cdah
-0CD7  E9 EF FF    jmp 0cc9h
-0CDA  FE CA       dec dl
-0CDC  79 03       jns 0ce1h
-0CDE  E9 06 00    jmp 0ce7h
-0CE1  E8 1B FF    call 0bffh
-0CE4  E9 F3 FF    jmp 0cdah
-0CE7  80 FE 00    cmp dh,0h
-0CEA  74 03       je 0cefh
-0CEC  E9 01 00    jmp 0cf0h
-0CEF  C3          ret
-0CF0  B0 45       mov al,45h
-0CF2  E8 19 FF    call 0c0eh
-0CF5  B0 2B       mov al,2bh
-0CF7  80 F9 00    cmp cl,0h
-0CFA  78 03       js 0cffh
-0CFC  E9 04 00    jmp 0d03h
-0CFF  F6 D9       neg cl
-0D01  B0 2D       mov al,2dh
-0D03  E8 08 FF    call 0c0eh
-0D06  B0 2F       mov al,2fh
-0D08  FE C0       inc al
-0D0A  80 E9 0A    sub cl,0ah
-0D0D  72 03       jb 0d12h
-0D0F  E9 F6 FF    jmp 0d08h
-0D12  E8 F9 FE    call 0c0eh
-0D15  80 C1 3A    add cl,3ah
-0D18  88 C8       mov al,cl
-0D1A  E9 F1 FE    jmp 0c0eh
-0D1D  8A 0F       mov cl,byte ptr [bx]
-0D1F  80 F9 2D    cmp cl,2dh
-0D22  74 03       je 0d27h
-0D24  E9 01 00    jmp 0d28h
-0D27  43          inc bx
-0D28  51          push cx
-0D29  E8 1F 00    call 0d4bh
-0D2C  59          pop cx
-0D2D  73 03       jnb 0d32h
-0D2F  E9 17 00    jmp 0d49h
-0D32  80 F9 2D    cmp cl,2dh
-0D35  74 03       je 0d3ah
-0D37  E9 0D 00    jmp 0d47h
-0D3A  8A 05       mov al,byte ptr [di]
-0D3C  3C 00       cmp al,0h
-0D3E  75 03       jne 0d43h
-0D40  E9 04 00    jmp 0d47h
-0D43  80 75 05 80 xor byte ptr [di+5h],80h
-0D47  F8          clc
-0D48  C3          ret
-0D49  F9          stc
-0D4A  C3          ret
-0D4B  89 DE       mov si,bx
-0D4D  31 C0       xor ax,ax
-0D4F  31 DB       xor bx,bx
-0D51  31 D2       xor dx,dx
-0D53  31 C9       xor cx,cx
-0D55  C6 06 C9 13 00 mov byte ptr [13c9h],0h
-0D5A  8A 0C       mov cl,byte ptr [si]
-0D5C  80 F9 61    cmp cl,61h
-0D5F  73 03       jnb 0d64h
-0D61  E9 08 00    jmp 0d6ch
-0D64  80 F9 7A    cmp cl,7ah
-0D67  77 03       jnbe 0d6ch
-0D69  80 E9 20    sub cl,20h
-0D6C  E8 C8 00    call 0e37h
-0D6F  73 03       jnb 0d74h
-0D71  E9 3A 00    jmp 0daeh
-0D74  E8 F2 FC    call 0a69h
-0D77  73 03       jnb 0d7ch
-0D79  E9 B5 00    jmp 0e31h
-0D7C  57          push di
-0D7D  56          push si
-0D7E  51          push cx
-0D7F  52          push dx
-0D80  53          push bx
-0D81  50          push ax
-0D82  88 C8       mov al,cl
-0D84  30 E4       xor ah,ah
-0D86  E8 57 F6    call 3e0h
-0D89  89 C1       mov cx,ax
-0D8B  89 DE       mov si,bx
-0D8D  89 D7       mov di,dx
-0D8F  58          pop ax
-0D90  5B          pop bx
-0D91  5A          pop dx
-0D92  C7 06 AB 13 00 00 mov word ptr [13abh],0h
-0D98  E8 F5 F6    call 490h
-0D9B  59          pop cx
-0D9C  5E          pop si
-0D9D  5F          pop di
-0D9E  F6 C5 40    test ch,40h
-0DA1  75 03       jne 0da6h
-0DA3  E9 04 00    jmp 0daah
-0DA6  FE 0E C9 13 dec byte ptr [13c9h]
-0DAA  46          inc si
-0DAB  E9 AC FF    jmp 0d5ah
-0DAE  80 F9 2E    cmp cl,2eh
-0DB1  74 03       je 0db6h
-0DB3  E9 0E 00    jmp 0dc4h
-0DB6  F6 C5 40    test ch,40h
-0DB9  74 03       je 0dbeh
-0DBB  E9 73 00    jmp 0e31h
-0DBE  80 CD 40    or ch,40h
-0DC1  E9 E6 FF    jmp 0daah
-0DC4  80 F9 45    cmp cl,45h
-0DC7  8A 0E C9 13 mov cl,byte ptr [13c9h]
-0DCB  74 03       je 0dd0h
-0DCD  E9 4D 00    jmp 0e1dh
-0DD0  E8 2A FD    call 0afdh
-0DD3  73 03       jnb 0dd8h
-0DD5  E9 59 00    jmp 0e31h
-0DD8  46          inc si
-0DD9  8A 0C       mov cl,byte ptr [si]
-0DDB  80 F9 2B    cmp cl,2bh
-0DDE  75 03       jne 0de3h
-0DE0  E9 0B 00    jmp 0deeh
-0DE3  80 F9 2D    cmp cl,2dh
-0DE6  74 03       je 0debh
-0DE8  E9 04 00    jmp 0defh
-0DEB  80 CD 20    or ch,20h
-0DEE  46          inc si
-0DEF  E8 43 00    call 0e35h
-0DF2  73 03       jnb 0df7h
-0DF4  E9 3A 00    jmp 0e31h
-0DF7  50          push ax
-0DF8  88 C8       mov al,cl
-0DFA  46          inc si
-0DFB  E8 37 00    call 0e35h
-0DFE  73 03       jnb 0e03h
-0E00  E9 0D 00    jmp 0e10h
-0E03  88 C4       mov ah,al
-0E05  D0 E0       shl al,1h
-0E07  D0 E0       shl al,1h
-0E09  00 E0       add al,ah
-0E0B  D0 E0       shl al,1h
-0E0D  00 C8       add al,cl
-0E0F  46          inc si
-0E10  88 C1       mov cl,al
-0E12  58          pop ax
-0E13  F6 C5 20    test ch,20h
-0E16  75 03       jne 0e1bh
-0E18  E9 02 00    jmp 0e1dh
-0E1B  F6 D9       neg cl
-0E1D  E8 DD FC    call 0afdh
-0E20  73 03       jnb 0e25h
-0E22  E9 0C 00    jmp 0e31h
-0E25  89 05       mov word ptr [di],ax
-0E27  89 5D 02    mov word ptr [di+2h],bx
-0E2A  89 55 04    mov word ptr [di+4h],dx
-0E2D  F8          clc
-0E2E  E9 01 00    jmp 0e32h
-0E31  F9          stc
-0E32  89 F3       mov bx,si
-0E34  C3          ret
-0E35  8A 0C       mov cl,byte ptr [si]
-0E37  80 F9 30    cmp cl,30h
-0E3A  73 03       jnb 0e3fh
-0E3C  E9 0C 00    jmp 0e4bh
-0E3F  80 F9 3A    cmp cl,3ah
-0E42  F5          cmc
-0E43  73 03       jnb 0e48h
-0E45  E9 03 00    jmp 0e4bh
-0E48  80 E9 30    sub cl,30h
-0E4B  C3          ret
-0E4C  55          push bp
-0E4D  8B EC       mov bp,sp
-0E4F  53          push bx
-0E50  52          push dx
-0E51  56          push si
-0E52  57          push di
-0E53  8B 46 06    mov ax,word ptr [bp+6h]
-0E56  A3 48 14    mov word ptr [1448h],ax
-0E59  8B 56 04    mov dx,word ptr [bp+4h]
-0E5C  8B 4E 06    mov cx,word ptr [bp+6h]
-0E5F  8B 7E 08    mov di,word ptr [bp+8h]
-0E62  BB 06 14    mov bx,1406h
-0E65  E8 AA FD    call 0c12h
-0E68  89 D8       mov ax,bx
-0E6A  BB 06 14    mov bx,1406h
-0E6D  2B C3       sub ax,bx
-0E6F  A3 46 14    mov word ptr [1446h],ax
-0E72  8B 06 48 14 mov ax,word ptr [1448h]
-0E76  8B 16 46 14 mov dx,word ptr [1446h]
-0E7A  2B C2       sub ax,dx
-0E7C  83 F8 00    cmp ax,0h
-0E7F  7D 02       jnl 0e83h
-0E81  31 C0       xor ax,ax
-0E83  A3 4A 14    mov word ptr [144ah],ax
-0E86  8B 0E 4A 14 mov cx,word ptr [144ah]
-0E8A  E3 08       jcxz 0e94h
-0E8C  B0 20       mov al,20h
-0E8E  B4 02       mov ah,2h
-0E90  CD 21       int 21h
-0E92  E2 F8       loop 0e8ch
-0E94  BE 06 14    mov si,1406h
-0E97  8B 0E 46 14 mov cx,word ptr [1446h]
-0E9B  E3 09       jcxz 0ea6h
-0E9D  8A 04       mov al,byte ptr [si]
-0E9F  B4 02       mov ah,2h
-0EA1  CD 21       int 21h
-0EA3  46          inc si
-0EA4  E2 F7       loop 0e9dh
-0EA6  5F          pop di
-0EA7  5E          pop si
-0EA8  5A          pop dx
-0EA9  5B          pop bx
-0EAA  89 EC       mov sp,bp
-0EAC  5D          pop bp
-0EAD  C3          ret
-0EAE  55          push bp
-0EAF  8B EC       mov bp,sp
-0EB1  53          push bx
-0EB2  51          push cx
-0EB3  52          push dx
-0EB4  56          push si
-0EB5  57          push di
-0EB6  8B 46 04    mov ax,word ptr [bp+4h]
-0EB9  88 C6       mov dh,al
-0EBB  8B 76 0A    mov si,word ptr [bp+0ah]
-0EBE  8B 7E 08    mov di,word ptr [bp+8h]
-0EC1  8B 5E 06    mov bx,word ptr [bp+6h]
-0EC4  80 FE 00    cmp dh,0h
-0EC7  74 23       je 0eech
-0EC9  8A 04       mov al,byte ptr [si]
-0ECB  8A 15       mov dl,byte ptr [di]
-0ECD  80 FC 00    cmp ah,0h
-0ED0  74 0B       je 0eddh
-0ED2  80 FC 01    cmp ah,1h
-0ED5  74 0A       je 0ee1h
-0ED7  F6 D2       not dl
-0ED9  20 D0       and al,dl
-0EDB  EB 06       jmp 0ee3h
-0EDD  20 D0       and al,dl
-0EDF  EB 02       jmp 0ee3h
-0EE1  08 D0       or al,dl
-0EE3  88 07       mov byte ptr [bx],al
-0EE5  46          inc si
-0EE6  47          inc di
-0EE7  43          inc bx
-0EE8  FE CE       dec dh
-0EEA  75 DD       jne 0ec9h
-0EEC  5F          pop di
-0EED  5E          pop si
-0EEE  5A          pop dx
-0EEF  59          pop cx
-0EF0  5B          pop bx
-0EF1  89 EC       mov sp,bp
-0EF3  5D          pop bp
-0EF4  C3          ret
-0EF5  55          push bp
-0EF6  8B EC       mov bp,sp
-0EF8  53          push bx
-0EF9  51          push cx
-0EFA  52          push dx
-0EFB  56          push si
-0EFC  57          push di
-0EFD  8B 4E 04    mov cx,word ptr [bp+4h]
-0F00  8B 76 08    mov si,word ptr [bp+8h]
-0F03  8B 7E 06    mov di,word ptr [bp+6h]
-0F06  B4 07       mov ah,7h
-0F08  E3 2B       jcxz 0f35h
-0F0A  8A 04       mov al,byte ptr [si]
-0F0C  8A 15       mov dl,byte ptr [di]
-0F0E  88 C3       mov bl,al
-0F10  88 D6       mov dh,dl
-0F12  3A C2       cmp al,dl
-0F14  74 03       je 0f19h
-0F16  80 E4 FE    and ah,0feh
-0F19  F6 D2       not dl
-0F1B  20 D0       and al,dl
-0F1D  3C 00       cmp al,0h
-0F1F  74 03       je 0f24h
-0F21  80 E4 FD    and ah,0fdh
-0F24  8A C3       mov al,bl
-0F26  F6 D0       not al
-0F28  20 F0       and al,dh
-0F2A  3C 00       cmp al,0h
-0F2C  74 03       je 0f31h
-0F2E  80 E4 FB    and ah,0fbh
-0F31  46          inc si
-0F32  47          inc di
-0F33  E2 D5       loop 0f0ah
-0F35  F6 C4 01    test ah,1h
-0F38  74 03       je 0f3dh
-0F3A  80 E4 F9    and ah,0f9h
-0F3D  88 E0       mov al,ah
-0F3F  B4 00       mov ah,0h
-0F41  5F          pop di
-0F42  5E          pop si
-0F43  5A          pop dx
-0F44  59          pop cx
-0F45  5B          pop bx
-0F46  89 EC       mov sp,bp
-0F48  5D          pop bp
-0F49  C3          ret
-0F4A  55          push bp
-0F4B  8B EC       mov bp,sp
-0F4D  53          push bx
-0F4E  51          push cx
-0F4F  56          push si
-0F50  8B 4E 04    mov cx,word ptr [bp+4h]
-0F53  8B 76 06    mov si,word ptr [bp+6h]
-0F56  8B 5E 08    mov bx,word ptr [bp+8h]
-0F59  E3 08       jcxz 0f63h
-0F5B  8A 04       mov al,byte ptr [si]
-0F5D  88 07       mov byte ptr [bx],al
-0F5F  46          inc si
-0F60  43          inc bx
-0F61  E2 F8       loop 0f5bh
-0F63  5E          pop si
-0F64  59          pop cx
-0F65  5B          pop bx
-0F66  89 EC       mov sp,bp
-0F68  5D          pop bp
-0F69  C3          ret
-0F6A  55          push bp
-0F6B  8B EC       mov bp,sp
-0F6D  53          push bx
-0F6E  51          push cx
-0F6F  52          push dx
-0F70  56          push si
-0F71  57          push di
-0F72  8B 7E 04    mov di,word ptr [bp+4h]
-0F75  B8 FF FF    mov ax,0ffffh
-0F78  89 05       mov word ptr [di],ax
-0F7A  31 C0       xor ax,ax
-0F7C  89 45 02    mov word ptr [di+2h],ax
-0F7F  8B 76 06    mov si,word ptr [bp+6h]
-0F82  8A 04       mov al,byte ptr [si]
-0F84  46          inc si
-0F85  3C 7F       cmp al,7fh
-0F87  76 02       jbe 0f8bh
-0F89  B0 7F       mov al,7fh
-0F8B  88 C1       mov cl,al
-0F8D  30 ED       xor ch,ch
-0F8F  83 C7 04    add di,4h
-0F92  E3 08       jcxz 0f9ch
-0F94  8A 04       mov al,byte ptr [si]
-0F96  88 05       mov byte ptr [di],al
-0F98  46          inc si
-0F99  47          inc di
-0F9A  E2 F8       loop 0f94h
-0F9C  C6 05 00    mov byte ptr [di],0h
-0F9F  5F          pop di
-0FA0  5E          pop si
-0FA1  5A          pop dx
-0FA2  59          pop cx
-0FA3  5B          pop bx
-0FA4  89 EC       mov sp,bp
-0FA6  5D          pop bp
-0FA7  C3          ret
-0FA8  55          push bp
-0FA9  8B EC       mov bp,sp
-0FAB  53          push bx
-0FAC  51          push cx
-0FAD  52          push dx
-0FAE  57          push di
-0FAF  8B 7E 04    mov di,word ptr [bp+4h]
-0FB2  8D 55 04    lea dx,[di+4h]
-0FB5  B8 00 3D    mov ax,3d00h
-0FB8  CD 21       int 21h
-0FBA  72 0F       jb 0fcbh
-0FBC  89 05       mov word ptr [di],ax
-0FBE  B8 01 00    mov ax,1h
-0FC1  89 45 02    mov word ptr [di+2h],ax
-0FC4  31 C0       xor ax,ax
-0FC6  A3 50 14    mov word ptr [1450h],ax
-0FC9  EB 10       jmp 0fdbh
-0FCB  89 C3       mov bx,ax
-0FCD  B8 FF FF    mov ax,0ffffh
-0FD0  89 05       mov word ptr [di],ax
-0FD2  31 C0       xor ax,ax
-0FD4  89 45 02    mov word ptr [di+2h],ax
-0FD7  89 1E 50 14 mov word ptr [1450h],bx
-0FDB  5F          pop di
-0FDC  5A          pop dx
-0FDD  59          pop cx
-0FDE  5B          pop bx
-0FDF  89 EC       mov sp,bp
-0FE1  5D          pop bp
-0FE2  C3          ret
-0FE3  55          push bp
-0FE4  8B EC       mov bp,sp
-0FE6  53          push bx
-0FE7  51          push cx
-0FE8  52          push dx
-0FE9  57          push di
-0FEA  8B 7E 04    mov di,word ptr [bp+4h]
-0FED  8D 55 04    lea dx,[di+4h]
-0FF0  31 C9       xor cx,cx
-0FF2  B8 00 3C    mov ax,3c00h
-0FF5  CD 21       int 21h
-0FF7  72 0F       jb 1008h
-0FF9  89 05       mov word ptr [di],ax
-0FFB  B8 02 00    mov ax,2h
-0FFE  89 45 02    mov word ptr [di+2h],ax
-1001  31 C0       xor ax,ax
-1003  A3 50 14    mov word ptr [1450h],ax
-1006  EB 10       jmp 1018h
-1008  89 C3       mov bx,ax
-100A  B8 FF FF    mov ax,0ffffh
-100D  89 05       mov word ptr [di],ax
-100F  31 C0       xor ax,ax
-1011  89 45 02    mov word ptr [di+2h],ax
-1014  89 1E 50 14 mov word ptr [1450h],bx
-1018  5F          pop di
-1019  5A          pop dx
-101A  59          pop cx
-101B  5B          pop bx
-101C  89 EC       mov sp,bp
-101E  5D          pop bp
-101F  C3          ret
-1020  55          push bp
-1021  8B EC       mov bp,sp
-1023  53          push bx
-1024  52          push dx
-1025  57          push di
-1026  8B 7E 04    mov di,word ptr [bp+4h]
-1029  8B 05       mov ax,word ptr [di]
-102B  3D FF FF    cmp ax,0ffffh
-102E  74 16       je 1046h
-1030  89 C3       mov bx,ax
-1032  B4 3E       mov ah,3eh
-1034  CD 21       int 21h
-1036  89 C3       mov bx,ax
-1038  B8 FF FF    mov ax,0ffffh
-103B  89 05       mov word ptr [di],ax
-103D  31 C0       xor ax,ax
-103F  89 45 02    mov word ptr [di+2h],ax
-1042  89 1E 50 14 mov word ptr [1450h],bx
-1046  5F          pop di
-1047  5A          pop dx
-1048  5B          pop bx
-1049  89 EC       mov sp,bp
-104B  5D          pop bp
-104C  C3          ret
-104D  8B 06 50 14 mov ax,word ptr [1450h]
-1051  C7 06 50 14 00 00 mov word ptr [1450h],0h
-1057  C3          ret
-1058  A3 50 14    mov word ptr [1450h],ax
-105B  C3          ret
-105C  55          push bp
-105D  8B EC       mov bp,sp
-105F  53          push bx
-1060  51          push cx
-1061  52          push dx
-1062  8B 1E 52 14 mov bx,word ptr [1452h]
-1066  8B 56 04    mov dx,word ptr [bp+4h]
-1069  89 1A       mov word ptr [bp+si],bx
-106B  8B 4E 06    mov cx,word ptr [bp+6h]
-106E  89 D8       mov ax,bx
-1070  03 C1       add ax,cx
-1072  A3 52 14    mov word ptr [1452h],ax
-1075  5A          pop dx
-1076  59          pop cx
-1077  5B          pop bx
-1078  89 EC       mov sp,bp
-107A  5D          pop bp
-107B  C3          ret
-107C  55          push bp
-107D  8B EC       mov bp,sp
-107F  53          push bx
-1080  51          push cx
-1081  52          push dx
-1082  56          push si
-1083  57          push di
-1084  A0 54 14    mov al,byte ptr [1454h]
-1087  3C 00       cmp al,0h
-1089  75 42       jne 10cdh
-108B  8B 7E 04    mov di,word ptr [bp+4h]
-108E  8B 05       mov ax,word ptr [di]
-1090  3D FF FF    cmp ax,0ffffh
-1093  74 38       je 10cdh
-1095  89 C3       mov bx,ax
-1097  31 C9       xor cx,cx
-1099  31 D2       xor dx,dx
-109B  B8 01 42    mov ax,4201h
-109E  CD 21       int 21h
-10A0  8B F0       mov si,ax
-10A2  89 D7       mov di,dx
-10A4  31 C9       xor cx,cx
-10A6  31 D2       xor dx,dx
-10A8  B8 02 42    mov ax,4202h
-10AB  CD 21       int 21h
-10AD  39 FA       cmp dx,di
-10AF  72 08       jb 10b9h
-10B1  77 0B       jnbe 10beh
-10B3  39 F0       cmp ax,si
-10B5  72 02       jb 10b9h
-10B7  77 05       jnbe 10beh
-10B9  B8 01 00    mov ax,1h
-10BC  EB 02       jmp 10c0h
-10BE  31 C0       xor ax,ax
-10C0  50          push ax
-10C1  89 F9       mov cx,di
-10C3  89 F2       mov dx,si
-10C5  B8 00 42    mov ax,4200h
-10C8  CD 21       int 21h
-10CA  58          pop ax
-10CB  EB 03       jmp 10d0h
-10CD  B8 01 00    mov ax,1h
-10D0  5F          pop di
-10D1  5E          pop si
-10D2  5A          pop dx
-10D3  59          pop cx
-10D4  5B          pop bx
-10D5  89 EC       mov sp,bp
-10D7  5D          pop bp
-10D8  C3          ret
-10D9  55          push bp
-10DA  8B EC       mov bp,sp
-10DC  53          push bx
-10DD  51          push cx
-10DE  52          push dx
-10DF  56          push si
-10E0  57          push di
-10E1  8B 7E 06    mov di,word ptr [bp+6h]
-10E4  C6 05 00    mov byte ptr [di],0h
-10E7  47          inc di
-10E8  31 C9       xor cx,cx
-10EA  8B 76 04    mov si,word ptr [bp+4h]
-10ED  8B 04       mov ax,word ptr [si]
-10EF  89 C3       mov bx,ax
-10F1  BA 55 14    mov dx,1455h
-10F4  B9 01 00    mov cx,1h
-10F7  B4 3F       mov ah,3fh
-10F9  CD 21       int 21h
-10FB  83 F8 00    cmp ax,0h
-10FE  74 1C       je 111ch
-1100  A0 55 14    mov al,byte ptr [1455h]
-1103  3C 1A       cmp al,1ah
-1105  74 1C       je 1123h
-1107  3C 0D       cmp al,0dh
-1109  74 E2       je 10edh
-110B  3C 0A       cmp al,0ah
-110D  74 19       je 1128h
-110F  8B 46 08    mov ax,word ptr [bp+8h]
-1112  39 C8       cmp ax,cx
-1114  76 D7       jbe 10edh
-1116  88 05       mov byte ptr [di],al
-1118  47          inc di
-1119  41          inc cx
-111A  EB D1       jmp 10edh
-111C  C6 06 54 14 01 mov byte ptr [1454h],1h
-1121  EB 05       jmp 1128h
-1123  C6 06 54 14 01 mov byte ptr [1454h],1h
-1128  8B 5E 06    mov bx,word ptr [bp+6h]
-112B  88 0F       mov byte ptr [bx],cl
-112D  31 C0       xor ax,ax
-112F  A3 50 14    mov word ptr [1450h],ax
-1132  5F          pop di
-1133  5E          pop si
-1134  5A          pop dx
-1135  59          pop cx
-1136  5B          pop bx
-1137  89 EC       mov sp,bp
-1139  5D          pop bp
-113A  C3          ret
-113B  55          push bp
-113C  8B EC       mov bp,sp
-113E  53          push bx
-113F  51          push cx
-1140  52          push dx
-1141  56          push si
-1142  57          push di
-1143  8B 7E 04    mov di,word ptr [bp+4h]
-1146  C6 05 00    mov byte ptr [di],0h
-1149  47          inc di
-114A  8B 46 06    mov ax,word ptr [bp+6h]
-114D  C6 06 55 14 00 mov byte ptr [1455h],0h
-1152  83 F8 00    cmp ax,0h
-1155  7D 07       jnl 115eh
-1157  C6 06 55 14 01 mov byte ptr [1455h],1h
-115C  F7 D8       neg ax
-115E  B9 0A 00    mov cx,0ah
-1161  BB 95 13    mov bx,1395h
-1164  89 DE       mov si,bx
-1166  31 D2       xor dx,dx
-1168  F7 F1       div ax,cx
-116A  80 C2 30    add dl,30h
-116D  4E          dec si
-116E  88 14       mov byte ptr [si],dl
-1170  83 F8 00    cmp ax,0h
-1173  75 F1       jne 1166h
-1175  A0 55 14    mov al,byte ptr [1455h]
-1178  3C 00       cmp al,0h
-117A  74 04       je 1180h
-117C  C6 05 2D    mov byte ptr [di],2dh
-117F  47          inc di
-1180  89 D9       mov cx,bx
-1182  29 F1       sub cx,si
-1184  A0 55 14    mov al,byte ptr [1455h]
-1187  3C 00       cmp al,0h
-1189  74 01       je 118ch
-118B  41          inc cx
-118C  8A D1       mov dl,cl
-118E  8A 04       mov al,byte ptr [si]
-1190  88 05       mov byte ptr [di],al
-1192  46          inc si
-1193  47          inc di
-1194  E2 F8       loop 118eh
-1196  8B 5E 04    mov bx,word ptr [bp+4h]
-1199  88 17       mov byte ptr [bx],dl
-119B  5F          pop di
-119C  5E          pop si
-119D  5A          pop dx
-119E  59          pop cx
-119F  5B          pop bx
-11A0  89 EC       mov sp,bp
-11A2  5D          pop bp
-11A3  C3          ret
-11A4  55          push bp
-11A5  8B EC       mov bp,sp
-11A7  53          push bx
-11A8  51          push cx
-11A9  52          push dx
-11AA  56          push si
-11AB  57          push di
-11AC  8B 7E 04    mov di,word ptr [bp+4h]
-11AF  8A 05       mov al,byte ptr [di]
-11B1  88 C1       mov cl,al
-11B3  30 ED       xor ch,ch
-11B5  47          inc di
-11B6  89 FE       mov si,di
-11B8  31 DB       xor bx,bx
-11BA  C6 06 56 14 00 mov byte ptr [1456h],0h
-11BF  E3 35       jcxz 11f6h
-11C1  8A 05       mov al,byte ptr [di]
-11C3  3C 2D       cmp al,2dh
-11C5  74 02       je 11c9h
-11C7  EB 09       jmp 11d2h
-11C9  C6 06 56 14 01 mov byte ptr [1456h],1h
-11CE  47          inc di
-11CF  49          dec cx
-11D0  E3 46       jcxz 1218h
-11D2  8A 05       mov al,byte ptr [di]
-11D4  3C 30       cmp al,30h
-11D6  72 40       jb 1218h
-11D8  3C 39       cmp al,39h
-11DA  77 3C       jnbe 1218h
-11DC  2C 30       sub al,30h
-11DE  30 E4       xor ah,ah
-11E0  A3 57 14    mov word ptr [1457h],ax
-11E3  89 D8       mov ax,bx
-11E5  BB 0A 00    mov bx,0ah
-11E8  F7 E3       mul bx
-11EA  03 06 57 14 add ax,word ptr [1457h]
-11EE  89 C3       mov bx,ax
-11F0  47          inc di
-11F1  49          dec cx
-11F2  E3 0B       jcxz 11ffh
-11F4  EB DC       jmp 11d2h
-11F6  8B 5E 08    mov bx,word ptr [bp+8h]
-11F9  31 C0       xor ax,ax
-11FB  89 07       mov word ptr [bx],ax
-11FD  EB 23       jmp 1222h
-11FF  A0 56 14    mov al,byte ptr [1456h]
-1202  3C 00       cmp al,0h
-1204  74 02       je 1208h
-1206  F7 DB       neg bx
-1208  89 D8       mov ax,bx
-120A  8B 5E 06    mov bx,word ptr [bp+6h]
-120D  89 07       mov word ptr [bx],ax
-120F  8B 5E 08    mov bx,word ptr [bp+8h]
-1212  31 C0       xor ax,ax
-1214  89 07       mov word ptr [bx],ax
-1216  EB 0A       jmp 1222h
-1218  8B C7       mov ax,di
-121A  2B C6       sub ax,si
-121C  40          inc ax
-121D  8B 5E 08    mov bx,word ptr [bp+8h]
-1220  89 07       mov word ptr [bx],ax
-1222  5F          pop di
-1223  5E          pop si
-1224  5A          pop dx
-1225  59          pop cx
-1226  5B          pop bx
-1227  89 EC       mov sp,bp
-1229  5D          pop bp
-122A  C3          ret
-122B  55          push bp
-122C  8B EC       mov bp,sp
-122E  53          push bx
-122F  51          push cx
-1230  52          push dx
-1231  56          push si
-1232  57          push di
-1233  8B 76 04    mov si,word ptr [bp+4h]
-1236  8A 04       mov al,byte ptr [si]
-1238  30 E4       xor ah,ah
-123A  89 C1       mov cx,ax
-123C  46          inc si
-123D  BF 59 14    mov di,1459h
-1240  E3 08       jcxz 124ah
-1242  8A 04       mov al,byte ptr [si]
-1244  88 05       mov byte ptr [di],al
-1246  46          inc si
-1247  47          inc di
-1248  E2 F8       loop 1242h
-124A  31 C0       xor ax,ax
-124C  88 05       mov byte ptr [di],al
-124E  BB 59 14    mov bx,1459h
-1251  8B 7E 06    mov di,word ptr [bp+6h]
-1254  89 1E 4E 14 mov word ptr [144eh],bx
-1258  E8 C2 FA    call 0d1dh
-125B  72 1F       jb 127ch
-125D  89 D8       mov ax,bx
-125F  8B 16 4E 14 mov dx,word ptr [144eh]
-1263  2B C2       sub ax,dx
-1265  8B 76 04    mov si,word ptr [bp+4h]
-1268  8A 0C       mov cl,byte ptr [si]
-126A  30 ED       xor ch,ch
-126C  39 C8       cmp ax,cx
-126E  74 03       je 1273h
-1270  40          inc ax
-1271  EB 02       jmp 1275h
-1273  31 C0       xor ax,ax
-1275  8B 5E 08    mov bx,word ptr [bp+8h]
-1278  89 07       mov word ptr [bx],ax
-127A  EB 08       jmp 1284h
-127C  B8 01 00    mov ax,1h
-127F  8B 5E 08    mov bx,word ptr [bp+8h]
-1282  89 07       mov word ptr [bx],ax
-1284  5F          pop di
-1285  5E          pop si
-1286  5A          pop dx
-1287  59          pop cx
-1288  5B          pop bx
-1289  89 EC       mov sp,bp
-128B  5D          pop bp
-128C  C3          ret
+09C1  FF 76 04    push word ptr [bp+4h]
+09C4  8B 76 04    mov si,word ptr [bp+4h]
+09C7  8B 04       mov ax,word ptr [si]
+09C9  8B 4C 02    mov cx,word ptr [si+2h]
+09CC  89 CB       mov bx,cx
+09CE  8B 54 04    mov dx,word ptr [si+4h]
+09D1  A3 43 37    mov word ptr [3743h],ax
+09D4  89 1E 45 37 mov word ptr [3745h],bx
+09D8  89 16 47 37 mov word ptr [3747h],dx
+09DC  8B 06 43 37 mov ax,word ptr [3743h]
+09E0  A3 55 37    mov word ptr [3755h],ax
+09E3  8B 1E 45 37 mov bx,word ptr [3745h]
+09E7  89 1E 57 37 mov word ptr [3757h],bx
+09EB  8B 16 47 37 mov dx,word ptr [3747h]
+09EF  89 16 59 37 mov word ptr [3759h],dx
+09F3  8B 06 2F 36 mov ax,word ptr [362fh]
+09F7  A3 5B 37    mov word ptr [375bh],ax
+09FA  8B 1E 31 36 mov bx,word ptr [3631h]
+09FE  89 1E 5D 37 mov word ptr [375dh],bx
+0A02  8B 16 33 36 mov dx,word ptr [3633h]
+0A06  89 16 5F 37 mov word ptr [375fh],dx
+0A0A  BB 55 37    mov bx,3755h
+0A0D  53          push bx
+0A0E  E8 58 FC    call 669h
+0A11  83 C4 02    add sp,2h
+0A14  8B 06 55 37 mov ax,word ptr [3755h]
+0A18  A3 49 37    mov word ptr [3749h],ax
+0A1B  8B 1E 57 37 mov bx,word ptr [3757h]
+0A1F  89 1E 4B 37 mov word ptr [374bh],bx
+0A23  8B 16 59 37 mov dx,word ptr [3759h]
+0A27  89 16 4D 37 mov word ptr [374dh],dx
+0A2B  8B 06 B3 36 mov ax,word ptr [36b3h]
+0A2F  A3 4F 37    mov word ptr [374fh],ax
+0A32  8B 1E B5 36 mov bx,word ptr [36b5h]
+0A36  89 1E 51 37 mov word ptr [3751h],bx
+0A3A  8B 16 B7 36 mov dx,word ptr [36b7h]
+0A3E  89 16 53 37 mov word ptr [3753h],dx
+0A42  8B 06 4F 37 mov ax,word ptr [374fh]
+0A46  A3 55 37    mov word ptr [3755h],ax
+0A49  8B 1E 51 37 mov bx,word ptr [3751h]
+0A4D  89 1E 57 37 mov word ptr [3757h],bx
+0A51  8B 16 53 37 mov dx,word ptr [3753h]
+0A55  89 16 59 37 mov word ptr [3759h],dx
+0A59  8B 06 49 37 mov ax,word ptr [3749h]
+0A5D  A3 5B 37    mov word ptr [375bh],ax
+0A60  8B 1E 4B 37 mov bx,word ptr [374bh]
+0A64  89 1E 5D 37 mov word ptr [375dh],bx
+0A68  8B 16 4D 37 mov dx,word ptr [374dh]
+0A6C  89 16 5F 37 mov word ptr [375fh],dx
+0A70  BB 55 37    mov bx,3755h
+0A73  53          push bx
+0A74  E8 09 FB    call 580h
+0A77  83 C4 02    add sp,2h
+0A7A  8B 06 55 37 mov ax,word ptr [3755h]
+0A7E  A3 4F 37    mov word ptr [374fh],ax
+0A81  8B 1E 57 37 mov bx,word ptr [3757h]
+0A85  89 1E 51 37 mov word ptr [3751h],bx
+0A89  8B 16 59 37 mov dx,word ptr [3759h]
+0A8D  89 16 53 37 mov word ptr [3753h],dx
+0A91  8B 06 4F 37 mov ax,word ptr [374fh]
+0A95  A3 55 37    mov word ptr [3755h],ax
+0A98  8B 1E 51 37 mov bx,word ptr [3751h]
+0A9C  89 1E 57 37 mov word ptr [3757h],bx
+0AA0  8B 16 53 37 mov dx,word ptr [3753h]
+0AA4  89 16 59 37 mov word ptr [3759h],dx
+0AA8  8B 06 AD 36 mov ax,word ptr [36adh]
+0AAC  A3 5B 37    mov word ptr [375bh],ax
+0AAF  8B 1E AF 36 mov bx,word ptr [36afh]
+0AB3  89 1E 5D 37 mov word ptr [375dh],bx
+0AB7  8B 16 B1 36 mov dx,word ptr [36b1h]
+0ABB  89 16 5F 37 mov word ptr [375fh],dx
+0ABF  BB 55 37    mov bx,3755h
+0AC2  53          push bx
+0AC3  E8 52 F9    call 418h
+0AC6  83 C4 02    add sp,2h
+0AC9  8B 06 55 37 mov ax,word ptr [3755h]
+0ACD  A3 4F 37    mov word ptr [374fh],ax
+0AD0  8B 1E 57 37 mov bx,word ptr [3757h]
+0AD4  89 1E 51 37 mov word ptr [3751h],bx
+0AD8  8B 16 59 37 mov dx,word ptr [3759h]
+0ADC  89 16 53 37 mov word ptr [3753h],dx
+0AE0  8B 06 4F 37 mov ax,word ptr [374fh]
+0AE4  A3 55 37    mov word ptr [3755h],ax
+0AE7  8B 1E 51 37 mov bx,word ptr [3751h]
+0AEB  89 1E 57 37 mov word ptr [3757h],bx
+0AEF  8B 16 53 37 mov dx,word ptr [3753h]
+0AF3  89 16 59 37 mov word ptr [3759h],dx
+0AF7  8B 06 49 37 mov ax,word ptr [3749h]
+0AFB  A3 5B 37    mov word ptr [375bh],ax
+0AFE  8B 1E 4B 37 mov bx,word ptr [374bh]
+0B02  89 1E 5D 37 mov word ptr [375dh],bx
+0B06  8B 16 4D 37 mov dx,word ptr [374dh]
+0B0A  89 16 5F 37 mov word ptr [375fh],dx
+0B0E  BB 55 37    mov bx,3755h
+0B11  53          push bx
+0B12  E8 6B FA    call 580h
+0B15  83 C4 02    add sp,2h
+0B18  8B 06 55 37 mov ax,word ptr [3755h]
+0B1C  A3 4F 37    mov word ptr [374fh],ax
+0B1F  8B 1E 57 37 mov bx,word ptr [3757h]
+0B23  89 1E 51 37 mov word ptr [3751h],bx
+0B27  8B 16 59 37 mov dx,word ptr [3759h]
+0B2B  89 16 53 37 mov word ptr [3753h],dx
+0B2F  8B 06 4F 37 mov ax,word ptr [374fh]
+0B33  A3 55 37    mov word ptr [3755h],ax
+0B36  8B 1E 51 37 mov bx,word ptr [3751h]
+0B3A  89 1E 57 37 mov word ptr [3757h],bx
+0B3E  8B 16 53 37 mov dx,word ptr [3753h]
+0B42  89 16 59 37 mov word ptr [3759h],dx
+0B46  8B 06 A7 36 mov ax,word ptr [36a7h]
+0B4A  A3 5B 37    mov word ptr [375bh],ax
+0B4D  8B 1E A9 36 mov bx,word ptr [36a9h]
+0B51  89 1E 5D 37 mov word ptr [375dh],bx
+0B55  8B 16 AB 36 mov dx,word ptr [36abh]
+0B59  89 16 5F 37 mov word ptr [375fh],dx
+0B5D  BB 55 37    mov bx,3755h
+0B60  53          push bx
+0B61  E8 B4 F8    call 418h
+0B64  83 C4 02    add sp,2h
+0B67  8B 06 55 37 mov ax,word ptr [3755h]
+0B6B  A3 4F 37    mov word ptr [374fh],ax
+0B6E  8B 1E 57 37 mov bx,word ptr [3757h]
+0B72  89 1E 51 37 mov word ptr [3751h],bx
+0B76  8B 16 59 37 mov dx,word ptr [3759h]
+0B7A  89 16 53 37 mov word ptr [3753h],dx
+0B7E  8B 06 4F 37 mov ax,word ptr [374fh]
+0B82  A3 55 37    mov word ptr [3755h],ax
+0B85  8B 1E 51 37 mov bx,word ptr [3751h]
+0B89  89 1E 57 37 mov word ptr [3757h],bx
+0B8D  8B 16 53 37 mov dx,word ptr [3753h]
+0B91  89 16 59 37 mov word ptr [3759h],dx
+0B95  8B 06 49 37 mov ax,word ptr [3749h]
+0B99  A3 5B 37    mov word ptr [375bh],ax
+0B9C  8B 1E 4B 37 mov bx,word ptr [374bh]
+0BA0  89 1E 5D 37 mov word ptr [375dh],bx
+0BA4  8B 16 4D 37 mov dx,word ptr [374dh]
+0BA8  89 16 5F 37 mov word ptr [375fh],dx
+0BAC  BB 55 37    mov bx,3755h
+0BAF  53          push bx
+0BB0  E8 CD F9    call 580h
+0BB3  83 C4 02    add sp,2h
+0BB6  8B 06 55 37 mov ax,word ptr [3755h]
+0BBA  A3 4F 37    mov word ptr [374fh],ax
+0BBD  8B 1E 57 37 mov bx,word ptr [3757h]
+0BC1  89 1E 51 37 mov word ptr [3751h],bx
+0BC5  8B 16 59 37 mov dx,word ptr [3759h]
+0BC9  89 16 53 37 mov word ptr [3753h],dx
+0BCD  8B 06 4F 37 mov ax,word ptr [374fh]
+0BD1  A3 55 37    mov word ptr [3755h],ax
+0BD4  8B 1E 51 37 mov bx,word ptr [3751h]
+0BD8  89 1E 57 37 mov word ptr [3757h],bx
+0BDC  8B 16 53 37 mov dx,word ptr [3753h]
+0BE0  89 16 59 37 mov word ptr [3759h],dx
+0BE4  8B 06 A1 36 mov ax,word ptr [36a1h]
+0BE8  A3 5B 37    mov word ptr [375bh],ax
+0BEB  8B 1E A3 36 mov bx,word ptr [36a3h]
+0BEF  89 1E 5D 37 mov word ptr [375dh],bx
+0BF3  8B 16 A5 36 mov dx,word ptr [36a5h]
+0BF7  89 16 5F 37 mov word ptr [375fh],dx
+0BFB  BB 55 37    mov bx,3755h
+0BFE  53          push bx
+0BFF  E8 16 F8    call 418h
+0C02  83 C4 02    add sp,2h
+0C05  8B 06 55 37 mov ax,word ptr [3755h]
+0C09  A3 4F 37    mov word ptr [374fh],ax
+0C0C  8B 1E 57 37 mov bx,word ptr [3757h]
+0C10  89 1E 51 37 mov word ptr [3751h],bx
+0C14  8B 16 59 37 mov dx,word ptr [3759h]
+0C18  89 16 53 37 mov word ptr [3753h],dx
+0C1C  8B 06 4F 37 mov ax,word ptr [374fh]
+0C20  A3 55 37    mov word ptr [3755h],ax
+0C23  8B 1E 51 37 mov bx,word ptr [3751h]
+0C27  89 1E 57 37 mov word ptr [3757h],bx
+0C2B  8B 16 53 37 mov dx,word ptr [3753h]
+0C2F  89 16 59 37 mov word ptr [3759h],dx
+0C33  8B 06 49 37 mov ax,word ptr [3749h]
+0C37  A3 5B 37    mov word ptr [375bh],ax
+0C3A  8B 1E 4B 37 mov bx,word ptr [374bh]
+0C3E  89 1E 5D 37 mov word ptr [375dh],bx
+0C42  8B 16 4D 37 mov dx,word ptr [374dh]
+0C46  89 16 5F 37 mov word ptr [375fh],dx
+0C4A  BB 55 37    mov bx,3755h
+0C4D  53          push bx
+0C4E  E8 2F F9    call 580h
+0C51  83 C4 02    add sp,2h
+0C54  8B 06 55 37 mov ax,word ptr [3755h]
+0C58  A3 4F 37    mov word ptr [374fh],ax
+0C5B  8B 1E 57 37 mov bx,word ptr [3757h]
+0C5F  89 1E 51 37 mov word ptr [3751h],bx
+0C63  8B 16 59 37 mov dx,word ptr [3759h]
+0C67  89 16 53 37 mov word ptr [3753h],dx
+0C6B  8B 06 4F 37 mov ax,word ptr [374fh]
+0C6F  A3 55 37    mov word ptr [3755h],ax
+0C72  8B 1E 51 37 mov bx,word ptr [3751h]
+0C76  89 1E 57 37 mov word ptr [3757h],bx
+0C7A  8B 16 53 37 mov dx,word ptr [3753h]
+0C7E  89 16 59 37 mov word ptr [3759h],dx
+0C82  8B 06 9B 36 mov ax,word ptr [369bh]
+0C86  A3 5B 37    mov word ptr [375bh],ax
+0C89  8B 1E 9D 36 mov bx,word ptr [369dh]
+0C8D  89 1E 5D 37 mov word ptr [375dh],bx
+0C91  8B 16 9F 36 mov dx,word ptr [369fh]
+0C95  89 16 5F 37 mov word ptr [375fh],dx
+0C99  BB 55 37    mov bx,3755h
+0C9C  53          push bx
+0C9D  E8 78 F7    call 418h
+0CA0  83 C4 02    add sp,2h
+0CA3  8B 06 55 37 mov ax,word ptr [3755h]
+0CA7  A3 4F 37    mov word ptr [374fh],ax
+0CAA  8B 1E 57 37 mov bx,word ptr [3757h]
+0CAE  89 1E 51 37 mov word ptr [3751h],bx
+0CB2  8B 16 59 37 mov dx,word ptr [3759h]
+0CB6  89 16 53 37 mov word ptr [3753h],dx
+0CBA  8B 06 4F 37 mov ax,word ptr [374fh]
+0CBE  A3 55 37    mov word ptr [3755h],ax
+0CC1  8B 1E 51 37 mov bx,word ptr [3751h]
+0CC5  89 1E 57 37 mov word ptr [3757h],bx
+0CC9  8B 16 53 37 mov dx,word ptr [3753h]
+0CCD  89 16 59 37 mov word ptr [3759h],dx
+0CD1  8B 06 49 37 mov ax,word ptr [3749h]
+0CD5  A3 5B 37    mov word ptr [375bh],ax
+0CD8  8B 1E 4B 37 mov bx,word ptr [374bh]
+0CDC  89 1E 5D 37 mov word ptr [375dh],bx
+0CE0  8B 16 4D 37 mov dx,word ptr [374dh]
+0CE4  89 16 5F 37 mov word ptr [375fh],dx
+0CE8  BB 55 37    mov bx,3755h
+0CEB  53          push bx
+0CEC  E8 91 F8    call 580h
+0CEF  83 C4 02    add sp,2h
+0CF2  8B 06 55 37 mov ax,word ptr [3755h]
+0CF6  A3 4F 37    mov word ptr [374fh],ax
+0CF9  8B 1E 57 37 mov bx,word ptr [3757h]
+0CFD  89 1E 51 37 mov word ptr [3751h],bx
+0D01  8B 16 59 37 mov dx,word ptr [3759h]
+0D05  89 16 53 37 mov word ptr [3753h],dx
+0D09  8B 06 4F 37 mov ax,word ptr [374fh]
+0D0D  A3 55 37    mov word ptr [3755h],ax
+0D10  8B 1E 51 37 mov bx,word ptr [3751h]
+0D14  89 1E 57 37 mov word ptr [3757h],bx
+0D18  8B 16 53 37 mov dx,word ptr [3753h]
+0D1C  89 16 59 37 mov word ptr [3759h],dx
+0D20  8B 06 95 36 mov ax,word ptr [3695h]
+0D24  A3 5B 37    mov word ptr [375bh],ax
+0D27  8B 1E 97 36 mov bx,word ptr [3697h]
+0D2B  89 1E 5D 37 mov word ptr [375dh],bx
+0D2F  8B 16 99 36 mov dx,word ptr [3699h]
+0D33  89 16 5F 37 mov word ptr [375fh],dx
+0D37  BB 55 37    mov bx,3755h
+0D3A  53          push bx
+0D3B  E8 DA F6    call 418h
+0D3E  83 C4 02    add sp,2h
+0D41  8B 06 55 37 mov ax,word ptr [3755h]
+0D45  A3 4F 37    mov word ptr [374fh],ax
+0D48  8B 1E 57 37 mov bx,word ptr [3757h]
+0D4C  89 1E 51 37 mov word ptr [3751h],bx
+0D50  8B 16 59 37 mov dx,word ptr [3759h]
+0D54  89 16 53 37 mov word ptr [3753h],dx
+0D58  8B 06 4F 37 mov ax,word ptr [374fh]
+0D5C  A3 55 37    mov word ptr [3755h],ax
+0D5F  8B 1E 51 37 mov bx,word ptr [3751h]
+0D63  89 1E 57 37 mov word ptr [3757h],bx
+0D67  8B 16 53 37 mov dx,word ptr [3753h]
+0D6B  89 16 59 37 mov word ptr [3759h],dx
+0D6F  8B 06 49 37 mov ax,word ptr [3749h]
+0D73  A3 5B 37    mov word ptr [375bh],ax
+0D76  8B 1E 4B 37 mov bx,word ptr [374bh]
+0D7A  89 1E 5D 37 mov word ptr [375dh],bx
+0D7E  8B 16 4D 37 mov dx,word ptr [374dh]
+0D82  89 16 5F 37 mov word ptr [375fh],dx
+0D86  BB 55 37    mov bx,3755h
+0D89  53          push bx
+0D8A  E8 F3 F7    call 580h
+0D8D  83 C4 02    add sp,2h
+0D90  8B 06 55 37 mov ax,word ptr [3755h]
+0D94  A3 4F 37    mov word ptr [374fh],ax
+0D97  8B 1E 57 37 mov bx,word ptr [3757h]
+0D9B  89 1E 51 37 mov word ptr [3751h],bx
+0D9F  8B 16 59 37 mov dx,word ptr [3759h]
+0DA3  89 16 53 37 mov word ptr [3753h],dx
+0DA7  8B 06 4F 37 mov ax,word ptr [374fh]
+0DAB  A3 55 37    mov word ptr [3755h],ax
+0DAE  8B 1E 51 37 mov bx,word ptr [3751h]
+0DB2  89 1E 57 37 mov word ptr [3757h],bx
+0DB6  8B 16 53 37 mov dx,word ptr [3753h]
+0DBA  89 16 59 37 mov word ptr [3759h],dx
+0DBE  8B 06 8F 36 mov ax,word ptr [368fh]
+0DC2  A3 5B 37    mov word ptr [375bh],ax
+0DC5  8B 1E 91 36 mov bx,word ptr [3691h]
+0DC9  89 1E 5D 37 mov word ptr [375dh],bx
+0DCD  8B 16 93 36 mov dx,word ptr [3693h]
+0DD1  89 16 5F 37 mov word ptr [375fh],dx
+0DD5  BB 55 37    mov bx,3755h
+0DD8  53          push bx
+0DD9  E8 3C F6    call 418h
+0DDC  83 C4 02    add sp,2h
+0DDF  8B 06 55 37 mov ax,word ptr [3755h]
+0DE3  A3 4F 37    mov word ptr [374fh],ax
+0DE6  8B 1E 57 37 mov bx,word ptr [3757h]
+0DEA  89 1E 51 37 mov word ptr [3751h],bx
+0DEE  8B 16 59 37 mov dx,word ptr [3759h]
+0DF2  89 16 53 37 mov word ptr [3753h],dx
+0DF6  8B 06 4F 37 mov ax,word ptr [374fh]
+0DFA  A3 55 37    mov word ptr [3755h],ax
+0DFD  8B 1E 51 37 mov bx,word ptr [3751h]
+0E01  89 1E 57 37 mov word ptr [3757h],bx
+0E05  8B 16 53 37 mov dx,word ptr [3753h]
+0E09  89 16 59 37 mov word ptr [3759h],dx
+0E0D  8B 06 49 37 mov ax,word ptr [3749h]
+0E11  A3 5B 37    mov word ptr [375bh],ax
+0E14  8B 1E 4B 37 mov bx,word ptr [374bh]
+0E18  89 1E 5D 37 mov word ptr [375dh],bx
+0E1C  8B 16 4D 37 mov dx,word ptr [374dh]
+0E20  89 16 5F 37 mov word ptr [375fh],dx
+0E24  BB 55 37    mov bx,3755h
+0E27  53          push bx
+0E28  E8 55 F7    call 580h
+0E2B  83 C4 02    add sp,2h
+0E2E  8B 06 55 37 mov ax,word ptr [3755h]
+0E32  A3 4F 37    mov word ptr [374fh],ax
+0E35  8B 1E 57 37 mov bx,word ptr [3757h]
+0E39  89 1E 51 37 mov word ptr [3751h],bx
+0E3D  8B 16 59 37 mov dx,word ptr [3759h]
+0E41  89 16 53 37 mov word ptr [3753h],dx
+0E45  8B 06 4F 37 mov ax,word ptr [374fh]
+0E49  A3 55 37    mov word ptr [3755h],ax
+0E4C  8B 1E 51 37 mov bx,word ptr [3751h]
+0E50  89 1E 57 37 mov word ptr [3757h],bx
+0E54  8B 16 53 37 mov dx,word ptr [3753h]
+0E58  89 16 59 37 mov word ptr [3759h],dx
+0E5C  8B 06 89 36 mov ax,word ptr [3689h]
+0E60  A3 5B 37    mov word ptr [375bh],ax
+0E63  8B 1E 8B 36 mov bx,word ptr [368bh]
+0E67  89 1E 5D 37 mov word ptr [375dh],bx
+0E6B  8B 16 8D 36 mov dx,word ptr [368dh]
+0E6F  89 16 5F 37 mov word ptr [375fh],dx
+0E73  BB 55 37    mov bx,3755h
+0E76  53          push bx
+0E77  E8 9E F5    call 418h
+0E7A  83 C4 02    add sp,2h
+0E7D  8B 06 55 37 mov ax,word ptr [3755h]
+0E81  A3 4F 37    mov word ptr [374fh],ax
+0E84  8B 1E 57 37 mov bx,word ptr [3757h]
+0E88  89 1E 51 37 mov word ptr [3751h],bx
+0E8C  8B 16 59 37 mov dx,word ptr [3759h]
+0E90  89 16 53 37 mov word ptr [3753h],dx
+0E94  8B 06 4F 37 mov ax,word ptr [374fh]
+0E98  A3 55 37    mov word ptr [3755h],ax
+0E9B  8B 1E 51 37 mov bx,word ptr [3751h]
+0E9F  89 1E 57 37 mov word ptr [3757h],bx
+0EA3  8B 16 53 37 mov dx,word ptr [3753h]
+0EA7  89 16 59 37 mov word ptr [3759h],dx
+0EAB  8B 06 49 37 mov ax,word ptr [3749h]
+0EAF  A3 5B 37    mov word ptr [375bh],ax
+0EB2  8B 1E 4B 37 mov bx,word ptr [374bh]
+0EB6  89 1E 5D 37 mov word ptr [375dh],bx
+0EBA  8B 16 4D 37 mov dx,word ptr [374dh]
+0EBE  89 16 5F 37 mov word ptr [375fh],dx
+0EC2  BB 55 37    mov bx,3755h
+0EC5  53          push bx
+0EC6  E8 B7 F6    call 580h
+0EC9  83 C4 02    add sp,2h
+0ECC  8B 06 55 37 mov ax,word ptr [3755h]
+0ED0  A3 4F 37    mov word ptr [374fh],ax
+0ED3  8B 1E 57 37 mov bx,word ptr [3757h]
+0ED7  89 1E 51 37 mov word ptr [3751h],bx
+0EDB  8B 16 59 37 mov dx,word ptr [3759h]
+0EDF  89 16 53 37 mov word ptr [3753h],dx
+0EE3  8B 06 4F 37 mov ax,word ptr [374fh]
+0EE7  A3 55 37    mov word ptr [3755h],ax
+0EEA  8B 1E 51 37 mov bx,word ptr [3751h]
+0EEE  89 1E 57 37 mov word ptr [3757h],bx
+0EF2  8B 16 53 37 mov dx,word ptr [3753h]
+0EF6  89 16 59 37 mov word ptr [3759h],dx
+0EFA  8B 06 83 36 mov ax,word ptr [3683h]
+0EFE  A3 5B 37    mov word ptr [375bh],ax
+0F01  8B 1E 85 36 mov bx,word ptr [3685h]
+0F05  89 1E 5D 37 mov word ptr [375dh],bx
+0F09  8B 16 87 36 mov dx,word ptr [3687h]
+0F0D  89 16 5F 37 mov word ptr [375fh],dx
+0F11  BB 55 37    mov bx,3755h
+0F14  53          push bx
+0F15  E8 00 F5    call 418h
+0F18  83 C4 02    add sp,2h
+0F1B  8B 06 55 37 mov ax,word ptr [3755h]
+0F1F  A3 4F 37    mov word ptr [374fh],ax
+0F22  8B 1E 57 37 mov bx,word ptr [3757h]
+0F26  89 1E 51 37 mov word ptr [3751h],bx
+0F2A  8B 16 59 37 mov dx,word ptr [3759h]
+0F2E  89 16 53 37 mov word ptr [3753h],dx
+0F32  8B 06 4F 37 mov ax,word ptr [374fh]
+0F36  A3 55 37    mov word ptr [3755h],ax
+0F39  8B 1E 51 37 mov bx,word ptr [3751h]
+0F3D  89 1E 57 37 mov word ptr [3757h],bx
+0F41  8B 16 53 37 mov dx,word ptr [3753h]
+0F45  89 16 59 37 mov word ptr [3759h],dx
+0F49  8B 06 49 37 mov ax,word ptr [3749h]
+0F4D  A3 5B 37    mov word ptr [375bh],ax
+0F50  8B 1E 4B 37 mov bx,word ptr [374bh]
+0F54  89 1E 5D 37 mov word ptr [375dh],bx
+0F58  8B 16 4D 37 mov dx,word ptr [374dh]
+0F5C  89 16 5F 37 mov word ptr [375fh],dx
+0F60  BB 55 37    mov bx,3755h
+0F63  53          push bx
+0F64  E8 19 F6    call 580h
+0F67  83 C4 02    add sp,2h
+0F6A  8B 06 55 37 mov ax,word ptr [3755h]
+0F6E  A3 4F 37    mov word ptr [374fh],ax
+0F71  8B 1E 57 37 mov bx,word ptr [3757h]
+0F75  89 1E 51 37 mov word ptr [3751h],bx
+0F79  8B 16 59 37 mov dx,word ptr [3759h]
+0F7D  89 16 53 37 mov word ptr [3753h],dx
+0F81  8B 06 4F 37 mov ax,word ptr [374fh]
+0F85  A3 55 37    mov word ptr [3755h],ax
+0F88  8B 1E 51 37 mov bx,word ptr [3751h]
+0F8C  89 1E 57 37 mov word ptr [3757h],bx
+0F90  8B 16 53 37 mov dx,word ptr [3753h]
+0F94  89 16 59 37 mov word ptr [3759h],dx
+0F98  8B 06 7D 36 mov ax,word ptr [367dh]
+0F9C  A3 5B 37    mov word ptr [375bh],ax
+0F9F  8B 1E 7F 36 mov bx,word ptr [367fh]
+0FA3  89 1E 5D 37 mov word ptr [375dh],bx
+0FA7  8B 16 81 36 mov dx,word ptr [3681h]
+0FAB  89 16 5F 37 mov word ptr [375fh],dx
+0FAF  BB 55 37    mov bx,3755h
+0FB2  53          push bx
+0FB3  E8 62 F4    call 418h
+0FB6  83 C4 02    add sp,2h
+0FB9  8B 06 55 37 mov ax,word ptr [3755h]
+0FBD  A3 4F 37    mov word ptr [374fh],ax
+0FC0  8B 1E 57 37 mov bx,word ptr [3757h]
+0FC4  89 1E 51 37 mov word ptr [3751h],bx
+0FC8  8B 16 59 37 mov dx,word ptr [3759h]
+0FCC  89 16 53 37 mov word ptr [3753h],dx
+0FD0  8B 06 4F 37 mov ax,word ptr [374fh]
+0FD4  A3 55 37    mov word ptr [3755h],ax
+0FD7  8B 1E 51 37 mov bx,word ptr [3751h]
+0FDB  89 1E 57 37 mov word ptr [3757h],bx
+0FDF  8B 16 53 37 mov dx,word ptr [3753h]
+0FE3  89 16 59 37 mov word ptr [3759h],dx
+0FE7  8B 06 49 37 mov ax,word ptr [3749h]
+0FEB  A3 5B 37    mov word ptr [375bh],ax
+0FEE  8B 1E 4B 37 mov bx,word ptr [374bh]
+0FF2  89 1E 5D 37 mov word ptr [375dh],bx
+0FF6  8B 16 4D 37 mov dx,word ptr [374dh]
+0FFA  89 16 5F 37 mov word ptr [375fh],dx
+0FFE  BB 55 37    mov bx,3755h
+1001  53          push bx
+1002  E8 7B F5    call 580h
+1005  83 C4 02    add sp,2h
+1008  8B 06 55 37 mov ax,word ptr [3755h]
+100C  A3 4F 37    mov word ptr [374fh],ax
+100F  8B 1E 57 37 mov bx,word ptr [3757h]
+1013  89 1E 51 37 mov word ptr [3751h],bx
+1017  8B 16 59 37 mov dx,word ptr [3759h]
+101B  89 16 53 37 mov word ptr [3753h],dx
+101F  8B 06 4F 37 mov ax,word ptr [374fh]
+1023  A3 55 37    mov word ptr [3755h],ax
+1026  8B 1E 51 37 mov bx,word ptr [3751h]
+102A  89 1E 57 37 mov word ptr [3757h],bx
+102E  8B 16 53 37 mov dx,word ptr [3753h]
+1032  89 16 59 37 mov word ptr [3759h],dx
+1036  8B 06 77 36 mov ax,word ptr [3677h]
+103A  A3 5B 37    mov word ptr [375bh],ax
+103D  8B 1E 79 36 mov bx,word ptr [3679h]
+1041  89 1E 5D 37 mov word ptr [375dh],bx
+1045  8B 16 7B 36 mov dx,word ptr [367bh]
+1049  89 16 5F 37 mov word ptr [375fh],dx
+104D  BB 55 37    mov bx,3755h
+1050  53          push bx
+1051  E8 C4 F3    call 418h
+1054  83 C4 02    add sp,2h
+1057  8B 06 55 37 mov ax,word ptr [3755h]
+105B  A3 4F 37    mov word ptr [374fh],ax
+105E  8B 1E 57 37 mov bx,word ptr [3757h]
+1062  89 1E 51 37 mov word ptr [3751h],bx
+1066  8B 16 59 37 mov dx,word ptr [3759h]
+106A  89 16 53 37 mov word ptr [3753h],dx
+106E  8B 06 4F 37 mov ax,word ptr [374fh]
+1072  A3 55 37    mov word ptr [3755h],ax
+1075  8B 1E 51 37 mov bx,word ptr [3751h]
+1079  89 1E 57 37 mov word ptr [3757h],bx
+107D  8B 16 53 37 mov dx,word ptr [3753h]
+1081  89 16 59 37 mov word ptr [3759h],dx
+1085  8B 06 49 37 mov ax,word ptr [3749h]
+1089  A3 5B 37    mov word ptr [375bh],ax
+108C  8B 1E 4B 37 mov bx,word ptr [374bh]
+1090  89 1E 5D 37 mov word ptr [375dh],bx
+1094  8B 16 4D 37 mov dx,word ptr [374dh]
+1098  89 16 5F 37 mov word ptr [375fh],dx
+109C  BB 55 37    mov bx,3755h
+109F  53          push bx
+10A0  E8 DD F4    call 580h
+10A3  83 C4 02    add sp,2h
+10A6  8B 06 55 37 mov ax,word ptr [3755h]
+10AA  A3 4F 37    mov word ptr [374fh],ax
+10AD  8B 1E 57 37 mov bx,word ptr [3757h]
+10B1  89 1E 51 37 mov word ptr [3751h],bx
+10B5  8B 16 59 37 mov dx,word ptr [3759h]
+10B9  89 16 53 37 mov word ptr [3753h],dx
+10BD  8B 06 4F 37 mov ax,word ptr [374fh]
+10C1  A3 55 37    mov word ptr [3755h],ax
+10C4  8B 1E 51 37 mov bx,word ptr [3751h]
+10C8  89 1E 57 37 mov word ptr [3757h],bx
+10CC  8B 16 53 37 mov dx,word ptr [3753h]
+10D0  89 16 59 37 mov word ptr [3759h],dx
+10D4  8B 06 71 36 mov ax,word ptr [3671h]
+10D8  A3 5B 37    mov word ptr [375bh],ax
+10DB  8B 1E 73 36 mov bx,word ptr [3673h]
+10DF  89 1E 5D 37 mov word ptr [375dh],bx
+10E3  8B 16 75 36 mov dx,word ptr [3675h]
+10E7  89 16 5F 37 mov word ptr [375fh],dx
+10EB  BB 55 37    mov bx,3755h
+10EE  53          push bx
+10EF  E8 26 F3    call 418h
+10F2  83 C4 02    add sp,2h
+10F5  8B 06 55 37 mov ax,word ptr [3755h]
+10F9  A3 4F 37    mov word ptr [374fh],ax
+10FC  8B 1E 57 37 mov bx,word ptr [3757h]
+1100  89 1E 51 37 mov word ptr [3751h],bx
+1104  8B 16 59 37 mov dx,word ptr [3759h]
+1108  89 16 53 37 mov word ptr [3753h],dx
+110C  8B 06 4F 37 mov ax,word ptr [374fh]
+1110  A3 55 37    mov word ptr [3755h],ax
+1113  8B 1E 51 37 mov bx,word ptr [3751h]
+1117  89 1E 57 37 mov word ptr [3757h],bx
+111B  8B 16 53 37 mov dx,word ptr [3753h]
+111F  89 16 59 37 mov word ptr [3759h],dx
+1123  8B 06 4F 37 mov ax,word ptr [374fh]
+1127  A3 5B 37    mov word ptr [375bh],ax
+112A  8B 1E 51 37 mov bx,word ptr [3751h]
+112E  89 1E 5D 37 mov word ptr [375dh],bx
+1132  8B 16 53 37 mov dx,word ptr [3753h]
+1136  89 16 5F 37 mov word ptr [375fh],dx
+113A  BB 55 37    mov bx,3755h
+113D  53          push bx
+113E  E8 3F F4    call 580h
+1141  83 C4 02    add sp,2h
+1144  8B 06 55 37 mov ax,word ptr [3755h]
+1148  A3 4F 37    mov word ptr [374fh],ax
+114B  8B 1E 57 37 mov bx,word ptr [3757h]
+114F  89 1E 51 37 mov word ptr [3751h],bx
+1153  8B 16 59 37 mov dx,word ptr [3759h]
+1157  89 16 53 37 mov word ptr [3753h],dx
+115B  8B 06 4F 37 mov ax,word ptr [374fh]
+115F  A3 55 37    mov word ptr [3755h],ax
+1162  8B 1E 51 37 mov bx,word ptr [3751h]
+1166  89 1E 57 37 mov word ptr [3757h],bx
+116A  8B 16 53 37 mov dx,word ptr [3753h]
+116E  89 16 59 37 mov word ptr [3759h],dx
+1172  8B 06 4F 37 mov ax,word ptr [374fh]
+1176  A3 5B 37    mov word ptr [375bh],ax
+1179  8B 1E 51 37 mov bx,word ptr [3751h]
+117D  89 1E 5D 37 mov word ptr [375dh],bx
+1181  8B 16 53 37 mov dx,word ptr [3753h]
+1185  89 16 5F 37 mov word ptr [375fh],dx
+1189  BB 55 37    mov bx,3755h
+118C  53          push bx
+118D  E8 F0 F3    call 580h
+1190  83 C4 02    add sp,2h
+1193  8B 06 55 37 mov ax,word ptr [3755h]
+1197  A3 4F 37    mov word ptr [374fh],ax
+119A  8B 1E 57 37 mov bx,word ptr [3757h]
+119E  89 1E 51 37 mov word ptr [3751h],bx
+11A2  8B 16 59 37 mov dx,word ptr [3759h]
+11A6  89 16 53 37 mov word ptr [3753h],dx
+11AA  8B 06 4F 37 mov ax,word ptr [374fh]
+11AE  A3 55 37    mov word ptr [3755h],ax
+11B1  8B 1E 51 37 mov bx,word ptr [3751h]
+11B5  89 1E 57 37 mov word ptr [3757h],bx
+11B9  8B 16 53 37 mov dx,word ptr [3753h]
+11BD  89 16 59 37 mov word ptr [3759h],dx
+11C1  8B 06 4F 37 mov ax,word ptr [374fh]
+11C5  A3 5B 37    mov word ptr [375bh],ax
+11C8  8B 1E 51 37 mov bx,word ptr [3751h]
+11CC  89 1E 5D 37 mov word ptr [375dh],bx
+11D0  8B 16 53 37 mov dx,word ptr [3753h]
+11D4  89 16 5F 37 mov word ptr [375fh],dx
+11D8  BB 55 37    mov bx,3755h
+11DB  53          push bx
+11DC  E8 A1 F3    call 580h
+11DF  83 C4 02    add sp,2h
+11E2  8B 06 55 37 mov ax,word ptr [3755h]
+11E6  A3 4F 37    mov word ptr [374fh],ax
+11E9  8B 1E 57 37 mov bx,word ptr [3757h]
+11ED  89 1E 51 37 mov word ptr [3751h],bx
+11F1  8B 16 59 37 mov dx,word ptr [3759h]
+11F5  89 16 53 37 mov word ptr [3753h],dx
+11F9  8B 06 4F 37 mov ax,word ptr [374fh]
+11FD  A3 55 37    mov word ptr [3755h],ax
+1200  8B 1E 51 37 mov bx,word ptr [3751h]
+1204  89 1E 57 37 mov word ptr [3757h],bx
+1208  8B 16 53 37 mov dx,word ptr [3753h]
+120C  89 16 59 37 mov word ptr [3759h],dx
+1210  8B 06 4F 37 mov ax,word ptr [374fh]
+1214  A3 5B 37    mov word ptr [375bh],ax
+1217  8B 1E 51 37 mov bx,word ptr [3751h]
+121B  89 1E 5D 37 mov word ptr [375dh],bx
+121F  8B 16 53 37 mov dx,word ptr [3753h]
+1223  89 16 5F 37 mov word ptr [375fh],dx
+1227  BB 55 37    mov bx,3755h
+122A  53          push bx
+122B  E8 52 F3    call 580h
+122E  83 C4 02    add sp,2h
+1231  8B 06 55 37 mov ax,word ptr [3755h]
+1235  A3 4F 37    mov word ptr [374fh],ax
+1238  8B 1E 57 37 mov bx,word ptr [3757h]
+123C  89 1E 51 37 mov word ptr [3751h],bx
+1240  8B 16 59 37 mov dx,word ptr [3759h]
+1244  89 16 53 37 mov word ptr [3753h],dx
+1248  8B 06 4F 37 mov ax,word ptr [374fh]
+124C  A3 55 37    mov word ptr [3755h],ax
+124F  8B 1E 51 37 mov bx,word ptr [3751h]
+1253  89 1E 57 37 mov word ptr [3757h],bx
+1257  8B 16 53 37 mov dx,word ptr [3753h]
+125B  89 16 59 37 mov word ptr [3759h],dx
+125F  8B 06 4F 37 mov ax,word ptr [374fh]
+1263  A3 5B 37    mov word ptr [375bh],ax
+1266  8B 1E 51 37 mov bx,word ptr [3751h]
+126A  89 1E 5D 37 mov word ptr [375dh],bx
+126E  8B 16 53 37 mov dx,word ptr [3753h]
+1272  89 16 5F 37 mov word ptr [375fh],dx
+1276  BB 55 37    mov bx,3755h
+1279  53          push bx
+127A  E8 03 F3    call 580h
+127D  83 C4 02    add sp,2h
+1280  8B 06 55 37 mov ax,word ptr [3755h]
+1284  A3 4F 37    mov word ptr [374fh],ax
+1287  8B 1E 57 37 mov bx,word ptr [3757h]
+128B  89 1E 51 37 mov word ptr [3751h],bx
+128F  8B 16 59 37 mov dx,word ptr [3759h]
+1293  89 16 53 37 mov word ptr [3753h],dx
+1297  8B 06 4F 37 mov ax,word ptr [374fh]
+129B  A3 55 37    mov word ptr [3755h],ax
+129E  8B 1E 51 37 mov bx,word ptr [3751h]
+12A2  89 1E 57 37 mov word ptr [3757h],bx
+12A6  8B 16 53 37 mov dx,word ptr [3753h]
+12AA  89 16 59 37 mov word ptr [3759h],dx
+12AE  8B 06 4F 37 mov ax,word ptr [374fh]
+12B2  A3 5B 37    mov word ptr [375bh],ax
+12B5  8B 1E 51 37 mov bx,word ptr [3751h]
+12B9  89 1E 5D 37 mov word ptr [375dh],bx
+12BD  8B 16 53 37 mov dx,word ptr [3753h]
+12C1  89 16 5F 37 mov word ptr [375fh],dx
+12C5  BB 55 37    mov bx,3755h
+12C8  53          push bx
+12C9  E8 B4 F2    call 580h
+12CC  83 C4 02    add sp,2h
+12CF  8B 06 55 37 mov ax,word ptr [3755h]
+12D3  A3 4F 37    mov word ptr [374fh],ax
+12D6  8B 1E 57 37 mov bx,word ptr [3757h]
+12DA  89 1E 51 37 mov word ptr [3751h],bx
+12DE  8B 16 59 37 mov dx,word ptr [3759h]
+12E2  89 16 53 37 mov word ptr [3753h],dx
+12E6  8B 06 4F 37 mov ax,word ptr [374fh]
+12EA  A3 55 37    mov word ptr [3755h],ax
+12ED  8B 1E 51 37 mov bx,word ptr [3751h]
+12F1  89 1E 57 37 mov word ptr [3757h],bx
+12F5  8B 16 53 37 mov dx,word ptr [3753h]
+12F9  89 16 59 37 mov word ptr [3759h],dx
+12FD  8B 06 4F 37 mov ax,word ptr [374fh]
+1301  A3 5B 37    mov word ptr [375bh],ax
+1304  8B 1E 51 37 mov bx,word ptr [3751h]
+1308  89 1E 5D 37 mov word ptr [375dh],bx
+130C  8B 16 53 37 mov dx,word ptr [3753h]
+1310  89 16 5F 37 mov word ptr [375fh],dx
+1314  BB 55 37    mov bx,3755h
+1317  53          push bx
+1318  E8 65 F2    call 580h
+131B  83 C4 02    add sp,2h
+131E  8B 06 55 37 mov ax,word ptr [3755h]
+1322  A3 4F 37    mov word ptr [374fh],ax
+1325  8B 1E 57 37 mov bx,word ptr [3757h]
+1329  89 1E 51 37 mov word ptr [3751h],bx
+132D  8B 16 59 37 mov dx,word ptr [3759h]
+1331  89 16 53 37 mov word ptr [3753h],dx
+1335  8B 06 4F 37 mov ax,word ptr [374fh]
+1339  A3 55 37    mov word ptr [3755h],ax
+133C  8B 1E 51 37 mov bx,word ptr [3751h]
+1340  89 1E 57 37 mov word ptr [3757h],bx
+1344  8B 16 53 37 mov dx,word ptr [3753h]
+1348  89 16 59 37 mov word ptr [3759h],dx
+134C  8B 06 4F 37 mov ax,word ptr [374fh]
+1350  A3 5B 37    mov word ptr [375bh],ax
+1353  8B 1E 51 37 mov bx,word ptr [3751h]
+1357  89 1E 5D 37 mov word ptr [375dh],bx
+135B  8B 16 53 37 mov dx,word ptr [3753h]
+135F  89 16 5F 37 mov word ptr [375fh],dx
+1363  BB 55 37    mov bx,3755h
+1366  53          push bx
+1367  E8 16 F2    call 580h
+136A  83 C4 02    add sp,2h
+136D  8B 06 55 37 mov ax,word ptr [3755h]
+1371  A3 4F 37    mov word ptr [374fh],ax
+1374  8B 1E 57 37 mov bx,word ptr [3757h]
+1378  89 1E 51 37 mov word ptr [3751h],bx
+137C  8B 16 59 37 mov dx,word ptr [3759h]
+1380  89 16 53 37 mov word ptr [3753h],dx
+1384  5F          pop di
+1385  8B 06 4F 37 mov ax,word ptr [374fh]
+1389  8B 1E 51 37 mov bx,word ptr [3751h]
+138D  8B 16 53 37 mov dx,word ptr [3753h]
+1391  89 05       mov word ptr [di],ax
+1393  89 5D 02    mov word ptr [di+2h],bx
+1396  89 55 04    mov word ptr [di+4h],dx
+1399  EB 00       jmp 139bh
+139B  5F          pop di
+139C  5E          pop si
+139D  5A          pop dx
+139E  5B          pop bx
+139F  89 EC       mov sp,bp
+13A1  5D          pop bp
+13A2  C3          ret
+13A3  55          push bp
+13A4  8B EC       mov bp,sp
+13A6  53          push bx
+13A7  52          push dx
+13A8  56          push si
+13A9  57          push di
+13AA  FF 76 04    push word ptr [bp+4h]
+13AD  8B 76 04    mov si,word ptr [bp+4h]
+13B0  8B 04       mov ax,word ptr [si]
+13B2  8B 4C 02    mov cx,word ptr [si+2h]
+13B5  89 CB       mov bx,cx
+13B7  8B 54 04    mov dx,word ptr [si+4h]
+13BA  3C 00       cmp al,0h
+13BC  75 03       jne 13c1h
+13BE  E9 30 07    jmp 1af1h
+13C1  F6 C6 80    test dh,80h
+13C4  74 03       je 13c9h
+13C6  E9 28 07    jmp 1af1h
+13C9  04 7F       add al,7fh
+13CB  98          cbw
+13CC  E8 11 F0    call 3e0h
+13CF  A3 61 37    mov word ptr [3761h],ax
+13D2  89 1E 63 37 mov word ptr [3763h],bx
+13D6  89 16 65 37 mov word ptr [3765h],dx
+13DA  8B 7E 04    mov di,word ptr [bp+4h]
+13DD  B0 81       mov al,81h
+13DF  88 05       mov byte ptr [di],al
+13E1  8B 76 04    mov si,word ptr [bp+4h]
+13E4  8B 04       mov ax,word ptr [si]
+13E6  8B 4C 02    mov cx,word ptr [si+2h]
+13E9  89 CB       mov bx,cx
+13EB  8B 54 04    mov dx,word ptr [si+4h]
+13EE  A3 43 37    mov word ptr [3743h],ax
+13F1  89 1E 45 37 mov word ptr [3745h],bx
+13F5  89 16 47 37 mov word ptr [3747h],dx
+13F9  8B 06 43 37 mov ax,word ptr [3743h]
+13FD  A3 55 37    mov word ptr [3755h],ax
+1400  8B 1E 45 37 mov bx,word ptr [3745h]
+1404  89 1E 57 37 mov word ptr [3757h],bx
+1408  8B 16 47 37 mov dx,word ptr [3747h]
+140C  89 16 59 37 mov word ptr [3759h],dx
+1410  8B 06 29 36 mov ax,word ptr [3629h]
+1414  A3 5B 37    mov word ptr [375bh],ax
+1417  8B 1E 2B 36 mov bx,word ptr [362bh]
+141B  89 1E 5D 37 mov word ptr [375dh],bx
+141F  8B 16 2D 36 mov dx,word ptr [362dh]
+1423  89 16 5F 37 mov word ptr [375fh],dx
+1427  BB 55 37    mov bx,3755h
+142A  53          push bx
+142B  E8 26 F0    call 454h
+142E  83 C4 02    add sp,2h
+1431  8B 06 55 37 mov ax,word ptr [3755h]
+1435  A3 49 37    mov word ptr [3749h],ax
+1438  8B 1E 57 37 mov bx,word ptr [3757h]
+143C  89 1E 4B 37 mov word ptr [374bh],bx
+1440  8B 16 59 37 mov dx,word ptr [3759h]
+1444  89 16 4D 37 mov word ptr [374dh],dx
+1448  8B 06 43 37 mov ax,word ptr [3743h]
+144C  A3 55 37    mov word ptr [3755h],ax
+144F  8B 1E 45 37 mov bx,word ptr [3745h]
+1453  89 1E 57 37 mov word ptr [3757h],bx
+1457  8B 16 47 37 mov dx,word ptr [3747h]
+145B  89 16 59 37 mov word ptr [3759h],dx
+145F  8B 06 29 36 mov ax,word ptr [3629h]
+1463  A3 5B 37    mov word ptr [375bh],ax
+1466  8B 1E 2B 36 mov bx,word ptr [362bh]
+146A  89 1E 5D 37 mov word ptr [375dh],bx
+146E  8B 16 2D 36 mov dx,word ptr [362dh]
+1472  89 16 5F 37 mov word ptr [375fh],dx
+1476  BB 55 37    mov bx,3755h
+1479  53          push bx
+147A  E8 9B EF    call 418h
+147D  83 C4 02    add sp,2h
+1480  8B 06 55 37 mov ax,word ptr [3755h]
+1484  A3 4F 37    mov word ptr [374fh],ax
+1487  8B 1E 57 37 mov bx,word ptr [3757h]
+148B  89 1E 51 37 mov word ptr [3751h],bx
+148F  8B 16 59 37 mov dx,word ptr [3759h]
+1493  89 16 53 37 mov word ptr [3753h],dx
+1497  8B 06 49 37 mov ax,word ptr [3749h]
+149B  A3 55 37    mov word ptr [3755h],ax
+149E  8B 1E 4B 37 mov bx,word ptr [374bh]
+14A2  89 1E 57 37 mov word ptr [3757h],bx
+14A6  8B 16 4D 37 mov dx,word ptr [374dh]
+14AA  89 16 59 37 mov word ptr [3759h],dx
+14AE  8B 06 4F 37 mov ax,word ptr [374fh]
+14B2  A3 5B 37    mov word ptr [375bh],ax
+14B5  8B 1E 51 37 mov bx,word ptr [3751h]
+14B9  89 1E 5D 37 mov word ptr [375dh],bx
+14BD  8B 16 53 37 mov dx,word ptr [3753h]
+14C1  89 16 5F 37 mov word ptr [375fh],dx
+14C5  BB 55 37    mov bx,3755h
+14C8  53          push bx
+14C9  E8 9D F1    call 669h
+14CC  83 C4 02    add sp,2h
+14CF  8B 06 55 37 mov ax,word ptr [3755h]
+14D3  A3 49 37    mov word ptr [3749h],ax
+14D6  8B 1E 57 37 mov bx,word ptr [3757h]
+14DA  89 1E 4B 37 mov word ptr [374bh],bx
+14DE  8B 16 59 37 mov dx,word ptr [3759h]
+14E2  89 16 4D 37 mov word ptr [374dh],dx
+14E6  8B 06 49 37 mov ax,word ptr [3749h]
+14EA  A3 55 37    mov word ptr [3755h],ax
+14ED  8B 1E 4B 37 mov bx,word ptr [374bh]
+14F1  89 1E 57 37 mov word ptr [3757h],bx
+14F5  8B 16 4D 37 mov dx,word ptr [374dh]
+14F9  89 16 59 37 mov word ptr [3759h],dx
+14FD  8B 06 49 37 mov ax,word ptr [3749h]
+1501  A3 5B 37    mov word ptr [375bh],ax
+1504  8B 1E 4B 37 mov bx,word ptr [374bh]
+1508  89 1E 5D 37 mov word ptr [375dh],bx
+150C  8B 16 4D 37 mov dx,word ptr [374dh]
+1510  89 16 5F 37 mov word ptr [375fh],dx
+1514  BB 55 37    mov bx,3755h
+1517  53          push bx
+1518  E8 65 F0    call 580h
+151B  83 C4 02    add sp,2h
+151E  8B 06 55 37 mov ax,word ptr [3755h]
+1522  A3 4F 37    mov word ptr [374fh],ax
+1525  8B 1E 57 37 mov bx,word ptr [3757h]
+1529  89 1E 51 37 mov word ptr [3751h],bx
+152D  8B 16 59 37 mov dx,word ptr [3759h]
+1531  89 16 53 37 mov word ptr [3753h],dx
+1535  8B 06 41 36 mov ax,word ptr [3641h]
+1539  A3 43 37    mov word ptr [3743h],ax
+153C  8B 1E 43 36 mov bx,word ptr [3643h]
+1540  89 1E 45 37 mov word ptr [3745h],bx
+1544  8B 16 45 36 mov dx,word ptr [3645h]
+1548  89 16 47 37 mov word ptr [3747h],dx
+154C  8B 06 43 37 mov ax,word ptr [3743h]
+1550  A3 55 37    mov word ptr [3755h],ax
+1553  8B 1E 45 37 mov bx,word ptr [3745h]
+1557  89 1E 57 37 mov word ptr [3757h],bx
+155B  8B 16 47 37 mov dx,word ptr [3747h]
+155F  89 16 59 37 mov word ptr [3759h],dx
+1563  8B 06 4F 37 mov ax,word ptr [374fh]
+1567  A3 5B 37    mov word ptr [375bh],ax
+156A  8B 1E 51 37 mov bx,word ptr [3751h]
+156E  89 1E 5D 37 mov word ptr [375dh],bx
+1572  8B 16 53 37 mov dx,word ptr [3753h]
+1576  89 16 5F 37 mov word ptr [375fh],dx
+157A  BB 55 37    mov bx,3755h
+157D  53          push bx
+157E  E8 FF EF    call 580h
+1581  83 C4 02    add sp,2h
+1584  8B 06 55 37 mov ax,word ptr [3755h]
+1588  A3 43 37    mov word ptr [3743h],ax
+158B  8B 1E 57 37 mov bx,word ptr [3757h]
+158F  89 1E 45 37 mov word ptr [3745h],bx
+1593  8B 16 59 37 mov dx,word ptr [3759h]
+1597  89 16 47 37 mov word ptr [3747h],dx
+159B  8B 06 43 37 mov ax,word ptr [3743h]
+159F  A3 55 37    mov word ptr [3755h],ax
+15A2  8B 1E 45 37 mov bx,word ptr [3745h]
+15A6  89 1E 57 37 mov word ptr [3757h],bx
+15AA  8B 16 47 37 mov dx,word ptr [3747h]
+15AE  89 16 59 37 mov word ptr [3759h],dx
+15B2  8B 06 47 36 mov ax,word ptr [3647h]
+15B6  A3 5B 37    mov word ptr [375bh],ax
+15B9  8B 1E 49 36 mov bx,word ptr [3649h]
+15BD  89 1E 5D 37 mov word ptr [375dh],bx
+15C1  8B 16 4B 36 mov dx,word ptr [364bh]
+15C5  89 16 5F 37 mov word ptr [375fh],dx
+15C9  BB 55 37    mov bx,3755h
+15CC  53          push bx
+15CD  E8 48 EE    call 418h
+15D0  83 C4 02    add sp,2h
+15D3  8B 06 55 37 mov ax,word ptr [3755h]
+15D7  A3 43 37    mov word ptr [3743h],ax
+15DA  8B 1E 57 37 mov bx,word ptr [3757h]
+15DE  89 1E 45 37 mov word ptr [3745h],bx
+15E2  8B 16 59 37 mov dx,word ptr [3759h]
+15E6  89 16 47 37 mov word ptr [3747h],dx
+15EA  8B 06 43 37 mov ax,word ptr [3743h]
+15EE  A3 55 37    mov word ptr [3755h],ax
+15F1  8B 1E 45 37 mov bx,word ptr [3745h]
+15F5  89 1E 57 37 mov word ptr [3757h],bx
+15F9  8B 16 47 37 mov dx,word ptr [3747h]
+15FD  89 16 59 37 mov word ptr [3759h],dx
+1601  8B 06 4F 37 mov ax,word ptr [374fh]
+1605  A3 5B 37    mov word ptr [375bh],ax
+1608  8B 1E 51 37 mov bx,word ptr [3751h]
+160C  89 1E 5D 37 mov word ptr [375dh],bx
+1610  8B 16 53 37 mov dx,word ptr [3753h]
+1614  89 16 5F 37 mov word ptr [375fh],dx
+1618  BB 55 37    mov bx,3755h
+161B  53          push bx
+161C  E8 61 EF    call 580h
+161F  83 C4 02    add sp,2h
+1622  8B 06 55 37 mov ax,word ptr [3755h]
+1626  A3 43 37    mov word ptr [3743h],ax
+1629  8B 1E 57 37 mov bx,word ptr [3757h]
+162D  89 1E 45 37 mov word ptr [3745h],bx
+1631  8B 16 59 37 mov dx,word ptr [3759h]
+1635  89 16 47 37 mov word ptr [3747h],dx
+1639  8B 06 43 37 mov ax,word ptr [3743h]
+163D  A3 55 37    mov word ptr [3755h],ax
+1640  8B 1E 45 37 mov bx,word ptr [3745h]
+1644  89 1E 57 37 mov word ptr [3757h],bx
+1648  8B 16 47 37 mov dx,word ptr [3747h]
+164C  89 16 59 37 mov word ptr [3759h],dx
+1650  8B 06 4D 36 mov ax,word ptr [364dh]
+1654  A3 5B 37    mov word ptr [375bh],ax
+1657  8B 1E 4F 36 mov bx,word ptr [364fh]
+165B  89 1E 5D 37 mov word ptr [375dh],bx
+165F  8B 16 51 36 mov dx,word ptr [3651h]
+1663  89 16 5F 37 mov word ptr [375fh],dx
+1667  BB 55 37    mov bx,3755h
+166A  53          push bx
+166B  E8 AA ED    call 418h
+166E  83 C4 02    add sp,2h
+1671  8B 06 55 37 mov ax,word ptr [3755h]
+1675  A3 43 37    mov word ptr [3743h],ax
+1678  8B 1E 57 37 mov bx,word ptr [3757h]
+167C  89 1E 45 37 mov word ptr [3745h],bx
+1680  8B 16 59 37 mov dx,word ptr [3759h]
+1684  89 16 47 37 mov word ptr [3747h],dx
+1688  8B 06 43 37 mov ax,word ptr [3743h]
+168C  A3 55 37    mov word ptr [3755h],ax
+168F  8B 1E 45 37 mov bx,word ptr [3745h]
+1693  89 1E 57 37 mov word ptr [3757h],bx
+1697  8B 16 47 37 mov dx,word ptr [3747h]
+169B  89 16 59 37 mov word ptr [3759h],dx
+169F  8B 06 4F 37 mov ax,word ptr [374fh]
+16A3  A3 5B 37    mov word ptr [375bh],ax
+16A6  8B 1E 51 37 mov bx,word ptr [3751h]
+16AA  89 1E 5D 37 mov word ptr [375dh],bx
+16AE  8B 16 53 37 mov dx,word ptr [3753h]
+16B2  89 16 5F 37 mov word ptr [375fh],dx
+16B6  BB 55 37    mov bx,3755h
+16B9  53          push bx
+16BA  E8 C3 EE    call 580h
+16BD  83 C4 02    add sp,2h
+16C0  8B 06 55 37 mov ax,word ptr [3755h]
+16C4  A3 43 37    mov word ptr [3743h],ax
+16C7  8B 1E 57 37 mov bx,word ptr [3757h]
+16CB  89 1E 45 37 mov word ptr [3745h],bx
+16CF  8B 16 59 37 mov dx,word ptr [3759h]
+16D3  89 16 47 37 mov word ptr [3747h],dx
+16D7  8B 06 43 37 mov ax,word ptr [3743h]
+16DB  A3 55 37    mov word ptr [3755h],ax
+16DE  8B 1E 45 37 mov bx,word ptr [3745h]
+16E2  89 1E 57 37 mov word ptr [3757h],bx
+16E6  8B 16 47 37 mov dx,word ptr [3747h]
+16EA  89 16 59 37 mov word ptr [3759h],dx
+16EE  8B 06 53 36 mov ax,word ptr [3653h]
+16F2  A3 5B 37    mov word ptr [375bh],ax
+16F5  8B 1E 55 36 mov bx,word ptr [3655h]
+16F9  89 1E 5D 37 mov word ptr [375dh],bx
+16FD  8B 16 57 36 mov dx,word ptr [3657h]
+1701  89 16 5F 37 mov word ptr [375fh],dx
+1705  BB 55 37    mov bx,3755h
+1708  53          push bx
+1709  E8 0C ED    call 418h
+170C  83 C4 02    add sp,2h
+170F  8B 06 55 37 mov ax,word ptr [3755h]
+1713  A3 43 37    mov word ptr [3743h],ax
+1716  8B 1E 57 37 mov bx,word ptr [3757h]
+171A  89 1E 45 37 mov word ptr [3745h],bx
+171E  8B 16 59 37 mov dx,word ptr [3759h]
+1722  89 16 47 37 mov word ptr [3747h],dx
+1726  8B 06 43 37 mov ax,word ptr [3743h]
+172A  A3 55 37    mov word ptr [3755h],ax
+172D  8B 1E 45 37 mov bx,word ptr [3745h]
+1731  89 1E 57 37 mov word ptr [3757h],bx
+1735  8B 16 47 37 mov dx,word ptr [3747h]
+1739  89 16 59 37 mov word ptr [3759h],dx
+173D  8B 06 4F 37 mov ax,word ptr [374fh]
+1741  A3 5B 37    mov word ptr [375bh],ax
+1744  8B 1E 51 37 mov bx,word ptr [3751h]
+1748  89 1E 5D 37 mov word ptr [375dh],bx
+174C  8B 16 53 37 mov dx,word ptr [3753h]
+1750  89 16 5F 37 mov word ptr [375fh],dx
+1754  BB 55 37    mov bx,3755h
+1757  53          push bx
+1758  E8 25 EE    call 580h
+175B  83 C4 02    add sp,2h
+175E  8B 06 55 37 mov ax,word ptr [3755h]
+1762  A3 43 37    mov word ptr [3743h],ax
+1765  8B 1E 57 37 mov bx,word ptr [3757h]
+1769  89 1E 45 37 mov word ptr [3745h],bx
+176D  8B 16 59 37 mov dx,word ptr [3759h]
+1771  89 16 47 37 mov word ptr [3747h],dx
+1775  8B 06 43 37 mov ax,word ptr [3743h]
+1779  A3 55 37    mov word ptr [3755h],ax
+177C  8B 1E 45 37 mov bx,word ptr [3745h]
+1780  89 1E 57 37 mov word ptr [3757h],bx
+1784  8B 16 47 37 mov dx,word ptr [3747h]
+1788  89 16 59 37 mov word ptr [3759h],dx
+178C  8B 06 59 36 mov ax,word ptr [3659h]
+1790  A3 5B 37    mov word ptr [375bh],ax
+1793  8B 1E 5B 36 mov bx,word ptr [365bh]
+1797  89 1E 5D 37 mov word ptr [375dh],bx
+179B  8B 16 5D 36 mov dx,word ptr [365dh]
+179F  89 16 5F 37 mov word ptr [375fh],dx
+17A3  BB 55 37    mov bx,3755h
+17A6  53          push bx
+17A7  E8 6E EC    call 418h
+17AA  83 C4 02    add sp,2h
+17AD  8B 06 55 37 mov ax,word ptr [3755h]
+17B1  A3 43 37    mov word ptr [3743h],ax
+17B4  8B 1E 57 37 mov bx,word ptr [3757h]
+17B8  89 1E 45 37 mov word ptr [3745h],bx
+17BC  8B 16 59 37 mov dx,word ptr [3759h]
+17C0  89 16 47 37 mov word ptr [3747h],dx
+17C4  8B 06 43 37 mov ax,word ptr [3743h]
+17C8  A3 55 37    mov word ptr [3755h],ax
+17CB  8B 1E 45 37 mov bx,word ptr [3745h]
+17CF  89 1E 57 37 mov word ptr [3757h],bx
+17D3  8B 16 47 37 mov dx,word ptr [3747h]
+17D7  89 16 59 37 mov word ptr [3759h],dx
+17DB  8B 06 4F 37 mov ax,word ptr [374fh]
+17DF  A3 5B 37    mov word ptr [375bh],ax
+17E2  8B 1E 51 37 mov bx,word ptr [3751h]
+17E6  89 1E 5D 37 mov word ptr [375dh],bx
+17EA  8B 16 53 37 mov dx,word ptr [3753h]
+17EE  89 16 5F 37 mov word ptr [375fh],dx
+17F2  BB 55 37    mov bx,3755h
+17F5  53          push bx
+17F6  E8 87 ED    call 580h
+17F9  83 C4 02    add sp,2h
+17FC  8B 06 55 37 mov ax,word ptr [3755h]
+1800  A3 43 37    mov word ptr [3743h],ax
+1803  8B 1E 57 37 mov bx,word ptr [3757h]
+1807  89 1E 45 37 mov word ptr [3745h],bx
+180B  8B 16 59 37 mov dx,word ptr [3759h]
+180F  89 16 47 37 mov word ptr [3747h],dx
+1813  8B 06 43 37 mov ax,word ptr [3743h]
+1817  A3 55 37    mov word ptr [3755h],ax
+181A  8B 1E 45 37 mov bx,word ptr [3745h]
+181E  89 1E 57 37 mov word ptr [3757h],bx
+1822  8B 16 47 37 mov dx,word ptr [3747h]
+1826  89 16 59 37 mov word ptr [3759h],dx
+182A  8B 06 5F 36 mov ax,word ptr [365fh]
+182E  A3 5B 37    mov word ptr [375bh],ax
+1831  8B 1E 61 36 mov bx,word ptr [3661h]
+1835  89 1E 5D 37 mov word ptr [375dh],bx
+1839  8B 16 63 36 mov dx,word ptr [3663h]
+183D  89 16 5F 37 mov word ptr [375fh],dx
+1841  BB 55 37    mov bx,3755h
+1844  53          push bx
+1845  E8 D0 EB    call 418h
+1848  83 C4 02    add sp,2h
+184B  8B 06 55 37 mov ax,word ptr [3755h]
+184F  A3 43 37    mov word ptr [3743h],ax
+1852  8B 1E 57 37 mov bx,word ptr [3757h]
+1856  89 1E 45 37 mov word ptr [3745h],bx
+185A  8B 16 59 37 mov dx,word ptr [3759h]
+185E  89 16 47 37 mov word ptr [3747h],dx
+1862  8B 06 43 37 mov ax,word ptr [3743h]
+1866  A3 55 37    mov word ptr [3755h],ax
+1869  8B 1E 45 37 mov bx,word ptr [3745h]
+186D  89 1E 57 37 mov word ptr [3757h],bx
+1871  8B 16 47 37 mov dx,word ptr [3747h]
+1875  89 16 59 37 mov word ptr [3759h],dx
+1879  8B 06 4F 37 mov ax,word ptr [374fh]
+187D  A3 5B 37    mov word ptr [375bh],ax
+1880  8B 1E 51 37 mov bx,word ptr [3751h]
+1884  89 1E 5D 37 mov word ptr [375dh],bx
+1888  8B 16 53 37 mov dx,word ptr [3753h]
+188C  89 16 5F 37 mov word ptr [375fh],dx
+1890  BB 55 37    mov bx,3755h
+1893  53          push bx
+1894  E8 E9 EC    call 580h
+1897  83 C4 02    add sp,2h
+189A  8B 06 55 37 mov ax,word ptr [3755h]
+189E  A3 43 37    mov word ptr [3743h],ax
+18A1  8B 1E 57 37 mov bx,word ptr [3757h]
+18A5  89 1E 45 37 mov word ptr [3745h],bx
+18A9  8B 16 59 37 mov dx,word ptr [3759h]
+18AD  89 16 47 37 mov word ptr [3747h],dx
+18B1  8B 06 43 37 mov ax,word ptr [3743h]
+18B5  A3 55 37    mov word ptr [3755h],ax
+18B8  8B 1E 45 37 mov bx,word ptr [3745h]
+18BC  89 1E 57 37 mov word ptr [3757h],bx
+18C0  8B 16 47 37 mov dx,word ptr [3747h]
+18C4  89 16 59 37 mov word ptr [3759h],dx
+18C8  8B 06 65 36 mov ax,word ptr [3665h]
+18CC  A3 5B 37    mov word ptr [375bh],ax
+18CF  8B 1E 67 36 mov bx,word ptr [3667h]
+18D3  89 1E 5D 37 mov word ptr [375dh],bx
+18D7  8B 16 69 36 mov dx,word ptr [3669h]
+18DB  89 16 5F 37 mov word ptr [375fh],dx
+18DF  BB 55 37    mov bx,3755h
+18E2  53          push bx
+18E3  E8 32 EB    call 418h
+18E6  83 C4 02    add sp,2h
+18E9  8B 06 55 37 mov ax,word ptr [3755h]
+18ED  A3 43 37    mov word ptr [3743h],ax
+18F0  8B 1E 57 37 mov bx,word ptr [3757h]
+18F4  89 1E 45 37 mov word ptr [3745h],bx
+18F8  8B 16 59 37 mov dx,word ptr [3759h]
+18FC  89 16 47 37 mov word ptr [3747h],dx
+1900  8B 06 43 37 mov ax,word ptr [3743h]
+1904  A3 55 37    mov word ptr [3755h],ax
+1907  8B 1E 45 37 mov bx,word ptr [3745h]
+190B  89 1E 57 37 mov word ptr [3757h],bx
+190F  8B 16 47 37 mov dx,word ptr [3747h]
+1913  89 16 59 37 mov word ptr [3759h],dx
+1917  8B 06 4F 37 mov ax,word ptr [374fh]
+191B  A3 5B 37    mov word ptr [375bh],ax
+191E  8B 1E 51 37 mov bx,word ptr [3751h]
+1922  89 1E 5D 37 mov word ptr [375dh],bx
+1926  8B 16 53 37 mov dx,word ptr [3753h]
+192A  89 16 5F 37 mov word ptr [375fh],dx
+192E  BB 55 37    mov bx,3755h
+1931  53          push bx
+1932  E8 4B EC    call 580h
+1935  83 C4 02    add sp,2h
+1938  8B 06 55 37 mov ax,word ptr [3755h]
+193C  A3 43 37    mov word ptr [3743h],ax
+193F  8B 1E 57 37 mov bx,word ptr [3757h]
+1943  89 1E 45 37 mov word ptr [3745h],bx
+1947  8B 16 59 37 mov dx,word ptr [3759h]
+194B  89 16 47 37 mov word ptr [3747h],dx
+194F  8B 06 43 37 mov ax,word ptr [3743h]
+1953  A3 55 37    mov word ptr [3755h],ax
+1956  8B 1E 45 37 mov bx,word ptr [3745h]
+195A  89 1E 57 37 mov word ptr [3757h],bx
+195E  8B 16 47 37 mov dx,word ptr [3747h]
+1962  89 16 59 37 mov word ptr [3759h],dx
+1966  8B 06 6B 36 mov ax,word ptr [366bh]
+196A  A3 5B 37    mov word ptr [375bh],ax
+196D  8B 1E 6D 36 mov bx,word ptr [366dh]
+1971  89 1E 5D 37 mov word ptr [375dh],bx
+1975  8B 16 6F 36 mov dx,word ptr [366fh]
+1979  89 16 5F 37 mov word ptr [375fh],dx
+197D  BB 55 37    mov bx,3755h
+1980  53          push bx
+1981  E8 94 EA    call 418h
+1984  83 C4 02    add sp,2h
+1987  8B 06 55 37 mov ax,word ptr [3755h]
+198B  A3 43 37    mov word ptr [3743h],ax
+198E  8B 1E 57 37 mov bx,word ptr [3757h]
+1992  89 1E 45 37 mov word ptr [3745h],bx
+1996  8B 16 59 37 mov dx,word ptr [3759h]
+199A  89 16 47 37 mov word ptr [3747h],dx
+199E  8B 06 49 37 mov ax,word ptr [3749h]
+19A2  A3 55 37    mov word ptr [3755h],ax
+19A5  8B 1E 4B 37 mov bx,word ptr [374bh]
+19A9  89 1E 57 37 mov word ptr [3757h],bx
+19AD  8B 16 4D 37 mov dx,word ptr [374dh]
+19B1  89 16 59 37 mov word ptr [3759h],dx
+19B5  8B 06 43 37 mov ax,word ptr [3743h]
+19B9  A3 5B 37    mov word ptr [375bh],ax
+19BC  8B 1E 45 37 mov bx,word ptr [3745h]
+19C0  89 1E 5D 37 mov word ptr [375dh],bx
+19C4  8B 16 47 37 mov dx,word ptr [3747h]
+19C8  89 16 5F 37 mov word ptr [375fh],dx
+19CC  BB 55 37    mov bx,3755h
+19CF  53          push bx
+19D0  E8 AD EB    call 580h
+19D3  83 C4 02    add sp,2h
+19D6  8B 06 55 37 mov ax,word ptr [3755h]
+19DA  A3 43 37    mov word ptr [3743h],ax
+19DD  8B 1E 57 37 mov bx,word ptr [3757h]
+19E1  89 1E 45 37 mov word ptr [3745h],bx
+19E5  8B 16 59 37 mov dx,word ptr [3759h]
+19E9  89 16 47 37 mov word ptr [3747h],dx
+19ED  8B 06 43 37 mov ax,word ptr [3743h]
+19F1  A3 55 37    mov word ptr [3755h],ax
+19F4  8B 1E 45 37 mov bx,word ptr [3745h]
+19F8  89 1E 57 37 mov word ptr [3757h],bx
+19FC  8B 16 47 37 mov dx,word ptr [3747h]
+1A00  89 16 59 37 mov word ptr [3759h],dx
+1A04  8B 06 43 37 mov ax,word ptr [3743h]
+1A08  A3 5B 37    mov word ptr [375bh],ax
+1A0B  8B 1E 45 37 mov bx,word ptr [3745h]
+1A0F  89 1E 5D 37 mov word ptr [375dh],bx
+1A13  8B 16 47 37 mov dx,word ptr [3747h]
+1A17  89 16 5F 37 mov word ptr [375fh],dx
+1A1B  BB 55 37    mov bx,3755h
+1A1E  53          push bx
+1A1F  E8 F6 E9    call 418h
+1A22  83 C4 02    add sp,2h
+1A25  8B 06 55 37 mov ax,word ptr [3755h]
+1A29  A3 43 37    mov word ptr [3743h],ax
+1A2C  8B 1E 57 37 mov bx,word ptr [3757h]
+1A30  89 1E 45 37 mov word ptr [3745h],bx
+1A34  8B 16 59 37 mov dx,word ptr [3759h]
+1A38  89 16 47 37 mov word ptr [3747h],dx
+1A3C  8B 06 61 37 mov ax,word ptr [3761h]
+1A40  A3 55 37    mov word ptr [3755h],ax
+1A43  8B 1E 63 37 mov bx,word ptr [3763h]
+1A47  89 1E 57 37 mov word ptr [3757h],bx
+1A4B  8B 16 65 37 mov dx,word ptr [3765h]
+1A4F  89 16 59 37 mov word ptr [3759h],dx
+1A53  8B 06 35 36 mov ax,word ptr [3635h]
+1A57  A3 5B 37    mov word ptr [375bh],ax
+1A5A  8B 1E 37 36 mov bx,word ptr [3637h]
+1A5E  89 1E 5D 37 mov word ptr [375dh],bx
+1A62  8B 16 39 36 mov dx,word ptr [3639h]
+1A66  89 16 5F 37 mov word ptr [375fh],dx
+1A6A  BB 55 37    mov bx,3755h
+1A6D  53          push bx
+1A6E  E8 0F EB    call 580h
+1A71  83 C4 02    add sp,2h
+1A74  8B 06 55 37 mov ax,word ptr [3755h]
+1A78  A3 61 37    mov word ptr [3761h],ax
+1A7B  8B 1E 57 37 mov bx,word ptr [3757h]
+1A7F  89 1E 63 37 mov word ptr [3763h],bx
+1A83  8B 16 59 37 mov dx,word ptr [3759h]
+1A87  89 16 65 37 mov word ptr [3765h],dx
+1A8B  8B 06 43 37 mov ax,word ptr [3743h]
+1A8F  A3 55 37    mov word ptr [3755h],ax
+1A92  8B 1E 45 37 mov bx,word ptr [3745h]
+1A96  89 1E 57 37 mov word ptr [3757h],bx
+1A9A  8B 16 47 37 mov dx,word ptr [3747h]
+1A9E  89 16 59 37 mov word ptr [3759h],dx
+1AA2  8B 06 61 37 mov ax,word ptr [3761h]
+1AA6  A3 5B 37    mov word ptr [375bh],ax
+1AA9  8B 1E 63 37 mov bx,word ptr [3763h]
+1AAD  89 1E 5D 37 mov word ptr [375dh],bx
+1AB1  8B 16 65 37 mov dx,word ptr [3765h]
+1AB5  89 16 5F 37 mov word ptr [375fh],dx
+1AB9  BB 55 37    mov bx,3755h
+1ABC  53          push bx
+1ABD  E8 58 E9    call 418h
+1AC0  83 C4 02    add sp,2h
+1AC3  8B 06 55 37 mov ax,word ptr [3755h]
+1AC7  A3 43 37    mov word ptr [3743h],ax
+1ACA  8B 1E 57 37 mov bx,word ptr [3757h]
+1ACE  89 1E 45 37 mov word ptr [3745h],bx
+1AD2  8B 16 59 37 mov dx,word ptr [3759h]
+1AD6  89 16 47 37 mov word ptr [3747h],dx
+1ADA  5F          pop di
+1ADB  8B 06 43 37 mov ax,word ptr [3743h]
+1ADF  8B 1E 45 37 mov bx,word ptr [3745h]
+1AE3  8B 16 47 37 mov dx,word ptr [3747h]
+1AE7  89 05       mov word ptr [di],ax
+1AE9  89 5D 02    mov word ptr [di+2h],bx
+1AEC  89 55 04    mov word ptr [di+4h],dx
+1AEF  EB 07       jmp 1af8h
+1AF1  5F          pop di
+1AF2  B0 04       mov al,4h
+1AF4  B4 4C       mov ah,4ch
+1AF6  CD 21       int 21h
+1AF8  5F          pop di
+1AF9  5E          pop si
+1AFA  5A          pop dx
+1AFB  5B          pop bx
+1AFC  89 EC       mov sp,bp
+1AFE  5D          pop bp
+1AFF  C3          ret
+1B00  55          push bp
+1B01  8B EC       mov bp,sp
+1B03  53          push bx
+1B04  52          push dx
+1B05  56          push si
+1B06  57          push di
+1B07  FF 76 04    push word ptr [bp+4h]
+1B0A  8B 76 04    mov si,word ptr [bp+4h]
+1B0D  8B 04       mov ax,word ptr [si]
+1B0F  8B 4C 02    mov cx,word ptr [si+2h]
+1B12  89 CB       mov bx,cx
+1B14  8B 54 04    mov dx,word ptr [si+4h]
+1B17  A3 43 37    mov word ptr [3743h],ax
+1B1A  89 1E 45 37 mov word ptr [3745h],bx
+1B1E  89 16 47 37 mov word ptr [3747h],dx
+1B22  8B 06 43 37 mov ax,word ptr [3743h]
+1B26  A3 55 37    mov word ptr [3755h],ax
+1B29  8B 1E 45 37 mov bx,word ptr [3745h]
+1B2D  89 1E 57 37 mov word ptr [3757h],bx
+1B31  8B 16 47 37 mov dx,word ptr [3747h]
+1B35  89 16 59 37 mov word ptr [3759h],dx
+1B39  8B 06 C5 36 mov ax,word ptr [36c5h]
+1B3D  A3 5B 37    mov word ptr [375bh],ax
+1B40  8B 1E C7 36 mov bx,word ptr [36c7h]
+1B44  89 1E 5D 37 mov word ptr [375dh],bx
+1B48  8B 16 C9 36 mov dx,word ptr [36c9h]
+1B4C  89 16 5F 37 mov word ptr [375fh],dx
+1B50  BB 55 37    mov bx,3755h
+1B53  53          push bx
+1B54  E8 12 EB    call 669h
+1B57  83 C4 02    add sp,2h
+1B5A  8B 06 55 37 mov ax,word ptr [3755h]
+1B5E  A3 49 37    mov word ptr [3749h],ax
+1B61  8B 1E 57 37 mov bx,word ptr [3757h]
+1B65  89 1E 4B 37 mov word ptr [374bh],bx
+1B69  8B 16 59 37 mov dx,word ptr [3759h]
+1B6D  89 16 4D 37 mov word ptr [374dh],dx
+1B71  8B 06 49 37 mov ax,word ptr [3749h]
+1B75  A3 55 37    mov word ptr [3755h],ax
+1B78  8B 1E 4B 37 mov bx,word ptr [374bh]
+1B7C  89 1E 57 37 mov word ptr [3757h],bx
+1B80  8B 16 4D 37 mov dx,word ptr [374dh]
+1B84  89 16 59 37 mov word ptr [3759h],dx
+1B88  BB 55 37    mov bx,3755h
+1B8B  53          push bx
+1B8C  E8 44 EC    call 7d3h
+1B8F  83 C4 02    add sp,2h
+1B92  8B 06 55 37 mov ax,word ptr [3755h]
+1B96  A3 49 37    mov word ptr [3749h],ax
+1B99  8B 1E 57 37 mov bx,word ptr [3757h]
+1B9D  89 1E 4B 37 mov word ptr [374bh],bx
+1BA1  8B 16 59 37 mov dx,word ptr [3759h]
+1BA5  89 16 4D 37 mov word ptr [374dh],dx
+1BA9  8B 06 49 37 mov ax,word ptr [3749h]
+1BAD  A3 55 37    mov word ptr [3755h],ax
+1BB0  8B 1E 4B 37 mov bx,word ptr [374bh]
+1BB4  89 1E 57 37 mov word ptr [3757h],bx
+1BB8  8B 16 4D 37 mov dx,word ptr [374dh]
+1BBC  89 16 59 37 mov word ptr [3759h],dx
+1BC0  8B 06 C5 36 mov ax,word ptr [36c5h]
+1BC4  A3 5B 37    mov word ptr [375bh],ax
+1BC7  8B 1E C7 36 mov bx,word ptr [36c7h]
+1BCB  89 1E 5D 37 mov word ptr [375dh],bx
+1BCF  8B 16 C9 36 mov dx,word ptr [36c9h]
+1BD3  89 16 5F 37 mov word ptr [375fh],dx
+1BD7  BB 55 37    mov bx,3755h
+1BDA  53          push bx
+1BDB  E8 A2 E9    call 580h
+1BDE  83 C4 02    add sp,2h
+1BE1  8B 06 55 37 mov ax,word ptr [3755h]
+1BE5  A3 49 37    mov word ptr [3749h],ax
+1BE8  8B 1E 57 37 mov bx,word ptr [3757h]
+1BEC  89 1E 4B 37 mov word ptr [374bh],bx
+1BF0  8B 16 59 37 mov dx,word ptr [3759h]
+1BF4  89 16 4D 37 mov word ptr [374dh],dx
+1BF8  8B 06 43 37 mov ax,word ptr [3743h]
+1BFC  A3 55 37    mov word ptr [3755h],ax
+1BFF  8B 1E 45 37 mov bx,word ptr [3745h]
+1C03  89 1E 57 37 mov word ptr [3757h],bx
+1C07  8B 16 47 37 mov dx,word ptr [3747h]
+1C0B  89 16 59 37 mov word ptr [3759h],dx
+1C0F  8B 06 49 37 mov ax,word ptr [3749h]
+1C13  A3 5B 37    mov word ptr [375bh],ax
+1C16  8B 1E 4B 37 mov bx,word ptr [374bh]
+1C1A  89 1E 5D 37 mov word ptr [375dh],bx
+1C1E  8B 16 4D 37 mov dx,word ptr [374dh]
+1C22  89 16 5F 37 mov word ptr [375fh],dx
+1C26  BB 55 37    mov bx,3755h
+1C29  53          push bx
+1C2A  E8 27 E8    call 454h
+1C2D  83 C4 02    add sp,2h
+1C30  8B 06 55 37 mov ax,word ptr [3755h]
+1C34  A3 43 37    mov word ptr [3743h],ax
+1C37  8B 1E 57 37 mov bx,word ptr [3757h]
+1C3B  89 1E 45 37 mov word ptr [3745h],bx
+1C3F  8B 16 59 37 mov dx,word ptr [3759h]
+1C43  89 16 47 37 mov word ptr [3747h],dx
+1C47  8B 06 43 37 mov ax,word ptr [3743h]
+1C4B  A3 55 37    mov word ptr [3755h],ax
+1C4E  8B 1E 45 37 mov bx,word ptr [3745h]
+1C52  89 1E 57 37 mov word ptr [3757h],bx
+1C56  8B 16 47 37 mov dx,word ptr [3747h]
+1C5A  89 16 59 37 mov word ptr [3759h],dx
+1C5E  8B 06 B9 36 mov ax,word ptr [36b9h]
+1C62  A3 5B 37    mov word ptr [375bh],ax
+1C65  8B 1E BB 36 mov bx,word ptr [36bbh]
+1C69  89 1E 5D 37 mov word ptr [375dh],bx
+1C6D  8B 16 BD 36 mov dx,word ptr [36bdh]
+1C71  89 16 5F 37 mov word ptr [375fh],dx
+1C75  BB 55 37    mov bx,3755h
+1C78  53          push bx
+1C79  E8 F1 EA    call 76dh
+1C7C  83 C4 02    add sp,2h
+1C7F  83 F8 00    cmp ax,0h
+1C82  7F 03       jnle 1c87h
+1C84  E9 4F 00    jmp 1cd6h
+1C87  8B 06 43 37 mov ax,word ptr [3743h]
+1C8B  A3 55 37    mov word ptr [3755h],ax
+1C8E  8B 1E 45 37 mov bx,word ptr [3745h]
+1C92  89 1E 57 37 mov word ptr [3757h],bx
+1C96  8B 16 47 37 mov dx,word ptr [3747h]
+1C9A  89 16 59 37 mov word ptr [3759h],dx
+1C9E  8B 06 C5 36 mov ax,word ptr [36c5h]
+1CA2  A3 5B 37    mov word ptr [375bh],ax
+1CA5  8B 1E C7 36 mov bx,word ptr [36c7h]
+1CA9  89 1E 5D 37 mov word ptr [375dh],bx
+1CAD  8B 16 C9 36 mov dx,word ptr [36c9h]
+1CB1  89 16 5F 37 mov word ptr [375fh],dx
+1CB5  BB 55 37    mov bx,3755h
+1CB8  53          push bx
+1CB9  E8 98 E7    call 454h
+1CBC  83 C4 02    add sp,2h
+1CBF  8B 06 55 37 mov ax,word ptr [3755h]
+1CC3  A3 43 37    mov word ptr [3743h],ax
+1CC6  8B 1E 57 37 mov bx,word ptr [3757h]
+1CCA  89 1E 45 37 mov word ptr [3745h],bx
+1CCE  8B 16 59 37 mov dx,word ptr [3759h]
+1CD2  89 16 47 37 mov word ptr [3747h],dx
+1CD6  8B 06 43 37 mov ax,word ptr [3743h]
+1CDA  A3 55 37    mov word ptr [3755h],ax
+1CDD  8B 1E 45 37 mov bx,word ptr [3745h]
+1CE1  89 1E 57 37 mov word ptr [3757h],bx
+1CE5  8B 16 47 37 mov dx,word ptr [3747h]
+1CE9  89 16 59 37 mov word ptr [3759h],dx
+1CED  8B 06 68 37 mov ax,word ptr [3768h]
+1CF1  A3 5B 37    mov word ptr [375bh],ax
+1CF4  8B 1E 6A 37 mov bx,word ptr [376ah]
+1CF8  89 1E 5D 37 mov word ptr [375dh],bx
+1CFC  8B 16 6C 37 mov dx,word ptr [376ch]
+1D00  89 16 5F 37 mov word ptr [375fh],dx
+1D04  BB 55 37    mov bx,3755h
+1D07  53          push bx
+1D08  E8 62 EA    call 76dh
+1D0B  83 C4 02    add sp,2h
+1D0E  83 F8 00    cmp ax,0h
+1D11  7C 03       jl 1d16h
+1D13  E9 4F 00    jmp 1d65h
+1D16  8B 06 43 37 mov ax,word ptr [3743h]
+1D1A  A3 55 37    mov word ptr [3755h],ax
+1D1D  8B 1E 45 37 mov bx,word ptr [3745h]
+1D21  89 1E 57 37 mov word ptr [3757h],bx
+1D25  8B 16 47 37 mov dx,word ptr [3747h]
+1D29  89 16 59 37 mov word ptr [3759h],dx
+1D2D  8B 06 C5 36 mov ax,word ptr [36c5h]
+1D31  A3 5B 37    mov word ptr [375bh],ax
+1D34  8B 1E C7 36 mov bx,word ptr [36c7h]
+1D38  89 1E 5D 37 mov word ptr [375dh],bx
+1D3C  8B 16 C9 36 mov dx,word ptr [36c9h]
+1D40  89 16 5F 37 mov word ptr [375fh],dx
+1D44  BB 55 37    mov bx,3755h
+1D47  53          push bx
+1D48  E8 CD E6    call 418h
+1D4B  83 C4 02    add sp,2h
+1D4E  8B 06 55 37 mov ax,word ptr [3755h]
+1D52  A3 43 37    mov word ptr [3743h],ax
+1D55  8B 1E 57 37 mov bx,word ptr [3757h]
+1D59  89 1E 45 37 mov word ptr [3745h],bx
+1D5D  8B 16 59 37 mov dx,word ptr [3759h]
+1D61  89 16 47 37 mov word ptr [3747h],dx
+1D65  8B 06 43 37 mov ax,word ptr [3743h]
+1D69  A3 55 37    mov word ptr [3755h],ax
+1D6C  8B 1E 45 37 mov bx,word ptr [3745h]
+1D70  89 1E 57 37 mov word ptr [3757h],bx
+1D74  8B 16 47 37 mov dx,word ptr [3747h]
+1D78  89 16 59 37 mov word ptr [3759h],dx
+1D7C  8B 06 43 37 mov ax,word ptr [3743h]
+1D80  A3 5B 37    mov word ptr [375bh],ax
+1D83  8B 1E 45 37 mov bx,word ptr [3745h]
+1D87  89 1E 5D 37 mov word ptr [375dh],bx
+1D8B  8B 16 47 37 mov dx,word ptr [3747h]
+1D8F  89 16 5F 37 mov word ptr [375fh],dx
+1D93  BB 55 37    mov bx,3755h
+1D96  53          push bx
+1D97  E8 E6 E7    call 580h
+1D9A  83 C4 02    add sp,2h
+1D9D  8B 06 55 37 mov ax,word ptr [3755h]
+1DA1  A3 49 37    mov word ptr [3749h],ax
+1DA4  8B 1E 57 37 mov bx,word ptr [3757h]
+1DA8  89 1E 4B 37 mov word ptr [374bh],bx
+1DAC  8B 16 59 37 mov dx,word ptr [3759h]
+1DB0  89 16 4D 37 mov word ptr [374dh],dx
+1DB4  8B 06 CB 36 mov ax,word ptr [36cbh]
+1DB8  A3 4F 37    mov word ptr [374fh],ax
+1DBB  8B 1E CD 36 mov bx,word ptr [36cdh]
+1DBF  89 1E 51 37 mov word ptr [3751h],bx
+1DC3  8B 16 CF 36 mov dx,word ptr [36cfh]
+1DC7  89 16 53 37 mov word ptr [3753h],dx
+1DCB  8B 06 4F 37 mov ax,word ptr [374fh]
+1DCF  A3 55 37    mov word ptr [3755h],ax
+1DD2  8B 1E 51 37 mov bx,word ptr [3751h]
+1DD6  89 1E 57 37 mov word ptr [3757h],bx
+1DDA  8B 16 53 37 mov dx,word ptr [3753h]
+1DDE  89 16 59 37 mov word ptr [3759h],dx
+1DE2  8B 06 49 37 mov ax,word ptr [3749h]
+1DE6  A3 5B 37    mov word ptr [375bh],ax
+1DE9  8B 1E 4B 37 mov bx,word ptr [374bh]
+1DED  89 1E 5D 37 mov word ptr [375dh],bx
+1DF1  8B 16 4D 37 mov dx,word ptr [374dh]
+1DF5  89 16 5F 37 mov word ptr [375fh],dx
+1DF9  BB 55 37    mov bx,3755h
+1DFC  53          push bx
+1DFD  E8 80 E7    call 580h
+1E00  83 C4 02    add sp,2h
+1E03  8B 06 55 37 mov ax,word ptr [3755h]
+1E07  A3 4F 37    mov word ptr [374fh],ax
+1E0A  8B 1E 57 37 mov bx,word ptr [3757h]
+1E0E  89 1E 51 37 mov word ptr [3751h],bx
+1E12  8B 16 59 37 mov dx,word ptr [3759h]
+1E16  89 16 53 37 mov word ptr [3753h],dx
+1E1A  8B 06 4F 37 mov ax,word ptr [374fh]
+1E1E  A3 55 37    mov word ptr [3755h],ax
+1E21  8B 1E 51 37 mov bx,word ptr [3751h]
+1E25  89 1E 57 37 mov word ptr [3757h],bx
+1E29  8B 16 53 37 mov dx,word ptr [3753h]
+1E2D  89 16 59 37 mov word ptr [3759h],dx
+1E31  8B 06 D1 36 mov ax,word ptr [36d1h]
+1E35  A3 5B 37    mov word ptr [375bh],ax
+1E38  8B 1E D3 36 mov bx,word ptr [36d3h]
+1E3C  89 1E 5D 37 mov word ptr [375dh],bx
+1E40  8B 16 D5 36 mov dx,word ptr [36d5h]
+1E44  89 16 5F 37 mov word ptr [375fh],dx
+1E48  BB 55 37    mov bx,3755h
+1E4B  53          push bx
+1E4C  E8 C9 E5    call 418h
+1E4F  83 C4 02    add sp,2h
+1E52  8B 06 55 37 mov ax,word ptr [3755h]
+1E56  A3 4F 37    mov word ptr [374fh],ax
+1E59  8B 1E 57 37 mov bx,word ptr [3757h]
+1E5D  89 1E 51 37 mov word ptr [3751h],bx
+1E61  8B 16 59 37 mov dx,word ptr [3759h]
+1E65  89 16 53 37 mov word ptr [3753h],dx
+1E69  8B 06 4F 37 mov ax,word ptr [374fh]
+1E6D  A3 55 37    mov word ptr [3755h],ax
+1E70  8B 1E 51 37 mov bx,word ptr [3751h]
+1E74  89 1E 57 37 mov word ptr [3757h],bx
+1E78  8B 16 53 37 mov dx,word ptr [3753h]
+1E7C  89 16 59 37 mov word ptr [3759h],dx
+1E80  8B 06 49 37 mov ax,word ptr [3749h]
+1E84  A3 5B 37    mov word ptr [375bh],ax
+1E87  8B 1E 4B 37 mov bx,word ptr [374bh]
+1E8B  89 1E 5D 37 mov word ptr [375dh],bx
+1E8F  8B 16 4D 37 mov dx,word ptr [374dh]
+1E93  89 16 5F 37 mov word ptr [375fh],dx
+1E97  BB 55 37    mov bx,3755h
+1E9A  53          push bx
+1E9B  E8 E2 E6    call 580h
+1E9E  83 C4 02    add sp,2h
+1EA1  8B 06 55 37 mov ax,word ptr [3755h]
+1EA5  A3 4F 37    mov word ptr [374fh],ax
+1EA8  8B 1E 57 37 mov bx,word ptr [3757h]
+1EAC  89 1E 51 37 mov word ptr [3751h],bx
+1EB0  8B 16 59 37 mov dx,word ptr [3759h]
+1EB4  89 16 53 37 mov word ptr [3753h],dx
+1EB8  8B 06 4F 37 mov ax,word ptr [374fh]
+1EBC  A3 55 37    mov word ptr [3755h],ax
+1EBF  8B 1E 51 37 mov bx,word ptr [3751h]
+1EC3  89 1E 57 37 mov word ptr [3757h],bx
+1EC7  8B 16 53 37 mov dx,word ptr [3753h]
+1ECB  89 16 59 37 mov word ptr [3759h],dx
+1ECF  8B 06 D7 36 mov ax,word ptr [36d7h]
+1ED3  A3 5B 37    mov word ptr [375bh],ax
+1ED6  8B 1E D9 36 mov bx,word ptr [36d9h]
+1EDA  89 1E 5D 37 mov word ptr [375dh],bx
+1EDE  8B 16 DB 36 mov dx,word ptr [36dbh]
+1EE2  89 16 5F 37 mov word ptr [375fh],dx
+1EE6  BB 55 37    mov bx,3755h
+1EE9  53          push bx
+1EEA  E8 2B E5    call 418h
+1EED  83 C4 02    add sp,2h
+1EF0  8B 06 55 37 mov ax,word ptr [3755h]
+1EF4  A3 4F 37    mov word ptr [374fh],ax
+1EF7  8B 1E 57 37 mov bx,word ptr [3757h]
+1EFB  89 1E 51 37 mov word ptr [3751h],bx
+1EFF  8B 16 59 37 mov dx,word ptr [3759h]
+1F03  89 16 53 37 mov word ptr [3753h],dx
+1F07  8B 06 4F 37 mov ax,word ptr [374fh]
+1F0B  A3 55 37    mov word ptr [3755h],ax
+1F0E  8B 1E 51 37 mov bx,word ptr [3751h]
+1F12  89 1E 57 37 mov word ptr [3757h],bx
+1F16  8B 16 53 37 mov dx,word ptr [3753h]
+1F1A  89 16 59 37 mov word ptr [3759h],dx
+1F1E  8B 06 49 37 mov ax,word ptr [3749h]
+1F22  A3 5B 37    mov word ptr [375bh],ax
+1F25  8B 1E 4B 37 mov bx,word ptr [374bh]
+1F29  89 1E 5D 37 mov word ptr [375dh],bx
+1F2D  8B 16 4D 37 mov dx,word ptr [374dh]
+1F31  89 16 5F 37 mov word ptr [375fh],dx
+1F35  BB 55 37    mov bx,3755h
+1F38  53          push bx
+1F39  E8 44 E6    call 580h
+1F3C  83 C4 02    add sp,2h
+1F3F  8B 06 55 37 mov ax,word ptr [3755h]
+1F43  A3 4F 37    mov word ptr [374fh],ax
+1F46  8B 1E 57 37 mov bx,word ptr [3757h]
+1F4A  89 1E 51 37 mov word ptr [3751h],bx
+1F4E  8B 16 59 37 mov dx,word ptr [3759h]
+1F52  89 16 53 37 mov word ptr [3753h],dx
+1F56  8B 06 4F 37 mov ax,word ptr [374fh]
+1F5A  A3 55 37    mov word ptr [3755h],ax
+1F5D  8B 1E 51 37 mov bx,word ptr [3751h]
+1F61  89 1E 57 37 mov word ptr [3757h],bx
+1F65  8B 16 53 37 mov dx,word ptr [3753h]
+1F69  89 16 59 37 mov word ptr [3759h],dx
+1F6D  8B 06 DD 36 mov ax,word ptr [36ddh]
+1F71  A3 5B 37    mov word ptr [375bh],ax
+1F74  8B 1E DF 36 mov bx,word ptr [36dfh]
+1F78  89 1E 5D 37 mov word ptr [375dh],bx
+1F7C  8B 16 E1 36 mov dx,word ptr [36e1h]
+1F80  89 16 5F 37 mov word ptr [375fh],dx
+1F84  BB 55 37    mov bx,3755h
+1F87  53          push bx
+1F88  E8 8D E4    call 418h
+1F8B  83 C4 02    add sp,2h
+1F8E  8B 06 55 37 mov ax,word ptr [3755h]
+1F92  A3 4F 37    mov word ptr [374fh],ax
+1F95  8B 1E 57 37 mov bx,word ptr [3757h]
+1F99  89 1E 51 37 mov word ptr [3751h],bx
+1F9D  8B 16 59 37 mov dx,word ptr [3759h]
+1FA1  89 16 53 37 mov word ptr [3753h],dx
+1FA5  8B 06 4F 37 mov ax,word ptr [374fh]
+1FA9  A3 55 37    mov word ptr [3755h],ax
+1FAC  8B 1E 51 37 mov bx,word ptr [3751h]
+1FB0  89 1E 57 37 mov word ptr [3757h],bx
+1FB4  8B 16 53 37 mov dx,word ptr [3753h]
+1FB8  89 16 59 37 mov word ptr [3759h],dx
+1FBC  8B 06 49 37 mov ax,word ptr [3749h]
+1FC0  A3 5B 37    mov word ptr [375bh],ax
+1FC3  8B 1E 4B 37 mov bx,word ptr [374bh]
+1FC7  89 1E 5D 37 mov word ptr [375dh],bx
+1FCB  8B 16 4D 37 mov dx,word ptr [374dh]
+1FCF  89 16 5F 37 mov word ptr [375fh],dx
+1FD3  BB 55 37    mov bx,3755h
+1FD6  53          push bx
+1FD7  E8 A6 E5    call 580h
+1FDA  83 C4 02    add sp,2h
+1FDD  8B 06 55 37 mov ax,word ptr [3755h]
+1FE1  A3 4F 37    mov word ptr [374fh],ax
+1FE4  8B 1E 57 37 mov bx,word ptr [3757h]
+1FE8  89 1E 51 37 mov word ptr [3751h],bx
+1FEC  8B 16 59 37 mov dx,word ptr [3759h]
+1FF0  89 16 53 37 mov word ptr [3753h],dx
+1FF4  8B 06 4F 37 mov ax,word ptr [374fh]
+1FF8  A3 55 37    mov word ptr [3755h],ax
+1FFB  8B 1E 51 37 mov bx,word ptr [3751h]
+1FFF  89 1E 57 37 mov word ptr [3757h],bx
+2003  8B 16 53 37 mov dx,word ptr [3753h]
+2007  89 16 59 37 mov word ptr [3759h],dx
+200B  8B 06 E3 36 mov ax,word ptr [36e3h]
+200F  A3 5B 37    mov word ptr [375bh],ax
+2012  8B 1E E5 36 mov bx,word ptr [36e5h]
+2016  89 1E 5D 37 mov word ptr [375dh],bx
+201A  8B 16 E7 36 mov dx,word ptr [36e7h]
+201E  89 16 5F 37 mov word ptr [375fh],dx
+2022  BB 55 37    mov bx,3755h
+2025  53          push bx
+2026  E8 EF E3    call 418h
+2029  83 C4 02    add sp,2h
+202C  8B 06 55 37 mov ax,word ptr [3755h]
+2030  A3 4F 37    mov word ptr [374fh],ax
+2033  8B 1E 57 37 mov bx,word ptr [3757h]
+2037  89 1E 51 37 mov word ptr [3751h],bx
+203B  8B 16 59 37 mov dx,word ptr [3759h]
+203F  89 16 53 37 mov word ptr [3753h],dx
+2043  8B 06 4F 37 mov ax,word ptr [374fh]
+2047  A3 55 37    mov word ptr [3755h],ax
+204A  8B 1E 51 37 mov bx,word ptr [3751h]
+204E  89 1E 57 37 mov word ptr [3757h],bx
+2052  8B 16 53 37 mov dx,word ptr [3753h]
+2056  89 16 59 37 mov word ptr [3759h],dx
+205A  8B 06 49 37 mov ax,word ptr [3749h]
+205E  A3 5B 37    mov word ptr [375bh],ax
+2061  8B 1E 4B 37 mov bx,word ptr [374bh]
+2065  89 1E 5D 37 mov word ptr [375dh],bx
+2069  8B 16 4D 37 mov dx,word ptr [374dh]
+206D  89 16 5F 37 mov word ptr [375fh],dx
+2071  BB 55 37    mov bx,3755h
+2074  53          push bx
+2075  E8 08 E5    call 580h
+2078  83 C4 02    add sp,2h
+207B  8B 06 55 37 mov ax,word ptr [3755h]
+207F  A3 4F 37    mov word ptr [374fh],ax
+2082  8B 1E 57 37 mov bx,word ptr [3757h]
+2086  89 1E 51 37 mov word ptr [3751h],bx
+208A  8B 16 59 37 mov dx,word ptr [3759h]
+208E  89 16 53 37 mov word ptr [3753h],dx
+2092  8B 06 4F 37 mov ax,word ptr [374fh]
+2096  A3 55 37    mov word ptr [3755h],ax
+2099  8B 1E 51 37 mov bx,word ptr [3751h]
+209D  89 1E 57 37 mov word ptr [3757h],bx
+20A1  8B 16 53 37 mov dx,word ptr [3753h]
+20A5  89 16 59 37 mov word ptr [3759h],dx
+20A9  8B 06 E9 36 mov ax,word ptr [36e9h]
+20AD  A3 5B 37    mov word ptr [375bh],ax
+20B0  8B 1E EB 36 mov bx,word ptr [36ebh]
+20B4  89 1E 5D 37 mov word ptr [375dh],bx
+20B8  8B 16 ED 36 mov dx,word ptr [36edh]
+20BC  89 16 5F 37 mov word ptr [375fh],dx
+20C0  BB 55 37    mov bx,3755h
+20C3  53          push bx
+20C4  E8 51 E3    call 418h
+20C7  83 C4 02    add sp,2h
+20CA  8B 06 55 37 mov ax,word ptr [3755h]
+20CE  A3 4F 37    mov word ptr [374fh],ax
+20D1  8B 1E 57 37 mov bx,word ptr [3757h]
+20D5  89 1E 51 37 mov word ptr [3751h],bx
+20D9  8B 16 59 37 mov dx,word ptr [3759h]
+20DD  89 16 53 37 mov word ptr [3753h],dx
+20E1  8B 06 4F 37 mov ax,word ptr [374fh]
+20E5  A3 55 37    mov word ptr [3755h],ax
+20E8  8B 1E 51 37 mov bx,word ptr [3751h]
+20EC  89 1E 57 37 mov word ptr [3757h],bx
+20F0  8B 16 53 37 mov dx,word ptr [3753h]
+20F4  89 16 59 37 mov word ptr [3759h],dx
+20F8  8B 06 49 37 mov ax,word ptr [3749h]
+20FC  A3 5B 37    mov word ptr [375bh],ax
+20FF  8B 1E 4B 37 mov bx,word ptr [374bh]
+2103  89 1E 5D 37 mov word ptr [375dh],bx
+2107  8B 16 4D 37 mov dx,word ptr [374dh]
+210B  89 16 5F 37 mov word ptr [375fh],dx
+210F  BB 55 37    mov bx,3755h
+2112  53          push bx
+2113  E8 6A E4    call 580h
+2116  83 C4 02    add sp,2h
+2119  8B 06 55 37 mov ax,word ptr [3755h]
+211D  A3 4F 37    mov word ptr [374fh],ax
+2120  8B 1E 57 37 mov bx,word ptr [3757h]
+2124  89 1E 51 37 mov word ptr [3751h],bx
+2128  8B 16 59 37 mov dx,word ptr [3759h]
+212C  89 16 53 37 mov word ptr [3753h],dx
+2130  8B 06 4F 37 mov ax,word ptr [374fh]
+2134  A3 55 37    mov word ptr [3755h],ax
+2137  8B 1E 51 37 mov bx,word ptr [3751h]
+213B  89 1E 57 37 mov word ptr [3757h],bx
+213F  8B 16 53 37 mov dx,word ptr [3753h]
+2143  89 16 59 37 mov word ptr [3759h],dx
+2147  8B 06 EF 36 mov ax,word ptr [36efh]
+214B  A3 5B 37    mov word ptr [375bh],ax
+214E  8B 1E F1 36 mov bx,word ptr [36f1h]
+2152  89 1E 5D 37 mov word ptr [375dh],bx
+2156  8B 16 F3 36 mov dx,word ptr [36f3h]
+215A  89 16 5F 37 mov word ptr [375fh],dx
+215E  BB 55 37    mov bx,3755h
+2161  53          push bx
+2162  E8 B3 E2    call 418h
+2165  83 C4 02    add sp,2h
+2168  8B 06 55 37 mov ax,word ptr [3755h]
+216C  A3 4F 37    mov word ptr [374fh],ax
+216F  8B 1E 57 37 mov bx,word ptr [3757h]
+2173  89 1E 51 37 mov word ptr [3751h],bx
+2177  8B 16 59 37 mov dx,word ptr [3759h]
+217B  89 16 53 37 mov word ptr [3753h],dx
+217F  8B 06 4F 37 mov ax,word ptr [374fh]
+2183  A3 55 37    mov word ptr [3755h],ax
+2186  8B 1E 51 37 mov bx,word ptr [3751h]
+218A  89 1E 57 37 mov word ptr [3757h],bx
+218E  8B 16 53 37 mov dx,word ptr [3753h]
+2192  89 16 59 37 mov word ptr [3759h],dx
+2196  8B 06 49 37 mov ax,word ptr [3749h]
+219A  A3 5B 37    mov word ptr [375bh],ax
+219D  8B 1E 4B 37 mov bx,word ptr [374bh]
+21A1  89 1E 5D 37 mov word ptr [375dh],bx
+21A5  8B 16 4D 37 mov dx,word ptr [374dh]
+21A9  89 16 5F 37 mov word ptr [375fh],dx
+21AD  BB 55 37    mov bx,3755h
+21B0  53          push bx
+21B1  E8 CC E3    call 580h
+21B4  83 C4 02    add sp,2h
+21B7  8B 06 55 37 mov ax,word ptr [3755h]
+21BB  A3 4F 37    mov word ptr [374fh],ax
+21BE  8B 1E 57 37 mov bx,word ptr [3757h]
+21C2  89 1E 51 37 mov word ptr [3751h],bx
+21C6  8B 16 59 37 mov dx,word ptr [3759h]
+21CA  89 16 53 37 mov word ptr [3753h],dx
+21CE  8B 06 4F 37 mov ax,word ptr [374fh]
+21D2  A3 55 37    mov word ptr [3755h],ax
+21D5  8B 1E 51 37 mov bx,word ptr [3751h]
+21D9  89 1E 57 37 mov word ptr [3757h],bx
+21DD  8B 16 53 37 mov dx,word ptr [3753h]
+21E1  89 16 59 37 mov word ptr [3759h],dx
+21E5  8B 06 29 36 mov ax,word ptr [3629h]
+21E9  A3 5B 37    mov word ptr [375bh],ax
+21EC  8B 1E 2B 36 mov bx,word ptr [362bh]
+21F0  89 1E 5D 37 mov word ptr [375dh],bx
+21F4  8B 16 2D 36 mov dx,word ptr [362dh]
+21F8  89 16 5F 37 mov word ptr [375fh],dx
+21FC  BB 55 37    mov bx,3755h
+21FF  53          push bx
+2200  E8 15 E2    call 418h
+2203  83 C4 02    add sp,2h
+2206  8B 06 55 37 mov ax,word ptr [3755h]
+220A  A3 4F 37    mov word ptr [374fh],ax
+220D  8B 1E 57 37 mov bx,word ptr [3757h]
+2211  89 1E 51 37 mov word ptr [3751h],bx
+2215  8B 16 59 37 mov dx,word ptr [3759h]
+2219  89 16 53 37 mov word ptr [3753h],dx
+221D  8B 06 4F 37 mov ax,word ptr [374fh]
+2221  A3 55 37    mov word ptr [3755h],ax
+2224  8B 1E 51 37 mov bx,word ptr [3751h]
+2228  89 1E 57 37 mov word ptr [3757h],bx
+222C  8B 16 53 37 mov dx,word ptr [3753h]
+2230  89 16 59 37 mov word ptr [3759h],dx
+2234  8B 06 43 37 mov ax,word ptr [3743h]
+2238  A3 5B 37    mov word ptr [375bh],ax
+223B  8B 1E 45 37 mov bx,word ptr [3745h]
+223F  89 1E 5D 37 mov word ptr [375dh],bx
+2243  8B 16 47 37 mov dx,word ptr [3747h]
+2247  89 16 5F 37 mov word ptr [375fh],dx
+224B  BB 55 37    mov bx,3755h
+224E  53          push bx
+224F  E8 2E E3    call 580h
+2252  83 C4 02    add sp,2h
+2255  8B 06 55 37 mov ax,word ptr [3755h]
+2259  A3 4F 37    mov word ptr [374fh],ax
+225C  8B 1E 57 37 mov bx,word ptr [3757h]
+2260  89 1E 51 37 mov word ptr [3751h],bx
+2264  8B 16 59 37 mov dx,word ptr [3759h]
+2268  89 16 53 37 mov word ptr [3753h],dx
+226C  5F          pop di
+226D  8B 06 4F 37 mov ax,word ptr [374fh]
+2271  8B 1E 51 37 mov bx,word ptr [3751h]
+2275  8B 16 53 37 mov dx,word ptr [3753h]
+2279  89 05       mov word ptr [di],ax
+227B  89 5D 02    mov word ptr [di+2h],bx
+227E  89 55 04    mov word ptr [di+4h],dx
+2281  EB 00       jmp 2283h
+2283  5F          pop di
+2284  5E          pop si
+2285  5A          pop dx
+2286  5B          pop bx
+2287  89 EC       mov sp,bp
+2289  5D          pop bp
+228A  C3          ret
+228B  55          push bp
+228C  8B EC       mov bp,sp
+228E  53          push bx
+228F  52          push dx
+2290  56          push si
+2291  57          push di
+2292  FF 76 04    push word ptr [bp+4h]
+2295  8B 76 04    mov si,word ptr [bp+4h]
+2298  8B 04       mov ax,word ptr [si]
+229A  8B 4C 02    mov cx,word ptr [si+2h]
+229D  89 CB       mov bx,cx
+229F  8B 54 04    mov dx,word ptr [si+4h]
+22A2  A3 43 37    mov word ptr [3743h],ax
+22A5  89 1E 45 37 mov word ptr [3745h],bx
+22A9  89 16 47 37 mov word ptr [3747h],dx
+22AD  8B 06 43 37 mov ax,word ptr [3743h]
+22B1  A3 55 37    mov word ptr [3755h],ax
+22B4  8B 1E 45 37 mov bx,word ptr [3745h]
+22B8  89 1E 57 37 mov word ptr [3757h],bx
+22BC  8B 16 47 37 mov dx,word ptr [3747h]
+22C0  89 16 59 37 mov word ptr [3759h],dx
+22C4  8B 06 BF 36 mov ax,word ptr [36bfh]
+22C8  A3 5B 37    mov word ptr [375bh],ax
+22CB  8B 1E C1 36 mov bx,word ptr [36c1h]
+22CF  89 1E 5D 37 mov word ptr [375dh],bx
+22D3  8B 16 C3 36 mov dx,word ptr [36c3h]
+22D7  89 16 5F 37 mov word ptr [375fh],dx
+22DB  BB 55 37    mov bx,3755h
+22DE  53          push bx
+22DF  E8 36 E1    call 418h
+22E2  83 C4 02    add sp,2h
+22E5  8B 06 55 37 mov ax,word ptr [3755h]
+22E9  A3 43 37    mov word ptr [3743h],ax
+22EC  8B 1E 57 37 mov bx,word ptr [3757h]
+22F0  89 1E 45 37 mov word ptr [3745h],bx
+22F4  8B 16 59 37 mov dx,word ptr [3759h]
+22F8  89 16 47 37 mov word ptr [3747h],dx
+22FC  5F          pop di
+22FD  8B 06 43 37 mov ax,word ptr [3743h]
+2301  8B 1E 45 37 mov bx,word ptr [3745h]
+2305  8B 16 47 37 mov dx,word ptr [3747h]
+2309  89 05       mov word ptr [di],ax
+230B  89 5D 02    mov word ptr [di+2h],bx
+230E  89 55 04    mov word ptr [di+4h],dx
+2311  FF 76 04    push word ptr [bp+4h]
+2314  E8 E9 F7    call 1b00h
+2317  83 C4 02    add sp,2h
+231A  5F          pop di
+231B  5E          pop si
+231C  5A          pop dx
+231D  5B          pop bx
+231E  89 EC       mov sp,bp
+2320  5D          pop bp
+2321  C3          ret
+2322  55          push bp
+2323  8B EC       mov bp,sp
+2325  53          push bx
+2326  52          push dx
+2327  56          push si
+2328  57          push di
+2329  FF 76 04    push word ptr [bp+4h]
+232C  8B 76 04    mov si,word ptr [bp+4h]
+232F  8B 04       mov ax,word ptr [si]
+2331  8B 4C 02    mov cx,word ptr [si+2h]
+2334  89 CB       mov bx,cx
+2336  8B 54 04    mov dx,word ptr [si+4h]
+2339  A3 43 37    mov word ptr [3743h],ax
+233C  89 1E 45 37 mov word ptr [3745h],bx
+2340  89 16 47 37 mov word ptr [3747h],dx
+2344  8B 06 43 37 mov ax,word ptr [3743h]
+2348  A3 55 37    mov word ptr [3755h],ax
+234B  8B 1E 45 37 mov bx,word ptr [3745h]
+234F  89 1E 57 37 mov word ptr [3757h],bx
+2353  8B 16 47 37 mov dx,word ptr [3747h]
+2357  89 16 59 37 mov word ptr [3759h],dx
+235B  8B 06 7D 37 mov ax,word ptr [377dh]
+235F  A3 5B 37    mov word ptr [375bh],ax
+2362  8B 1E 7F 37 mov bx,word ptr [377fh]
+2366  89 1E 5D 37 mov word ptr [375dh],bx
+236A  8B 16 81 37 mov dx,word ptr [3781h]
+236E  89 16 5F 37 mov word ptr [375fh],dx
+2372  BB 55 37    mov bx,3755h
+2375  53          push bx
+2376  E8 F4 E3    call 76dh
+2379  83 C4 02    add sp,2h
+237C  83 F8 00    cmp ax,0h
+237F  7C 03       jl 2384h
+2381  E9 08 00    jmp 238ch
+2384  C6 06 6E 37 01 mov byte ptr [376eh],1h
+2389  E9 05 00    jmp 2391h
+238C  C6 06 6E 37 00 mov byte ptr [376eh],0h
+2391  8B 06 43 37 mov ax,word ptr [3743h]
+2395  A3 55 37    mov word ptr [3755h],ax
+2398  8B 1E 45 37 mov bx,word ptr [3745h]
+239C  89 1E 57 37 mov word ptr [3757h],bx
+23A0  8B 16 47 37 mov dx,word ptr [3747h]
+23A4  89 16 59 37 mov word ptr [3759h],dx
+23A8  BB 55 37    mov bx,3755h
+23AB  53          push bx
+23AC  E8 AE E4    call 85dh
+23AF  83 C4 02    add sp,2h
+23B2  8B 06 55 37 mov ax,word ptr [3755h]
+23B6  A3 49 37    mov word ptr [3749h],ax
+23B9  8B 1E 57 37 mov bx,word ptr [3757h]
+23BD  89 1E 4B 37 mov word ptr [374bh],bx
+23C1  8B 16 59 37 mov dx,word ptr [3759h]
+23C5  89 16 4D 37 mov word ptr [374dh],dx
+23C9  C6 06 6F 37 00 mov byte ptr [376fh],0h
+23CE  8B 06 49 37 mov ax,word ptr [3749h]
+23D2  A3 55 37    mov word ptr [3755h],ax
+23D5  8B 1E 4B 37 mov bx,word ptr [374bh]
+23D9  89 1E 57 37 mov word ptr [3757h],bx
+23DD  8B 16 4D 37 mov dx,word ptr [374dh]
+23E1  89 16 59 37 mov word ptr [3759h],dx
+23E5  8B 06 29 36 mov ax,word ptr [3629h]
+23E9  A3 5B 37    mov word ptr [375bh],ax
+23EC  8B 1E 2B 36 mov bx,word ptr [362bh]
+23F0  89 1E 5D 37 mov word ptr [375dh],bx
+23F4  8B 16 2D 36 mov dx,word ptr [362dh]
+23F8  89 16 5F 37 mov word ptr [375fh],dx
+23FC  BB 55 37    mov bx,3755h
+23FF  53          push bx
+2400  E8 6A E3    call 76dh
+2403  83 C4 02    add sp,2h
+2406  83 F8 00    cmp ax,0h
+2409  7F 03       jnle 240eh
+240B  E9 54 00    jmp 2462h
+240E  C6 06 6F 37 01 mov byte ptr [376fh],1h
+2413  8B 06 29 36 mov ax,word ptr [3629h]
+2417  A3 55 37    mov word ptr [3755h],ax
+241A  8B 1E 2B 36 mov bx,word ptr [362bh]
+241E  89 1E 57 37 mov word ptr [3757h],bx
+2422  8B 16 2D 36 mov dx,word ptr [362dh]
+2426  89 16 59 37 mov word ptr [3759h],dx
+242A  8B 06 49 37 mov ax,word ptr [3749h]
+242E  A3 5B 37    mov word ptr [375bh],ax
+2431  8B 1E 4B 37 mov bx,word ptr [374bh]
+2435  89 1E 5D 37 mov word ptr [375dh],bx
+2439  8B 16 4D 37 mov dx,word ptr [374dh]
+243D  89 16 5F 37 mov word ptr [375fh],dx
+2441  BB 55 37    mov bx,3755h
+2444  53          push bx
+2445  E8 21 E2    call 669h
+2448  83 C4 02    add sp,2h
+244B  8B 06 55 37 mov ax,word ptr [3755h]
+244F  A3 49 37    mov word ptr [3749h],ax
+2452  8B 1E 57 37 mov bx,word ptr [3757h]
+2456  89 1E 4B 37 mov word ptr [374bh],bx
+245A  8B 16 59 37 mov dx,word ptr [3759h]
+245E  89 16 4D 37 mov word ptr [374dh],dx
+2462  C6 06 70 37 00 mov byte ptr [3770h],0h
+2467  8B 06 49 37 mov ax,word ptr [3749h]
+246B  A3 55 37    mov word ptr [3755h],ax
+246E  8B 1E 4B 37 mov bx,word ptr [374bh]
+2472  89 1E 57 37 mov word ptr [3757h],bx
+2476  8B 16 4D 37 mov dx,word ptr [374dh]
+247A  89 16 59 37 mov word ptr [3759h],dx
+247E  8B 06 71 37 mov ax,word ptr [3771h]
+2482  A3 5B 37    mov word ptr [375bh],ax
+2485  8B 1E 73 37 mov bx,word ptr [3773h]
+2489  89 1E 5D 37 mov word ptr [375dh],bx
+248D  8B 16 75 37 mov dx,word ptr [3775h]
+2491  89 16 5F 37 mov word ptr [375fh],dx
+2495  BB 55 37    mov bx,3755h
+2498  53          push bx
+2499  E8 D1 E2    call 76dh
+249C  83 C4 02    add sp,2h
+249F  83 F8 00    cmp ax,0h
+24A2  7F 03       jnle 24a7h
+24A4  E9 F5 00    jmp 259ch
+24A7  C6 06 70 37 01 mov byte ptr [3770h],1h
+24AC  8B 06 49 37 mov ax,word ptr [3749h]
+24B0  A3 55 37    mov word ptr [3755h],ax
+24B3  8B 1E 4B 37 mov bx,word ptr [374bh]
+24B7  89 1E 57 37 mov word ptr [3757h],bx
+24BB  8B 16 4D 37 mov dx,word ptr [374dh]
+24BF  89 16 59 37 mov word ptr [3759h],dx
+24C3  8B 06 29 36 mov ax,word ptr [3629h]
+24C7  A3 5B 37    mov word ptr [375bh],ax
+24CA  8B 1E 2B 36 mov bx,word ptr [362bh]
+24CE  89 1E 5D 37 mov word ptr [375dh],bx
+24D2  8B 16 2D 36 mov dx,word ptr [362dh]
+24D6  89 16 5F 37 mov word ptr [375fh],dx
+24DA  BB 55 37    mov bx,3755h
+24DD  53          push bx
+24DE  E8 73 DF    call 454h
+24E1  83 C4 02    add sp,2h
+24E4  8B 06 55 37 mov ax,word ptr [3755h]
+24E8  A3 43 37    mov word ptr [3743h],ax
+24EB  8B 1E 57 37 mov bx,word ptr [3757h]
+24EF  89 1E 45 37 mov word ptr [3745h],bx
+24F3  8B 16 59 37 mov dx,word ptr [3759h]
+24F7  89 16 47 37 mov word ptr [3747h],dx
+24FB  8B 06 49 37 mov ax,word ptr [3749h]
+24FF  A3 55 37    mov word ptr [3755h],ax
+2502  8B 1E 4B 37 mov bx,word ptr [374bh]
+2506  89 1E 57 37 mov word ptr [3757h],bx
+250A  8B 16 4D 37 mov dx,word ptr [374dh]
+250E  89 16 59 37 mov word ptr [3759h],dx
+2512  8B 06 29 36 mov ax,word ptr [3629h]
+2516  A3 5B 37    mov word ptr [375bh],ax
+2519  8B 1E 2B 36 mov bx,word ptr [362bh]
+251D  89 1E 5D 37 mov word ptr [375dh],bx
+2521  8B 16 2D 36 mov dx,word ptr [362dh]
+2525  89 16 5F 37 mov word ptr [375fh],dx
+2529  BB 55 37    mov bx,3755h
+252C  53          push bx
+252D  E8 E8 DE    call 418h
+2530  83 C4 02    add sp,2h
+2533  8B 06 55 37 mov ax,word ptr [3755h]
+2537  A3 4F 37    mov word ptr [374fh],ax
+253A  8B 1E 57 37 mov bx,word ptr [3757h]
+253E  89 1E 51 37 mov word ptr [3751h],bx
+2542  8B 16 59 37 mov dx,word ptr [3759h]
+2546  89 16 53 37 mov word ptr [3753h],dx
+254A  8B 06 43 37 mov ax,word ptr [3743h]
+254E  A3 55 37    mov word ptr [3755h],ax
+2551  8B 1E 45 37 mov bx,word ptr [3745h]
+2555  89 1E 57 37 mov word ptr [3757h],bx
+2559  8B 16 47 37 mov dx,word ptr [3747h]
+255D  89 16 59 37 mov word ptr [3759h],dx
+2561  8B 06 4F 37 mov ax,word ptr [374fh]
+2565  A3 5B 37    mov word ptr [375bh],ax
+2568  8B 1E 51 37 mov bx,word ptr [3751h]
+256C  89 1E 5D 37 mov word ptr [375dh],bx
+2570  8B 16 53 37 mov dx,word ptr [3753h]
+2574  89 16 5F 37 mov word ptr [375fh],dx
+2578  BB 55 37    mov bx,3755h
+257B  53          push bx
+257C  E8 EA E0    call 669h
+257F  83 C4 02    add sp,2h
+2582  8B 06 55 37 mov ax,word ptr [3755h]
+2586  A3 43 37    mov word ptr [3743h],ax
+2589  8B 1E 57 37 mov bx,word ptr [3757h]
+258D  89 1E 45 37 mov word ptr [3745h],bx
+2591  8B 16 59 37 mov dx,word ptr [3759h]
+2595  89 16 47 37 mov word ptr [3747h],dx
+2599  E9 17 00    jmp 25b3h
+259C  8B 06 49 37 mov ax,word ptr [3749h]
+25A0  A3 43 37    mov word ptr [3743h],ax
+25A3  8B 1E 4B 37 mov bx,word ptr [374bh]
+25A7  89 1E 45 37 mov word ptr [3745h],bx
+25AB  8B 16 4D 37 mov dx,word ptr [374dh]
+25AF  89 16 47 37 mov word ptr [3747h],dx
+25B3  8B 06 43 37 mov ax,word ptr [3743h]
+25B7  A3 55 37    mov word ptr [3755h],ax
+25BA  8B 1E 45 37 mov bx,word ptr [3745h]
+25BE  89 1E 57 37 mov word ptr [3757h],bx
+25C2  8B 16 47 37 mov dx,word ptr [3747h]
+25C6  89 16 59 37 mov word ptr [3759h],dx
+25CA  8B 06 43 37 mov ax,word ptr [3743h]
+25CE  A3 5B 37    mov word ptr [375bh],ax
+25D1  8B 1E 45 37 mov bx,word ptr [3745h]
+25D5  89 1E 5D 37 mov word ptr [375dh],bx
+25D9  8B 16 47 37 mov dx,word ptr [3747h]
+25DD  89 16 5F 37 mov word ptr [375fh],dx
+25E1  BB 55 37    mov bx,3755h
+25E4  53          push bx
+25E5  E8 98 DF    call 580h
+25E8  83 C4 02    add sp,2h
+25EB  8B 06 55 37 mov ax,word ptr [3755h]
+25EF  A3 4F 37    mov word ptr [374fh],ax
+25F2  8B 1E 57 37 mov bx,word ptr [3757h]
+25F6  89 1E 51 37 mov word ptr [3751h],bx
+25FA  8B 16 59 37 mov dx,word ptr [3759h]
+25FE  89 16 53 37 mov word ptr [3753h],dx
+2602  8B 06 F5 36 mov ax,word ptr [36f5h]
+2606  A3 49 37    mov word ptr [3749h],ax
+2609  8B 1E F7 36 mov bx,word ptr [36f7h]
+260D  89 1E 4B 37 mov word ptr [374bh],bx
+2611  8B 16 F9 36 mov dx,word ptr [36f9h]
+2615  89 16 4D 37 mov word ptr [374dh],dx
+2619  8B 06 49 37 mov ax,word ptr [3749h]
+261D  A3 55 37    mov word ptr [3755h],ax
+2620  8B 1E 4B 37 mov bx,word ptr [374bh]
+2624  89 1E 57 37 mov word ptr [3757h],bx
+2628  8B 16 4D 37 mov dx,word ptr [374dh]
+262C  89 16 59 37 mov word ptr [3759h],dx
+2630  8B 06 4F 37 mov ax,word ptr [374fh]
+2634  A3 5B 37    mov word ptr [375bh],ax
+2637  8B 1E 51 37 mov bx,word ptr [3751h]
+263B  89 1E 5D 37 mov word ptr [375dh],bx
+263F  8B 16 53 37 mov dx,word ptr [3753h]
+2643  89 16 5F 37 mov word ptr [375fh],dx
+2647  BB 55 37    mov bx,3755h
+264A  53          push bx
+264B  E8 32 DF    call 580h
+264E  83 C4 02    add sp,2h
+2651  8B 06 55 37 mov ax,word ptr [3755h]
+2655  A3 49 37    mov word ptr [3749h],ax
+2658  8B 1E 57 37 mov bx,word ptr [3757h]
+265C  89 1E 4B 37 mov word ptr [374bh],bx
+2660  8B 16 59 37 mov dx,word ptr [3759h]
+2664  89 16 4D 37 mov word ptr [374dh],dx
+2668  8B 06 49 37 mov ax,word ptr [3749h]
+266C  A3 55 37    mov word ptr [3755h],ax
+266F  8B 1E 4B 37 mov bx,word ptr [374bh]
+2673  89 1E 57 37 mov word ptr [3757h],bx
+2677  8B 16 4D 37 mov dx,word ptr [374dh]
+267B  89 16 59 37 mov word ptr [3759h],dx
+267F  8B 06 FB 36 mov ax,word ptr [36fbh]
+2683  A3 5B 37    mov word ptr [375bh],ax
+2686  8B 1E FD 36 mov bx,word ptr [36fdh]
+268A  89 1E 5D 37 mov word ptr [375dh],bx
+268E  8B 16 FF 36 mov dx,word ptr [36ffh]
+2692  89 16 5F 37 mov word ptr [375fh],dx
+2696  BB 55 37    mov bx,3755h
+2699  53          push bx
+269A  E8 7B DD    call 418h
+269D  83 C4 02    add sp,2h
+26A0  8B 06 55 37 mov ax,word ptr [3755h]
+26A4  A3 49 37    mov word ptr [3749h],ax
+26A7  8B 1E 57 37 mov bx,word ptr [3757h]
+26AB  89 1E 4B 37 mov word ptr [374bh],bx
+26AF  8B 16 59 37 mov dx,word ptr [3759h]
+26B3  89 16 4D 37 mov word ptr [374dh],dx
+26B7  8B 06 49 37 mov ax,word ptr [3749h]
+26BB  A3 55 37    mov word ptr [3755h],ax
+26BE  8B 1E 4B 37 mov bx,word ptr [374bh]
+26C2  89 1E 57 37 mov word ptr [3757h],bx
+26C6  8B 16 4D 37 mov dx,word ptr [374dh]
+26CA  89 16 59 37 mov word ptr [3759h],dx
+26CE  8B 06 4F 37 mov ax,word ptr [374fh]
+26D2  A3 5B 37    mov word ptr [375bh],ax
+26D5  8B 1E 51 37 mov bx,word ptr [3751h]
+26D9  89 1E 5D 37 mov word ptr [375dh],bx
+26DD  8B 16 53 37 mov dx,word ptr [3753h]
+26E1  89 16 5F 37 mov word ptr [375fh],dx
+26E5  BB 55 37    mov bx,3755h
+26E8  53          push bx
+26E9  E8 94 DE    call 580h
+26EC  83 C4 02    add sp,2h
+26EF  8B 06 55 37 mov ax,word ptr [3755h]
+26F3  A3 49 37    mov word ptr [3749h],ax
+26F6  8B 1E 57 37 mov bx,word ptr [3757h]
+26FA  89 1E 4B 37 mov word ptr [374bh],bx
+26FE  8B 16 59 37 mov dx,word ptr [3759h]
+2702  89 16 4D 37 mov word ptr [374dh],dx
+2706  8B 06 49 37 mov ax,word ptr [3749h]
+270A  A3 55 37    mov word ptr [3755h],ax
+270D  8B 1E 4B 37 mov bx,word ptr [374bh]
+2711  89 1E 57 37 mov word ptr [3757h],bx
+2715  8B 16 4D 37 mov dx,word ptr [374dh]
+2719  89 16 59 37 mov word ptr [3759h],dx
+271D  8B 06 01 37 mov ax,word ptr [3701h]
+2721  A3 5B 37    mov word ptr [375bh],ax
+2724  8B 1E 03 37 mov bx,word ptr [3703h]
+2728  89 1E 5D 37 mov word ptr [375dh],bx
+272C  8B 16 05 37 mov dx,word ptr [3705h]
+2730  89 16 5F 37 mov word ptr [375fh],dx
+2734  BB 55 37    mov bx,3755h
+2737  53          push bx
+2738  E8 DD DC    call 418h
+273B  83 C4 02    add sp,2h
+273E  8B 06 55 37 mov ax,word ptr [3755h]
+2742  A3 49 37    mov word ptr [3749h],ax
+2745  8B 1E 57 37 mov bx,word ptr [3757h]
+2749  89 1E 4B 37 mov word ptr [374bh],bx
+274D  8B 16 59 37 mov dx,word ptr [3759h]
+2751  89 16 4D 37 mov word ptr [374dh],dx
+2755  8B 06 49 37 mov ax,word ptr [3749h]
+2759  A3 55 37    mov word ptr [3755h],ax
+275C  8B 1E 4B 37 mov bx,word ptr [374bh]
+2760  89 1E 57 37 mov word ptr [3757h],bx
+2764  8B 16 4D 37 mov dx,word ptr [374dh]
+2768  89 16 59 37 mov word ptr [3759h],dx
+276C  8B 06 4F 37 mov ax,word ptr [374fh]
+2770  A3 5B 37    mov word ptr [375bh],ax
+2773  8B 1E 51 37 mov bx,word ptr [3751h]
+2777  89 1E 5D 37 mov word ptr [375dh],bx
+277B  8B 16 53 37 mov dx,word ptr [3753h]
+277F  89 16 5F 37 mov word ptr [375fh],dx
+2783  BB 55 37    mov bx,3755h
+2786  53          push bx
+2787  E8 F6 DD    call 580h
+278A  83 C4 02    add sp,2h
+278D  8B 06 55 37 mov ax,word ptr [3755h]
+2791  A3 49 37    mov word ptr [3749h],ax
+2794  8B 1E 57 37 mov bx,word ptr [3757h]
+2798  89 1E 4B 37 mov word ptr [374bh],bx
+279C  8B 16 59 37 mov dx,word ptr [3759h]
+27A0  89 16 4D 37 mov word ptr [374dh],dx
+27A4  8B 06 49 37 mov ax,word ptr [3749h]
+27A8  A3 55 37    mov word ptr [3755h],ax
+27AB  8B 1E 4B 37 mov bx,word ptr [374bh]
+27AF  89 1E 57 37 mov word ptr [3757h],bx
+27B3  8B 16 4D 37 mov dx,word ptr [374dh]
+27B7  89 16 59 37 mov word ptr [3759h],dx
+27BB  8B 06 07 37 mov ax,word ptr [3707h]
+27BF  A3 5B 37    mov word ptr [375bh],ax
+27C2  8B 1E 09 37 mov bx,word ptr [3709h]
+27C6  89 1E 5D 37 mov word ptr [375dh],bx
+27CA  8B 16 0B 37 mov dx,word ptr [370bh]
+27CE  89 16 5F 37 mov word ptr [375fh],dx
+27D2  BB 55 37    mov bx,3755h
+27D5  53          push bx
+27D6  E8 3F DC    call 418h
+27D9  83 C4 02    add sp,2h
+27DC  8B 06 55 37 mov ax,word ptr [3755h]
+27E0  A3 49 37    mov word ptr [3749h],ax
+27E3  8B 1E 57 37 mov bx,word ptr [3757h]
+27E7  89 1E 4B 37 mov word ptr [374bh],bx
+27EB  8B 16 59 37 mov dx,word ptr [3759h]
+27EF  89 16 4D 37 mov word ptr [374dh],dx
+27F3  8B 06 49 37 mov ax,word ptr [3749h]
+27F7  A3 55 37    mov word ptr [3755h],ax
+27FA  8B 1E 4B 37 mov bx,word ptr [374bh]
+27FE  89 1E 57 37 mov word ptr [3757h],bx
+2802  8B 16 4D 37 mov dx,word ptr [374dh]
+2806  89 16 59 37 mov word ptr [3759h],dx
+280A  8B 06 4F 37 mov ax,word ptr [374fh]
+280E  A3 5B 37    mov word ptr [375bh],ax
+2811  8B 1E 51 37 mov bx,word ptr [3751h]
+2815  89 1E 5D 37 mov word ptr [375dh],bx
+2819  8B 16 53 37 mov dx,word ptr [3753h]
+281D  89 16 5F 37 mov word ptr [375fh],dx
+2821  BB 55 37    mov bx,3755h
+2824  53          push bx
+2825  E8 58 DD    call 580h
+2828  83 C4 02    add sp,2h
+282B  8B 06 55 37 mov ax,word ptr [3755h]
+282F  A3 49 37    mov word ptr [3749h],ax
+2832  8B 1E 57 37 mov bx,word ptr [3757h]
+2836  89 1E 4B 37 mov word ptr [374bh],bx
+283A  8B 16 59 37 mov dx,word ptr [3759h]
+283E  89 16 4D 37 mov word ptr [374dh],dx
+2842  8B 06 49 37 mov ax,word ptr [3749h]
+2846  A3 55 37    mov word ptr [3755h],ax
+2849  8B 1E 4B 37 mov bx,word ptr [374bh]
+284D  89 1E 57 37 mov word ptr [3757h],bx
+2851  8B 16 4D 37 mov dx,word ptr [374dh]
+2855  89 16 59 37 mov word ptr [3759h],dx
+2859  8B 06 0D 37 mov ax,word ptr [370dh]
+285D  A3 5B 37    mov word ptr [375bh],ax
+2860  8B 1E 0F 37 mov bx,word ptr [370fh]
+2864  89 1E 5D 37 mov word ptr [375dh],bx
+2868  8B 16 11 37 mov dx,word ptr [3711h]
+286C  89 16 5F 37 mov word ptr [375fh],dx
+2870  BB 55 37    mov bx,3755h
+2873  53          push bx
+2874  E8 A1 DB    call 418h
+2877  83 C4 02    add sp,2h
+287A  8B 06 55 37 mov ax,word ptr [3755h]
+287E  A3 49 37    mov word ptr [3749h],ax
+2881  8B 1E 57 37 mov bx,word ptr [3757h]
+2885  89 1E 4B 37 mov word ptr [374bh],bx
+2889  8B 16 59 37 mov dx,word ptr [3759h]
+288D  89 16 4D 37 mov word ptr [374dh],dx
+2891  8B 06 49 37 mov ax,word ptr [3749h]
+2895  A3 55 37    mov word ptr [3755h],ax
+2898  8B 1E 4B 37 mov bx,word ptr [374bh]
+289C  89 1E 57 37 mov word ptr [3757h],bx
+28A0  8B 16 4D 37 mov dx,word ptr [374dh]
+28A4  89 16 59 37 mov word ptr [3759h],dx
+28A8  8B 06 4F 37 mov ax,word ptr [374fh]
+28AC  A3 5B 37    mov word ptr [375bh],ax
+28AF  8B 1E 51 37 mov bx,word ptr [3751h]
+28B3  89 1E 5D 37 mov word ptr [375dh],bx
+28B7  8B 16 53 37 mov dx,word ptr [3753h]
+28BB  89 16 5F 37 mov word ptr [375fh],dx
+28BF  BB 55 37    mov bx,3755h
+28C2  53          push bx
+28C3  E8 BA DC    call 580h
+28C6  83 C4 02    add sp,2h
+28C9  8B 06 55 37 mov ax,word ptr [3755h]
+28CD  A3 49 37    mov word ptr [3749h],ax
+28D0  8B 1E 57 37 mov bx,word ptr [3757h]
+28D4  89 1E 4B 37 mov word ptr [374bh],bx
+28D8  8B 16 59 37 mov dx,word ptr [3759h]
+28DC  89 16 4D 37 mov word ptr [374dh],dx
+28E0  8B 06 49 37 mov ax,word ptr [3749h]
+28E4  A3 55 37    mov word ptr [3755h],ax
+28E7  8B 1E 4B 37 mov bx,word ptr [374bh]
+28EB  89 1E 57 37 mov word ptr [3757h],bx
+28EF  8B 16 4D 37 mov dx,word ptr [374dh]
+28F3  89 16 59 37 mov word ptr [3759h],dx
+28F7  8B 06 29 36 mov ax,word ptr [3629h]
+28FB  A3 5B 37    mov word ptr [375bh],ax
+28FE  8B 1E 2B 36 mov bx,word ptr [362bh]
+2902  89 1E 5D 37 mov word ptr [375dh],bx
+2906  8B 16 2D 36 mov dx,word ptr [362dh]
+290A  89 16 5F 37 mov word ptr [375fh],dx
+290E  BB 55 37    mov bx,3755h
+2911  53          push bx
+2912  E8 03 DB    call 418h
+2915  83 C4 02    add sp,2h
+2918  8B 06 55 37 mov ax,word ptr [3755h]
+291C  A3 49 37    mov word ptr [3749h],ax
+291F  8B 1E 57 37 mov bx,word ptr [3757h]
+2923  89 1E 4B 37 mov word ptr [374bh],bx
+2927  8B 16 59 37 mov dx,word ptr [3759h]
+292B  89 16 4D 37 mov word ptr [374dh],dx
+292F  8B 06 49 37 mov ax,word ptr [3749h]
+2933  A3 55 37    mov word ptr [3755h],ax
+2936  8B 1E 4B 37 mov bx,word ptr [374bh]
+293A  89 1E 57 37 mov word ptr [3757h],bx
+293E  8B 16 4D 37 mov dx,word ptr [374dh]
+2942  89 16 59 37 mov word ptr [3759h],dx
+2946  8B 06 43 37 mov ax,word ptr [3743h]
+294A  A3 5B 37    mov word ptr [375bh],ax
+294D  8B 1E 45 37 mov bx,word ptr [3745h]
+2951  89 1E 5D 37 mov word ptr [375dh],bx
+2955  8B 16 47 37 mov dx,word ptr [3747h]
+2959  89 16 5F 37 mov word ptr [375fh],dx
+295D  BB 55 37    mov bx,3755h
+2960  53          push bx
+2961  E8 1C DC    call 580h
+2964  83 C4 02    add sp,2h
+2967  8B 06 55 37 mov ax,word ptr [3755h]
+296B  A3 49 37    mov word ptr [3749h],ax
+296E  8B 1E 57 37 mov bx,word ptr [3757h]
+2972  89 1E 4B 37 mov word ptr [374bh],bx
+2976  8B 16 59 37 mov dx,word ptr [3759h]
+297A  89 16 4D 37 mov word ptr [374dh],dx
+297E  F6 06 70 37 01 test byte ptr [3770h],1h
+2983  75 03       jne 2988h
+2985  E9 4F 00    jmp 29d7h
+2988  8B 06 49 37 mov ax,word ptr [3749h]
+298C  A3 55 37    mov word ptr [3755h],ax
+298F  8B 1E 4B 37 mov bx,word ptr [374bh]
+2993  89 1E 57 37 mov word ptr [3757h],bx
+2997  8B 16 4D 37 mov dx,word ptr [374dh]
+299B  89 16 59 37 mov word ptr [3759h],dx
+299F  8B 06 77 37 mov ax,word ptr [3777h]
+29A3  A3 5B 37    mov word ptr [375bh],ax
+29A6  8B 1E 79 37 mov bx,word ptr [3779h]
+29AA  89 1E 5D 37 mov word ptr [375dh],bx
+29AE  8B 16 7B 37 mov dx,word ptr [377bh]
+29B2  89 16 5F 37 mov word ptr [375fh],dx
+29B6  BB 55 37    mov bx,3755h
+29B9  53          push bx
+29BA  E8 5B DA    call 418h
+29BD  83 C4 02    add sp,2h
+29C0  8B 06 55 37 mov ax,word ptr [3755h]
+29C4  A3 49 37    mov word ptr [3749h],ax
+29C7  8B 1E 57 37 mov bx,word ptr [3757h]
+29CB  89 1E 4B 37 mov word ptr [374bh],bx
+29CF  8B 16 59 37 mov dx,word ptr [3759h]
+29D3  89 16 4D 37 mov word ptr [374dh],dx
+29D7  F6 06 6F 37 01 test byte ptr [376fh],1h
+29DC  75 03       jne 29e1h
+29DE  E9 4F 00    jmp 2a30h
+29E1  8B 06 BF 36 mov ax,word ptr [36bfh]
+29E5  A3 55 37    mov word ptr [3755h],ax
+29E8  8B 1E C1 36 mov bx,word ptr [36c1h]
+29EC  89 1E 57 37 mov word ptr [3757h],bx
+29F0  8B 16 C3 36 mov dx,word ptr [36c3h]
+29F4  89 16 59 37 mov word ptr [3759h],dx
+29F8  8B 06 49 37 mov ax,word ptr [3749h]
+29FC  A3 5B 37    mov word ptr [375bh],ax
+29FF  8B 1E 4B 37 mov bx,word ptr [374bh]
+2A03  89 1E 5D 37 mov word ptr [375dh],bx
+2A07  8B 16 4D 37 mov dx,word ptr [374dh]
+2A0B  89 16 5F 37 mov word ptr [375fh],dx
+2A0F  BB 55 37    mov bx,3755h
+2A12  53          push bx
+2A13  E8 3E DA    call 454h
+2A16  83 C4 02    add sp,2h
+2A19  8B 06 55 37 mov ax,word ptr [3755h]
+2A1D  A3 49 37    mov word ptr [3749h],ax
+2A20  8B 1E 57 37 mov bx,word ptr [3757h]
+2A24  89 1E 4B 37 mov word ptr [374bh],bx
+2A28  8B 16 59 37 mov dx,word ptr [3759h]
+2A2C  89 16 4D 37 mov word ptr [374dh],dx
+2A30  F6 06 6E 37 01 test byte ptr [376eh],1h
+2A35  75 03       jne 2a3ah
+2A37  E9 1E 00    jmp 2a58h
+2A3A  8B 06 49 37 mov ax,word ptr [3749h]
+2A3E  A3 49 37    mov word ptr [3749h],ax
+2A41  8B 1E 4B 37 mov bx,word ptr [374bh]
+2A45  89 1E 4B 37 mov word ptr [374bh],bx
+2A49  8B 16 4D 37 mov dx,word ptr [374dh]
+2A4D  89 16 4D 37 mov word ptr [374dh],dx
+2A51  BF 49 37    mov di,3749h
+2A54  80 75 05 80 xor byte ptr [di+5h],80h
+2A58  5F          pop di
+2A59  8B 06 49 37 mov ax,word ptr [3749h]
+2A5D  8B 1E 4B 37 mov bx,word ptr [374bh]
+2A61  8B 16 4D 37 mov dx,word ptr [374dh]
+2A65  89 05       mov word ptr [di],ax
+2A67  89 5D 02    mov word ptr [di+2h],bx
+2A6A  89 55 04    mov word ptr [di+4h],dx
+2A6D  EB 00       jmp 2a6fh
+2A6F  5F          pop di
+2A70  5E          pop si
+2A71  5A          pop dx
+2A72  5B          pop bx
+2A73  89 EC       mov sp,bp
+2A75  5D          pop bp
+2A76  C3          ret
+2A77  55          push bp
+2A78  8B EC       mov bp,sp
+2A7A  53          push bx
+2A7B  52          push dx
+2A7C  56          push si
+2A7D  57          push di
+2A7E  8B 7E 04    mov di,word ptr [bp+4h]
+2A81  88 EA       mov dl,ch
+2A83  B5 00       mov ch,0h
+2A85  B6 00       mov dh,0h
+2A87  51          push cx
+2A88  BB C3 34    mov bx,34c3h
+2A8B  E8 41 02    call 2ccfh
+2A8E  59          pop cx
+2A8F  89 D8       mov ax,bx
+2A91  BB C3 34    mov bx,34c3h
+2A94  2B C3       sub ax,bx
+2A96  A3 03 35    mov word ptr [3503h],ax
+2A99  89 0E 05 35 mov word ptr [3505h],cx
+2A9D  8B 06 05 35 mov ax,word ptr [3505h]
+2AA1  8B 16 03 35 mov dx,word ptr [3503h]
+2AA5  2B C2       sub ax,dx
+2AA7  83 F8 00    cmp ax,0h
+2AAA  7D 02       jnl 2aaeh
+2AAC  31 C0       xor ax,ax
+2AAE  A3 07 35    mov word ptr [3507h],ax
+2AB1  8B 16 03 35 mov dx,word ptr [3503h]
+2AB5  03 C2       add ax,dx
+2AB7  3D FF 00    cmp ax,0ffh
+2ABA  77 03       jnbe 2abfh
+2ABC  E9 03 00    jmp 2ac2h
+2ABF  B8 FF 00    mov ax,0ffh
+2AC2  A3 09 35    mov word ptr [3509h],ax
+2AC5  8B 56 06    mov dx,word ptr [bp+6h]
+2AC8  89 D7       mov di,dx
+2ACA  88 05       mov byte ptr [di],al
+2ACC  47          inc di
+2ACD  8B 0E 07 35 mov cx,word ptr [3507h]
+2AD1  E3 07       jcxz 2adah
+2AD3  B0 20       mov al,20h
+2AD5  88 05       mov byte ptr [di],al
+2AD7  47          inc di
+2AD8  E2 F9       loop 2ad3h
+2ADA  BE C3 34    mov si,34c3h
+2ADD  8B 0E 03 35 mov cx,word ptr [3503h]
+2AE1  E3 08       jcxz 2aebh
+2AE3  8A 04       mov al,byte ptr [si]
+2AE5  88 05       mov byte ptr [di],al
+2AE7  46          inc si
+2AE8  47          inc di
+2AE9  E2 F8       loop 2ae3h
+2AEB  8B 06 09 35 mov ax,word ptr [3509h]
+2AEF  5F          pop di
+2AF0  5E          pop si
+2AF1  5A          pop dx
+2AF2  5B          pop bx
+2AF3  89 EC       mov sp,bp
+2AF5  5D          pop bp
+2AF6  C3          ret
+2AF7  55          push bp
+2AF8  8B EC       mov bp,sp
+2AFA  53          push bx
+2AFB  52          push dx
+2AFC  56          push si
+2AFD  57          push di
+2AFE  8B 5E 04    mov bx,word ptr [bp+4h]
+2B01  8B 7E 06    mov di,word ptr [bp+6h]
+2B04  89 1E 0B 35 mov word ptr [350bh],bx
+2B08  E8 CF 02    call 2ddah
+2B0B  73 03       jnb 2b10h
+2B0D  E9 0B 00    jmp 2b1bh
+2B10  89 D8       mov ax,bx
+2B12  8B 16 0B 35 mov dx,word ptr [350bh]
+2B16  2B C2       sub ax,dx
+2B18  E9 03 00    jmp 2b1eh
+2B1B  B8 FF FF    mov ax,0ffffh
+2B1E  5F          pop di
+2B1F  5E          pop si
+2B20  5A          pop dx
+2B21  5B          pop bx
+2B22  89 EC       mov sp,bp
+2B24  5D          pop bp
+2B25  C3          ret
+2B26  3C 00       cmp al,0h
+2B28  74 03       je 2b2dh
+2B2A  E9 01 00    jmp 2b2eh
+2B2D  C3          ret
+2B2E  80 CE 80    or dh,80h
+2B31  51          push cx
+2B32  52          push dx
+2B33  53          push bx
+2B34  50          push ax
+2B35  D1 EA       shr dx,1h
+2B37  D1 DB       rcr bx,1h
+2B39  D0 DC       rcr ah,1h
+2B3B  D1 EA       shr dx,1h
+2B3D  D1 DB       rcr bx,1h
+2B3F  D0 DC       rcr ah,1h
+2B41  59          pop cx
+2B42  00 EC       add ah,ch
+2B44  59          pop cx
+2B45  13 D9       adc bx,cx
+2B47  59          pop cx
+2B48  13 D1       adc dx,cx
+2B4A  59          pop cx
+2B4B  72 03       jb 2b50h
+2B4D  E9 0F 00    jmp 2b5fh
+2B50  D1 DA       rcr dx,1h
+2B52  D1 DB       rcr bx,1h
+2B54  D0 DC       rcr ah,1h
+2B56  FE C0       inc al
+2B58  74 03       je 2b5dh
+2B5A  E9 02 00    jmp 2b5fh
+2B5D  F9          stc
+2B5E  C3          ret
+2B5F  80 E6 7F    and dh,7fh
+2B62  04 03       add al,3h
+2B64  C3          ret
+2B65  52          push dx
+2B66  53          push bx
+2B67  50          push ax
+2B68  88 0E 85 34 mov byte ptr [3485h],cl
+2B6C  80 F9 00    cmp cl,0h
+2B6F  78 03       js 2b74h
+2B71  E9 02 00    jmp 2b76h
+2B74  F6 D9       neg cl
+2B76  88 CB       mov bl,cl
+2B78  80 E3 FC    and bl,0fch
+2B7B  88 DF       mov bh,bl
+2B7D  D0 EB       shr bl,1h
+2B7F  00 FB       add bl,bh
+2B81  30 FF       xor bh,bh
+2B83  8D BF 87 34 lea di,[bx+3487h]
+2B87  8B 05       mov ax,word ptr [di]
+2B89  8B 5D 02    mov bx,word ptr [di+2h]
+2B8C  8B 55 04    mov dx,word ptr [di+4h]
+2B8F  80 E1 03    and cl,3h
+2B92  75 03       jne 2b97h
+2B94  E9 0A 00    jmp 2ba1h
+2B97  E8 8C FF    call 2b26h
+2B9A  FE C9       dec cl
+2B9C  74 03       je 2ba1h
+2B9E  E9 F6 FF    jmp 2b97h
+2BA1  89 C1       mov cx,ax
+2BA3  89 DE       mov si,bx
+2BA5  89 D7       mov di,dx
+2BA7  58          pop ax
+2BA8  5B          pop bx
+2BA9  5A          pop dx
+2BAA  F6 06 85 34 80 test byte ptr [3485h],80h
+2BAF  74 03       je 2bb4h
+2BB1  E9 03 00    jmp 2bb7h
+2BB4  E9 FF D9    jmp 5b6h
+2BB7  E9 E5 DA    jmp 69fh
+2BBA  80 F9 DA    cmp cl,0dah
+2BBD  7D 03       jnl 2bc2h
+2BBF  E9 12 00    jmp 2bd4h
+2BC2  80 F9 26    cmp cl,26h
+2BC5  7E 03       jle 2bcah
+2BC7  E9 0A 00    jmp 2bd4h
+2BCA  51          push cx
+2BCB  56          push si
+2BCC  57          push di
+2BCD  E8 95 FF    call 2b65h
+2BD0  5F          pop di
+2BD1  5E          pop si
+2BD2  59          pop cx
+2BD3  C3          ret
+2BD4  F9          stc
+2BD5  C3          ret
+2BD6  8B 05       mov ax,word ptr [di]
+2BD8  8B 5D 02    mov bx,word ptr [di+2h]
+2BDB  8B 55 04    mov dx,word ptr [di+4h]
+2BDE  3C 00       cmp al,0h
+2BE0  74 03       je 2be5h
+2BE2  E9 16 00    jmp 2bfbh
+2BE5  BE 79 34    mov si,3479h
+2BE8  C7 04 30 30 mov word ptr [si],3030h
+2BEC  46          inc si
+2BED  46          inc si
+2BEE  81 FE 85 34 cmp si,3485h
+2BF2  74 03       je 2bf7h
+2BF4  E9 F1 FF    jmp 2be8h
+2BF7  B9 00 00    mov cx,0h
+2BFA  C3          ret
+2BFB  88 F5       mov ch,dh
+2BFD  80 E6 7F    and dh,7fh
+2C00  50          push ax
+2C01  52          push dx
+2C02  2C 80       sub al,80h
+2C04  98          cbw
+2C05  BA 4D 00    mov dx,4dh
+2C08  F7 EA       imul dx
+2C0A  05 05 00    add ax,5h
+2C0D  88 E1       mov cl,ah
+2C0F  5A          pop dx
+2C10  58          pop ax
+2C11  80 F9 D9    cmp cl,0d9h
+2C14  74 03       je 2c19h
+2C16  E9 02 00    jmp 2c1bh
+2C19  FE C1       inc cl
+2C1B  51          push cx
+2C1C  F6 D9       neg cl
+2C1E  E8 44 FF    call 2b65h
+2C21  59          pop cx
+2C22  3C 81       cmp al,81h
+2C24  72 03       jb 2c29h
+2C26  E9 05 00    jmp 2c2eh
+2C29  E8 FA FE    call 2b26h
+2C2C  FE C9       dec cl
+2C2E  51          push cx
+2C2F  80 CE 80    or dh,80h
+2C32  B1 84       mov cl,84h
+2C34  28 C1       sub cl,al
+2C36  B0 00       mov al,0h
+2C38  80 F9 00    cmp cl,0h
+2C3B  75 03       jne 2c40h
+2C3D  E9 0D 00    jmp 2c4dh
+2C40  D1 EA       shr dx,1h
+2C42  D1 DB       rcr bx,1h
+2C44  D0 DC       rcr ah,1h
+2C46  FE C9       dec cl
+2C48  74 03       je 2c4dh
+2C4A  E9 F3 FF    jmp 2c40h
+2C4D  BE 79 34    mov si,3479h
+2C50  88 F5       mov ch,dh
+2C52  B1 04       mov cl,4h
+2C54  D2 ED       shr ch,cl
+2C56  80 C5 30    add ch,30h
+2C59  88 2C       mov byte ptr [si],ch
+2C5B  80 E6 0F    and dh,0fh
+2C5E  52          push dx
+2C5F  53          push bx
+2C60  50          push ax
+2C61  D1 E0       shl ax,1h
+2C63  D1 D3       rcl bx,1h
+2C65  D1 D2       rcl dx,1h
+2C67  D1 E0       shl ax,1h
+2C69  D1 D3       rcl bx,1h
+2C6B  D1 D2       rcl dx,1h
+2C6D  59          pop cx
+2C6E  03 C1       add ax,cx
+2C70  59          pop cx
+2C71  13 D9       adc bx,cx
+2C73  59          pop cx
+2C74  13 D1       adc dx,cx
+2C76  D1 E0       shl ax,1h
+2C78  D1 D3       rcl bx,1h
+2C7A  D1 D2       rcl dx,1h
+2C7C  46          inc si
+2C7D  81 FE 85 34 cmp si,3485h
+2C81  74 03       je 2c86h
+2C83  E9 CA FF    jmp 2c50h
+2C86  59          pop cx
+2C87  C3          ret
+2C88  30 E4       xor ah,ah
+2C8A  BB 79 34    mov bx,3479h
+2C8D  03 D8       add bx,ax
+2C8F  80 3F 35    cmp byte ptr [bx],35h
+2C92  C6 07 00    mov byte ptr [bx],0h
+2C95  73 03       jnb 2c9ah
+2C97  E9 21 00    jmp 2cbbh
+2C9A  FE C8       dec al
+2C9C  79 03       jns 2ca1h
+2C9E  E9 11 00    jmp 2cb2h
+2CA1  4B          dec bx
+2CA2  FE 07       inc byte ptr [bx]
+2CA4  80 3F 3A    cmp byte ptr [bx],3ah
+2CA7  73 03       jnb 2cach
+2CA9  E9 0F 00    jmp 2cbbh
+2CAC  C6 07 00    mov byte ptr [bx],0h
+2CAF  E9 E8 FF    jmp 2c9ah
+2CB2  C6 07 31    mov byte ptr [bx],31h
+2CB5  C6 47 01 00 mov byte ptr [bx+1h],0h
+2CB9  FE C1       inc cl
+2CBB  C3          ret
+2CBC  8A 04       mov al,byte ptr [si]
+2CBE  3C 00       cmp al,0h
+2CC0  75 03       jne 2cc5h
+2CC2  E9 04 00    jmp 2cc9h
+2CC5  46          inc si
+2CC6  E9 02 00    jmp 2ccbh
+2CC9  B0 30       mov al,30h
+2CCB  88 07       mov byte ptr [bx],al
+2CCD  43          inc bx
+2CCE  C3          ret
+2CCF  53          push bx
+2CD0  81 FA 19 00 cmp dx,19h
+2CD4  73 03       jnb 2cd9h
+2CD6  E9 3F 00    jmp 2d18h
+2CD9  89 C8       mov ax,cx
+2CDB  80 FD 00    cmp ch,0h
+2CDE  75 03       jne 2ce3h
+2CE0  E9 10 00    jmp 2cf3h
+2CE3  F6 C5 80    test ch,80h
+2CE6  75 03       jne 2cebh
+2CE8  E9 05 00    jmp 2cf0h
+2CEB  31 C0       xor ax,ax
+2CED  E9 03 00    jmp 2cf3h
+2CF0  B8 FF 00    mov ax,0ffh
+2CF3  B2 07       mov dl,7h
+2CF5  F6 45 05 80 test byte ptr [di+5h],80h
+2CF9  75 03       jne 2cfeh
+2CFB  E9 02 00    jmp 2d00h
+2CFE  FE C2       inc dl
+2D00  2A C2       sub al,dl
+2D02  72 03       jb 2d07h
+2D04  E9 02 00    jmp 2d09h
+2D07  B0 00       mov al,0h
+2D09  3C 09       cmp al,9h
+2D0B  73 03       jnb 2d10h
+2D0D  E9 02 00    jmp 2d12h
+2D10  B0 09       mov al,9h
+2D12  FE C0       inc al
+2D14  88 C2       mov dl,al
+2D16  88 C6       mov dh,al
+2D18  52          push dx
+2D19  E8 BA FE    call 2bd6h
+2D1C  5A          pop dx
+2D1D  8A C2       mov al,dl
+2D1F  FE C0       inc al
+2D21  80 FE 00    cmp dh,0h
+2D24  74 03       je 2d29h
+2D26  E9 18 00    jmp 2d41h
+2D29  00 C8       add al,cl
+2D2B  78 03       js 2d30h
+2D2D  E9 08 00    jmp 2d38h
+2D30  C6 06 79 34 00 mov byte ptr [3479h],0h
+2D35  E9 0C 00    jmp 2d44h
+2D38  3C 0C       cmp al,0ch
+2D3A  73 03       jnb 2d3fh
+2D3C  E9 02 00    jmp 2d41h
+2D3F  B0 0B       mov al,0bh
+2D41  E8 44 FF    call 2c88h
+2D44  5B          pop bx
+2D45  BE 79 34    mov si,3479h
+2D48  F6 C5 80    test ch,80h
+2D4B  75 03       jne 2d50h
+2D4D  E9 05 00    jmp 2d55h
+2D50  B0 2D       mov al,2dh
+2D52  E8 76 FF    call 2ccbh
+2D55  88 CD       mov ch,cl
+2D57  80 FE 00    cmp dh,0h
+2D5A  75 03       jne 2d5fh
+2D5C  E9 02 00    jmp 2d61h
+2D5F  B5 00       mov ch,0h
+2D61  80 FD 00    cmp ch,0h
+2D64  78 03       js 2d69h
+2D66  E9 06 00    jmp 2d6fh
+2D69  E8 5D FF    call 2cc9h
+2D6C  E9 0A 00    jmp 2d79h
+2D6F  E8 4A FF    call 2cbch
+2D72  FE CD       dec ch
+2D74  78 03       js 2d79h
+2D76  E9 F6 FF    jmp 2d6fh
+2D79  80 FA 00    cmp dl,0h
+2D7C  75 03       jne 2d81h
+2D7E  E9 23 00    jmp 2da4h
+2D81  B0 2E       mov al,2eh
+2D83  E8 45 FF    call 2ccbh
+2D86  FE C5       inc ch
+2D88  75 03       jne 2d8dh
+2D8A  E9 0A 00    jmp 2d97h
+2D8D  E8 39 FF    call 2cc9h
+2D90  FE CA       dec dl
+2D92  74 03       je 2d97h
+2D94  E9 EF FF    jmp 2d86h
+2D97  FE CA       dec dl
+2D99  79 03       jns 2d9eh
+2D9B  E9 06 00    jmp 2da4h
+2D9E  E8 1B FF    call 2cbch
+2DA1  E9 F3 FF    jmp 2d97h
+2DA4  80 FE 00    cmp dh,0h
+2DA7  74 03       je 2dach
+2DA9  E9 01 00    jmp 2dadh
+2DAC  C3          ret
+2DAD  B0 45       mov al,45h
+2DAF  E8 19 FF    call 2ccbh
+2DB2  B0 2B       mov al,2bh
+2DB4  80 F9 00    cmp cl,0h
+2DB7  78 03       js 2dbch
+2DB9  E9 04 00    jmp 2dc0h
+2DBC  F6 D9       neg cl
+2DBE  B0 2D       mov al,2dh
+2DC0  E8 08 FF    call 2ccbh
+2DC3  B0 2F       mov al,2fh
+2DC5  FE C0       inc al
+2DC7  80 E9 0A    sub cl,0ah
+2DCA  72 03       jb 2dcfh
+2DCC  E9 F6 FF    jmp 2dc5h
+2DCF  E8 F9 FE    call 2ccbh
+2DD2  80 C1 3A    add cl,3ah
+2DD5  88 C8       mov al,cl
+2DD7  E9 F1 FE    jmp 2ccbh
+2DDA  8A 0F       mov cl,byte ptr [bx]
+2DDC  80 F9 2D    cmp cl,2dh
+2DDF  74 03       je 2de4h
+2DE1  E9 01 00    jmp 2de5h
+2DE4  43          inc bx
+2DE5  51          push cx
+2DE6  E8 1F 00    call 2e08h
+2DE9  59          pop cx
+2DEA  73 03       jnb 2defh
+2DEC  E9 17 00    jmp 2e06h
+2DEF  80 F9 2D    cmp cl,2dh
+2DF2  74 03       je 2df7h
+2DF4  E9 0D 00    jmp 2e04h
+2DF7  8A 05       mov al,byte ptr [di]
+2DF9  3C 00       cmp al,0h
+2DFB  75 03       jne 2e00h
+2DFD  E9 04 00    jmp 2e04h
+2E00  80 75 05 80 xor byte ptr [di+5h],80h
+2E04  F8          clc
+2E05  C3          ret
+2E06  F9          stc
+2E07  C3          ret
+2E08  89 DE       mov si,bx
+2E0A  31 C0       xor ax,ax
+2E0C  31 DB       xor bx,bx
+2E0E  31 D2       xor dx,dx
+2E10  31 C9       xor cx,cx
+2E12  C6 06 86 34 00 mov byte ptr [3486h],0h
+2E17  8A 0C       mov cl,byte ptr [si]
+2E19  80 F9 61    cmp cl,61h
+2E1C  73 03       jnb 2e21h
+2E1E  E9 08 00    jmp 2e29h
+2E21  80 F9 7A    cmp cl,7ah
+2E24  77 03       jnbe 2e29h
+2E26  80 E9 20    sub cl,20h
+2E29  E8 C8 00    call 2ef4h
+2E2C  73 03       jnb 2e31h
+2E2E  E9 3A 00    jmp 2e6bh
+2E31  E8 F2 FC    call 2b26h
+2E34  73 03       jnb 2e39h
+2E36  E9 B5 00    jmp 2eeeh
+2E39  57          push di
+2E3A  56          push si
+2E3B  51          push cx
+2E3C  52          push dx
+2E3D  53          push bx
+2E3E  50          push ax
+2E3F  88 C8       mov al,cl
+2E41  30 E4       xor ah,ah
+2E43  E8 9A D5    call 3e0h
+2E46  89 C1       mov cx,ax
+2E48  89 DE       mov si,bx
+2E4A  89 D7       mov di,dx
+2E4C  58          pop ax
+2E4D  5B          pop bx
+2E4E  5A          pop dx
+2E4F  C7 06 68 34 00 00 mov word ptr [3468h],0h
+2E55  E8 38 D6    call 490h
+2E58  59          pop cx
+2E59  5E          pop si
+2E5A  5F          pop di
+2E5B  F6 C5 40    test ch,40h
+2E5E  75 03       jne 2e63h
+2E60  E9 04 00    jmp 2e67h
+2E63  FE 0E 86 34 dec byte ptr [3486h]
+2E67  46          inc si
+2E68  E9 AC FF    jmp 2e17h
+2E6B  80 F9 2E    cmp cl,2eh
+2E6E  74 03       je 2e73h
+2E70  E9 0E 00    jmp 2e81h
+2E73  F6 C5 40    test ch,40h
+2E76  74 03       je 2e7bh
+2E78  E9 73 00    jmp 2eeeh
+2E7B  80 CD 40    or ch,40h
+2E7E  E9 E6 FF    jmp 2e67h
+2E81  80 F9 45    cmp cl,45h
+2E84  8A 0E 86 34 mov cl,byte ptr [3486h]
+2E88  74 03       je 2e8dh
+2E8A  E9 4D 00    jmp 2edah
+2E8D  E8 2A FD    call 2bbah
+2E90  73 03       jnb 2e95h
+2E92  E9 59 00    jmp 2eeeh
+2E95  46          inc si
+2E96  8A 0C       mov cl,byte ptr [si]
+2E98  80 F9 2B    cmp cl,2bh
+2E9B  75 03       jne 2ea0h
+2E9D  E9 0B 00    jmp 2eabh
+2EA0  80 F9 2D    cmp cl,2dh
+2EA3  74 03       je 2ea8h
+2EA5  E9 04 00    jmp 2each
+2EA8  80 CD 20    or ch,20h
+2EAB  46          inc si
+2EAC  E8 43 00    call 2ef2h
+2EAF  73 03       jnb 2eb4h
+2EB1  E9 3A 00    jmp 2eeeh
+2EB4  50          push ax
+2EB5  88 C8       mov al,cl
+2EB7  46          inc si
+2EB8  E8 37 00    call 2ef2h
+2EBB  73 03       jnb 2ec0h
+2EBD  E9 0D 00    jmp 2ecdh
+2EC0  88 C4       mov ah,al
+2EC2  D0 E0       shl al,1h
+2EC4  D0 E0       shl al,1h
+2EC6  00 E0       add al,ah
+2EC8  D0 E0       shl al,1h
+2ECA  00 C8       add al,cl
+2ECC  46          inc si
+2ECD  88 C1       mov cl,al
+2ECF  58          pop ax
+2ED0  F6 C5 20    test ch,20h
+2ED3  75 03       jne 2ed8h
+2ED5  E9 02 00    jmp 2edah
+2ED8  F6 D9       neg cl
+2EDA  E8 DD FC    call 2bbah
+2EDD  73 03       jnb 2ee2h
+2EDF  E9 0C 00    jmp 2eeeh
+2EE2  89 05       mov word ptr [di],ax
+2EE4  89 5D 02    mov word ptr [di+2h],bx
+2EE7  89 55 04    mov word ptr [di+4h],dx
+2EEA  F8          clc
+2EEB  E9 01 00    jmp 2eefh
+2EEE  F9          stc
+2EEF  89 F3       mov bx,si
+2EF1  C3          ret
+2EF2  8A 0C       mov cl,byte ptr [si]
+2EF4  80 F9 30    cmp cl,30h
+2EF7  73 03       jnb 2efch
+2EF9  E9 0C 00    jmp 2f08h
+2EFC  80 F9 3A    cmp cl,3ah
+2EFF  F5          cmc
+2F00  73 03       jnb 2f05h
+2F02  E9 03 00    jmp 2f08h
+2F05  80 E9 30    sub cl,30h
+2F08  C3          ret
+2F09  55          push bp
+2F0A  8B EC       mov bp,sp
+2F0C  53          push bx
+2F0D  52          push dx
+2F0E  56          push si
+2F0F  57          push di
+2F10  8B 46 06    mov ax,word ptr [bp+6h]
+2F13  A3 05 35    mov word ptr [3505h],ax
+2F16  8B 56 04    mov dx,word ptr [bp+4h]
+2F19  8B 4E 06    mov cx,word ptr [bp+6h]
+2F1C  8B 7E 08    mov di,word ptr [bp+8h]
+2F1F  BB C3 34    mov bx,34c3h
+2F22  E8 AA FD    call 2ccfh
+2F25  89 D8       mov ax,bx
+2F27  BB C3 34    mov bx,34c3h
+2F2A  2B C3       sub ax,bx
+2F2C  A3 03 35    mov word ptr [3503h],ax
+2F2F  8B 06 05 35 mov ax,word ptr [3505h]
+2F33  8B 16 03 35 mov dx,word ptr [3503h]
+2F37  2B C2       sub ax,dx
+2F39  83 F8 00    cmp ax,0h
+2F3C  7D 02       jnl 2f40h
+2F3E  31 C0       xor ax,ax
+2F40  A3 07 35    mov word ptr [3507h],ax
+2F43  8B 0E 07 35 mov cx,word ptr [3507h]
+2F47  E3 08       jcxz 2f51h
+2F49  B0 20       mov al,20h
+2F4B  B4 02       mov ah,2h
+2F4D  CD 21       int 21h
+2F4F  E2 F8       loop 2f49h
+2F51  BE C3 34    mov si,34c3h
+2F54  8B 0E 03 35 mov cx,word ptr [3503h]
+2F58  E3 09       jcxz 2f63h
+2F5A  8A 04       mov al,byte ptr [si]
+2F5C  B4 02       mov ah,2h
+2F5E  CD 21       int 21h
+2F60  46          inc si
+2F61  E2 F7       loop 2f5ah
+2F63  5F          pop di
+2F64  5E          pop si
+2F65  5A          pop dx
+2F66  5B          pop bx
+2F67  89 EC       mov sp,bp
+2F69  5D          pop bp
+2F6A  C3          ret
+2F6B  55          push bp
+2F6C  8B EC       mov bp,sp
+2F6E  53          push bx
+2F6F  51          push cx
+2F70  52          push dx
+2F71  56          push si
+2F72  57          push di
+2F73  8B 46 04    mov ax,word ptr [bp+4h]
+2F76  88 C6       mov dh,al
+2F78  8B 76 0A    mov si,word ptr [bp+0ah]
+2F7B  8B 7E 08    mov di,word ptr [bp+8h]
+2F7E  8B 5E 06    mov bx,word ptr [bp+6h]
+2F81  80 FE 00    cmp dh,0h
+2F84  74 23       je 2fa9h
+2F86  8A 04       mov al,byte ptr [si]
+2F88  8A 15       mov dl,byte ptr [di]
+2F8A  80 FC 00    cmp ah,0h
+2F8D  74 0B       je 2f9ah
+2F8F  80 FC 01    cmp ah,1h
+2F92  74 0A       je 2f9eh
+2F94  F6 D2       not dl
+2F96  20 D0       and al,dl
+2F98  EB 06       jmp 2fa0h
+2F9A  20 D0       and al,dl
+2F9C  EB 02       jmp 2fa0h
+2F9E  08 D0       or al,dl
+2FA0  88 07       mov byte ptr [bx],al
+2FA2  46          inc si
+2FA3  47          inc di
+2FA4  43          inc bx
+2FA5  FE CE       dec dh
+2FA7  75 DD       jne 2f86h
+2FA9  5F          pop di
+2FAA  5E          pop si
+2FAB  5A          pop dx
+2FAC  59          pop cx
+2FAD  5B          pop bx
+2FAE  89 EC       mov sp,bp
+2FB0  5D          pop bp
+2FB1  C3          ret
+2FB2  55          push bp
+2FB3  8B EC       mov bp,sp
+2FB5  53          push bx
+2FB6  51          push cx
+2FB7  52          push dx
+2FB8  56          push si
+2FB9  57          push di
+2FBA  8B 4E 04    mov cx,word ptr [bp+4h]
+2FBD  8B 76 08    mov si,word ptr [bp+8h]
+2FC0  8B 7E 06    mov di,word ptr [bp+6h]
+2FC3  B4 07       mov ah,7h
+2FC5  E3 2B       jcxz 2ff2h
+2FC7  8A 04       mov al,byte ptr [si]
+2FC9  8A 15       mov dl,byte ptr [di]
+2FCB  88 C3       mov bl,al
+2FCD  88 D6       mov dh,dl
+2FCF  3A C2       cmp al,dl
+2FD1  74 03       je 2fd6h
+2FD3  80 E4 FE    and ah,0feh
+2FD6  F6 D2       not dl
+2FD8  20 D0       and al,dl
+2FDA  3C 00       cmp al,0h
+2FDC  74 03       je 2fe1h
+2FDE  80 E4 FD    and ah,0fdh
+2FE1  8A C3       mov al,bl
+2FE3  F6 D0       not al
+2FE5  20 F0       and al,dh
+2FE7  3C 00       cmp al,0h
+2FE9  74 03       je 2feeh
+2FEB  80 E4 FB    and ah,0fbh
+2FEE  46          inc si
+2FEF  47          inc di
+2FF0  E2 D5       loop 2fc7h
+2FF2  F6 C4 01    test ah,1h
+2FF5  74 03       je 2ffah
+2FF7  80 E4 F9    and ah,0f9h
+2FFA  88 E0       mov al,ah
+2FFC  B4 00       mov ah,0h
+2FFE  5F          pop di
+2FFF  5E          pop si
+3000  5A          pop dx
+3001  59          pop cx
+3002  5B          pop bx
+3003  89 EC       mov sp,bp
+3005  5D          pop bp
+3006  C3          ret
+3007  55          push bp
+3008  8B EC       mov bp,sp
+300A  53          push bx
+300B  51          push cx
+300C  56          push si
+300D  8B 4E 04    mov cx,word ptr [bp+4h]
+3010  8B 76 06    mov si,word ptr [bp+6h]
+3013  8B 5E 08    mov bx,word ptr [bp+8h]
+3016  E3 08       jcxz 3020h
+3018  8A 04       mov al,byte ptr [si]
+301A  88 07       mov byte ptr [bx],al
+301C  46          inc si
+301D  43          inc bx
+301E  E2 F8       loop 3018h
+3020  5E          pop si
+3021  59          pop cx
+3022  5B          pop bx
+3023  89 EC       mov sp,bp
+3025  5D          pop bp
+3026  C3          ret
+3027  55          push bp
+3028  8B EC       mov bp,sp
+302A  53          push bx
+302B  51          push cx
+302C  52          push dx
+302D  56          push si
+302E  57          push di
+302F  8B 7E 04    mov di,word ptr [bp+4h]
+3032  B8 FF FF    mov ax,0ffffh
+3035  89 05       mov word ptr [di],ax
+3037  31 C0       xor ax,ax
+3039  89 45 02    mov word ptr [di+2h],ax
+303C  8B 76 06    mov si,word ptr [bp+6h]
+303F  8A 04       mov al,byte ptr [si]
+3041  46          inc si
+3042  3C 7F       cmp al,7fh
+3044  76 02       jbe 3048h
+3046  B0 7F       mov al,7fh
+3048  88 C1       mov cl,al
+304A  30 ED       xor ch,ch
+304C  83 C7 04    add di,4h
+304F  E3 08       jcxz 3059h
+3051  8A 04       mov al,byte ptr [si]
+3053  88 05       mov byte ptr [di],al
+3055  46          inc si
+3056  47          inc di
+3057  E2 F8       loop 3051h
+3059  C6 05 00    mov byte ptr [di],0h
+305C  5F          pop di
+305D  5E          pop si
+305E  5A          pop dx
+305F  59          pop cx
+3060  5B          pop bx
+3061  89 EC       mov sp,bp
+3063  5D          pop bp
+3064  C3          ret
+3065  55          push bp
+3066  8B EC       mov bp,sp
+3068  53          push bx
+3069  51          push cx
+306A  52          push dx
+306B  57          push di
+306C  8B 7E 04    mov di,word ptr [bp+4h]
+306F  8D 55 04    lea dx,[di+4h]
+3072  B8 00 3D    mov ax,3d00h
+3075  CD 21       int 21h
+3077  72 0F       jb 3088h
+3079  89 05       mov word ptr [di],ax
+307B  B8 01 00    mov ax,1h
+307E  89 45 02    mov word ptr [di+2h],ax
+3081  31 C0       xor ax,ax
+3083  A3 0D 35    mov word ptr [350dh],ax
+3086  EB 10       jmp 3098h
+3088  89 C3       mov bx,ax
+308A  B8 FF FF    mov ax,0ffffh
+308D  89 05       mov word ptr [di],ax
+308F  31 C0       xor ax,ax
+3091  89 45 02    mov word ptr [di+2h],ax
+3094  89 1E 0D 35 mov word ptr [350dh],bx
+3098  5F          pop di
+3099  5A          pop dx
+309A  59          pop cx
+309B  5B          pop bx
+309C  89 EC       mov sp,bp
+309E  5D          pop bp
+309F  C3          ret
+30A0  55          push bp
+30A1  8B EC       mov bp,sp
+30A3  53          push bx
+30A4  51          push cx
+30A5  52          push dx
+30A6  57          push di
+30A7  8B 7E 04    mov di,word ptr [bp+4h]
+30AA  8D 55 04    lea dx,[di+4h]
+30AD  31 C9       xor cx,cx
+30AF  B8 00 3C    mov ax,3c00h
+30B2  CD 21       int 21h
+30B4  72 0F       jb 30c5h
+30B6  89 05       mov word ptr [di],ax
+30B8  B8 02 00    mov ax,2h
+30BB  89 45 02    mov word ptr [di+2h],ax
+30BE  31 C0       xor ax,ax
+30C0  A3 0D 35    mov word ptr [350dh],ax
+30C3  EB 10       jmp 30d5h
+30C5  89 C3       mov bx,ax
+30C7  B8 FF FF    mov ax,0ffffh
+30CA  89 05       mov word ptr [di],ax
+30CC  31 C0       xor ax,ax
+30CE  89 45 02    mov word ptr [di+2h],ax
+30D1  89 1E 0D 35 mov word ptr [350dh],bx
+30D5  5F          pop di
+30D6  5A          pop dx
+30D7  59          pop cx
+30D8  5B          pop bx
+30D9  89 EC       mov sp,bp
+30DB  5D          pop bp
+30DC  C3          ret
+30DD  55          push bp
+30DE  8B EC       mov bp,sp
+30E0  53          push bx
+30E1  52          push dx
+30E2  57          push di
+30E3  8B 7E 04    mov di,word ptr [bp+4h]
+30E6  8B 05       mov ax,word ptr [di]
+30E8  3D FF FF    cmp ax,0ffffh
+30EB  74 16       je 3103h
+30ED  89 C3       mov bx,ax
+30EF  B4 3E       mov ah,3eh
+30F1  CD 21       int 21h
+30F3  89 C3       mov bx,ax
+30F5  B8 FF FF    mov ax,0ffffh
+30F8  89 05       mov word ptr [di],ax
+30FA  31 C0       xor ax,ax
+30FC  89 45 02    mov word ptr [di+2h],ax
+30FF  89 1E 0D 35 mov word ptr [350dh],bx
+3103  5F          pop di
+3104  5A          pop dx
+3105  5B          pop bx
+3106  89 EC       mov sp,bp
+3108  5D          pop bp
+3109  C3          ret
+310A  8B 06 0D 35 mov ax,word ptr [350dh]
+310E  C7 06 0D 35 00 00 mov word ptr [350dh],0h
+3114  C3          ret
+3115  A3 0D 35    mov word ptr [350dh],ax
+3118  C3          ret
+3119  55          push bp
+311A  8B EC       mov bp,sp
+311C  53          push bx
+311D  51          push cx
+311E  52          push dx
+311F  8B 1E 0F 35 mov bx,word ptr [350fh]
+3123  8B 56 04    mov dx,word ptr [bp+4h]
+3126  89 1A       mov word ptr [bp+si],bx
+3128  8B 4E 06    mov cx,word ptr [bp+6h]
+312B  89 D8       mov ax,bx
+312D  03 C1       add ax,cx
+312F  A3 0F 35    mov word ptr [350fh],ax
+3132  5A          pop dx
+3133  59          pop cx
+3134  5B          pop bx
+3135  89 EC       mov sp,bp
+3137  5D          pop bp
+3138  C3          ret
+3139  55          push bp
+313A  8B EC       mov bp,sp
+313C  53          push bx
+313D  51          push cx
+313E  52          push dx
+313F  56          push si
+3140  57          push di
+3141  A0 11 35    mov al,byte ptr [3511h]
+3144  3C 00       cmp al,0h
+3146  75 42       jne 318ah
+3148  8B 7E 04    mov di,word ptr [bp+4h]
+314B  8B 05       mov ax,word ptr [di]
+314D  3D FF FF    cmp ax,0ffffh
+3150  74 38       je 318ah
+3152  89 C3       mov bx,ax
+3154  31 C9       xor cx,cx
+3156  31 D2       xor dx,dx
+3158  B8 01 42    mov ax,4201h
+315B  CD 21       int 21h
+315D  8B F0       mov si,ax
+315F  89 D7       mov di,dx
+3161  31 C9       xor cx,cx
+3163  31 D2       xor dx,dx
+3165  B8 02 42    mov ax,4202h
+3168  CD 21       int 21h
+316A  39 FA       cmp dx,di
+316C  72 08       jb 3176h
+316E  77 0B       jnbe 317bh
+3170  39 F0       cmp ax,si
+3172  72 02       jb 3176h
+3174  77 05       jnbe 317bh
+3176  B8 01 00    mov ax,1h
+3179  EB 02       jmp 317dh
+317B  31 C0       xor ax,ax
+317D  50          push ax
+317E  89 F9       mov cx,di
+3180  89 F2       mov dx,si
+3182  B8 00 42    mov ax,4200h
+3185  CD 21       int 21h
+3187  58          pop ax
+3188  EB 03       jmp 318dh
+318A  B8 01 00    mov ax,1h
+318D  5F          pop di
+318E  5E          pop si
+318F  5A          pop dx
+3190  59          pop cx
+3191  5B          pop bx
+3192  89 EC       mov sp,bp
+3194  5D          pop bp
+3195  C3          ret
+3196  55          push bp
+3197  8B EC       mov bp,sp
+3199  53          push bx
+319A  51          push cx
+319B  52          push dx
+319C  56          push si
+319D  57          push di
+319E  8B 7E 06    mov di,word ptr [bp+6h]
+31A1  C6 05 00    mov byte ptr [di],0h
+31A4  47          inc di
+31A5  31 C9       xor cx,cx
+31A7  8B 76 04    mov si,word ptr [bp+4h]
+31AA  8B 04       mov ax,word ptr [si]
+31AC  89 C3       mov bx,ax
+31AE  BA 12 35    mov dx,3512h
+31B1  B9 01 00    mov cx,1h
+31B4  B4 3F       mov ah,3fh
+31B6  CD 21       int 21h
+31B8  83 F8 00    cmp ax,0h
+31BB  74 1C       je 31d9h
+31BD  A0 12 35    mov al,byte ptr [3512h]
+31C0  3C 1A       cmp al,1ah
+31C2  74 1C       je 31e0h
+31C4  3C 0D       cmp al,0dh
+31C6  74 E2       je 31aah
+31C8  3C 0A       cmp al,0ah
+31CA  74 19       je 31e5h
+31CC  8B 46 08    mov ax,word ptr [bp+8h]
+31CF  39 C8       cmp ax,cx
+31D1  76 D7       jbe 31aah
+31D3  88 05       mov byte ptr [di],al
+31D5  47          inc di
+31D6  41          inc cx
+31D7  EB D1       jmp 31aah
+31D9  C6 06 11 35 01 mov byte ptr [3511h],1h
+31DE  EB 05       jmp 31e5h
+31E0  C6 06 11 35 01 mov byte ptr [3511h],1h
+31E5  8B 5E 06    mov bx,word ptr [bp+6h]
+31E8  88 0F       mov byte ptr [bx],cl
+31EA  31 C0       xor ax,ax
+31EC  A3 0D 35    mov word ptr [350dh],ax
+31EF  5F          pop di
+31F0  5E          pop si
+31F1  5A          pop dx
+31F2  59          pop cx
+31F3  5B          pop bx
+31F4  89 EC       mov sp,bp
+31F6  5D          pop bp
+31F7  C3          ret
+31F8  55          push bp
+31F9  8B EC       mov bp,sp
+31FB  53          push bx
+31FC  51          push cx
+31FD  52          push dx
+31FE  56          push si
+31FF  57          push di
+3200  8B 7E 04    mov di,word ptr [bp+4h]
+3203  C6 05 00    mov byte ptr [di],0h
+3206  47          inc di
+3207  8B 46 06    mov ax,word ptr [bp+6h]
+320A  C6 06 12 35 00 mov byte ptr [3512h],0h
+320F  83 F8 00    cmp ax,0h
+3212  7D 07       jnl 321bh
+3214  C6 06 12 35 01 mov byte ptr [3512h],1h
+3219  F7 D8       neg ax
+321B  B9 0A 00    mov cx,0ah
+321E  BB 52 34    mov bx,3452h
+3221  89 DE       mov si,bx
+3223  31 D2       xor dx,dx
+3225  F7 F1       div ax,cx
+3227  80 C2 30    add dl,30h
+322A  4E          dec si
+322B  88 14       mov byte ptr [si],dl
+322D  83 F8 00    cmp ax,0h
+3230  75 F1       jne 3223h
+3232  A0 12 35    mov al,byte ptr [3512h]
+3235  3C 00       cmp al,0h
+3237  74 04       je 323dh
+3239  C6 05 2D    mov byte ptr [di],2dh
+323C  47          inc di
+323D  89 D9       mov cx,bx
+323F  29 F1       sub cx,si
+3241  A0 12 35    mov al,byte ptr [3512h]
+3244  3C 00       cmp al,0h
+3246  74 01       je 3249h
+3248  41          inc cx
+3249  8A D1       mov dl,cl
+324B  8A 04       mov al,byte ptr [si]
+324D  88 05       mov byte ptr [di],al
+324F  46          inc si
+3250  47          inc di
+3251  E2 F8       loop 324bh
+3253  8B 5E 04    mov bx,word ptr [bp+4h]
+3256  88 17       mov byte ptr [bx],dl
+3258  5F          pop di
+3259  5E          pop si
+325A  5A          pop dx
+325B  59          pop cx
+325C  5B          pop bx
+325D  89 EC       mov sp,bp
+325F  5D          pop bp
+3260  C3          ret
+3261  55          push bp
+3262  8B EC       mov bp,sp
+3264  53          push bx
+3265  51          push cx
+3266  52          push dx
+3267  56          push si
+3268  57          push di
+3269  8B 7E 04    mov di,word ptr [bp+4h]
+326C  8A 05       mov al,byte ptr [di]
+326E  88 C1       mov cl,al
+3270  30 ED       xor ch,ch
+3272  47          inc di
+3273  89 FE       mov si,di
+3275  31 DB       xor bx,bx
+3277  C6 06 13 35 00 mov byte ptr [3513h],0h
+327C  E3 35       jcxz 32b3h
+327E  8A 05       mov al,byte ptr [di]
+3280  3C 2D       cmp al,2dh
+3282  74 02       je 3286h
+3284  EB 09       jmp 328fh
+3286  C6 06 13 35 01 mov byte ptr [3513h],1h
+328B  47          inc di
+328C  49          dec cx
+328D  E3 46       jcxz 32d5h
+328F  8A 05       mov al,byte ptr [di]
+3291  3C 30       cmp al,30h
+3293  72 40       jb 32d5h
+3295  3C 39       cmp al,39h
+3297  77 3C       jnbe 32d5h
+3299  2C 30       sub al,30h
+329B  30 E4       xor ah,ah
+329D  A3 14 35    mov word ptr [3514h],ax
+32A0  89 D8       mov ax,bx
+32A2  BB 0A 00    mov bx,0ah
+32A5  F7 E3       mul bx
+32A7  03 06 14 35 add ax,word ptr [3514h]
+32AB  89 C3       mov bx,ax
+32AD  47          inc di
+32AE  49          dec cx
+32AF  E3 0B       jcxz 32bch
+32B1  EB DC       jmp 328fh
+32B3  8B 5E 08    mov bx,word ptr [bp+8h]
+32B6  31 C0       xor ax,ax
+32B8  89 07       mov word ptr [bx],ax
+32BA  EB 23       jmp 32dfh
+32BC  A0 13 35    mov al,byte ptr [3513h]
+32BF  3C 00       cmp al,0h
+32C1  74 02       je 32c5h
+32C3  F7 DB       neg bx
+32C5  89 D8       mov ax,bx
+32C7  8B 5E 06    mov bx,word ptr [bp+6h]
+32CA  89 07       mov word ptr [bx],ax
+32CC  8B 5E 08    mov bx,word ptr [bp+8h]
+32CF  31 C0       xor ax,ax
+32D1  89 07       mov word ptr [bx],ax
+32D3  EB 0A       jmp 32dfh
+32D5  8B C7       mov ax,di
+32D7  2B C6       sub ax,si
+32D9  40          inc ax
+32DA  8B 5E 08    mov bx,word ptr [bp+8h]
+32DD  89 07       mov word ptr [bx],ax
+32DF  5F          pop di
+32E0  5E          pop si
+32E1  5A          pop dx
+32E2  59          pop cx
+32E3  5B          pop bx
+32E4  89 EC       mov sp,bp
+32E6  5D          pop bp
+32E7  C3          ret
+32E8  55          push bp
+32E9  8B EC       mov bp,sp
+32EB  53          push bx
+32EC  51          push cx
+32ED  52          push dx
+32EE  56          push si
+32EF  57          push di
+32F0  8B 76 04    mov si,word ptr [bp+4h]
+32F3  8A 04       mov al,byte ptr [si]
+32F5  30 E4       xor ah,ah
+32F7  89 C1       mov cx,ax
+32F9  46          inc si
+32FA  BF 16 35    mov di,3516h
+32FD  E3 08       jcxz 3307h
+32FF  8A 04       mov al,byte ptr [si]
+3301  88 05       mov byte ptr [di],al
+3303  46          inc si
+3304  47          inc di
+3305  E2 F8       loop 32ffh
+3307  31 C0       xor ax,ax
+3309  88 05       mov byte ptr [di],al
+330B  BB 16 35    mov bx,3516h
+330E  8B 7E 06    mov di,word ptr [bp+6h]
+3311  89 1E 0B 35 mov word ptr [350bh],bx
+3315  E8 C2 FA    call 2ddah
+3318  72 1F       jb 3339h
+331A  89 D8       mov ax,bx
+331C  8B 16 0B 35 mov dx,word ptr [350bh]
+3320  2B C2       sub ax,dx
+3322  8B 76 04    mov si,word ptr [bp+4h]
+3325  8A 0C       mov cl,byte ptr [si]
+3327  30 ED       xor ch,ch
+3329  39 C8       cmp ax,cx
+332B  74 03       je 3330h
+332D  40          inc ax
+332E  EB 02       jmp 3332h
+3330  31 C0       xor ax,ax
+3332  8B 5E 08    mov bx,word ptr [bp+8h]
+3335  89 07       mov word ptr [bx],ax
+3337  EB 08       jmp 3341h
+3339  B8 01 00    mov ax,1h
+333C  8B 5E 08    mov bx,word ptr [bp+8h]
+333F  89 07       mov word ptr [bx],ax
+3341  5F          pop di
+3342  5E          pop si
+3343  5A          pop dx
+3344  59          pop cx
+3345  5B          pop bx
+3346  89 EC       mov sp,bp
+3348  5D          pop bp
+3349  C3          ret