PAGE  59,132

;��������������������������������������������������������������������������
;��                                                                      ��
;��                             MAXIHD                                   ��
;��                                                                      ��
;��      Created:   1-Jan-80                                             ��
;��      Passes:    5          Analysis Flags on: H                      ��
;��                                                                      ��
;��������������������������������������������������������������������������

DATA_1E         EQU     74H                     ; (0000:0074=0A4H)
DATA_2E         EQU     78H                     ; (0000:0078=22H)
DATA_3E         EQU     7CH                     ; (0000:007C=0)
DATA_4E         EQU     80H                     ; (0000:0080=0F5H)
DATA_5E         EQU     84H                     ; (0000:0084=9CEH)
DATA_6E         EQU     86H                     ; (0000:0086=13C7H)
DATA_7E         EQU     88H                     ; (0000:0088=723H)
DATA_8E         EQU     8AH                     ; (0000:008A=23EAH)
DATA_9E         EQU     8CH                     ; (0000:008C=0A70H)
DATA_10E        EQU     8EH                     ; (0000:008E=23EAH)
DATA_11E        EQU     94H                     ; (0000:0094=192FH)
DATA_12E        EQU     98H                     ; (0000:0098=198CH)
DATA_13E        EQU     9AH                     ; (0000:009A=27DH)
DATA_14E        EQU     9EH                     ; (0000:009E=27DH)
DATA_15E        EQU     232H                    ; (0000:0232=0)
DATA_16E        EQU     234H                    ; (0000:0234=0)
DATA_17E        EQU     236H                    ; (0000:0236=0)
DATA_18E        EQU     23CH                    ; (0000:023C=0)
DATA_19E        EQU     458H                    ; (0000:0458=0)
DATA_20E        EQU     45AH                    ; (0000:045A=0)
DATA_21E        EQU     464H                    ; (0000:0464=2903H)
DATA_22E        EQU     4A4H                    ; (0000:04A4=0)
DATA_23E        EQU     4A6H                    ; (0000:04A6=0)
DATA_24E        EQU     4A8H                    ; (0000:04A8=0)
DATA_25E        EQU     2                       ; (7FC4:0002=0)
DATA_26E        EQU     2CH                     ; (7FC4:002C=0)
DATA_27E        EQU     94H                     ; (7FC4:0094=0)
DATA_28E        EQU     9EH                     ; (7FC4:009E=0)
DATA_29E        EQU     1D6H                    ; (7FC4:01D6=0CD57H)
DATA_30E        EQU     1D8H                    ; (7FC4:01D8=21H)
DATA_31E        EQU     232H                    ; (7FC4:0232=2FB9H)
DATA_32E        EQU     37EH                    ; (7FC4:037E=50FFH)
DATA_33E        EQU     3A6H                    ; (7FC4:03A6=8D50H)
DATA_34E        EQU     3A8H                    ; (7FC4:03A8=0AE46H)
DATA_35E        EQU     4A4H                    ; (7FC4:04A4=0AC26H)
DATA_36E        EQU     4A6H                    ; (7FC4:04A6=8C40H)
DATA_37E        EQU     4A8H                    ; (7FC4:04A8=87C5H)
DATA_123E       EQU     0FF67H                  ; (8134:FF67=0)
DATA_124E       EQU     0FF70H                  ; (8134:FF70=0)
DATA_126E       EQU     0FF6AH                  ; (817F:FF6A=0)
DATA_127E       EQU     0FF6CH                  ; (817F:FF6C=0)
DATA_128E       EQU     0FF6EH                  ; (817F:FF6E=0)
DATA_129E       EQU     0FF6FH                  ; (817F:FF6F=0)
DATA_130E       EQU     0FF70H                  ; (817F:FF70=0)
DATA_131E       EQU     0FF72H                  ; (817F:FF72=0)
DATA_132E       EQU     0FF75H                  ; (817F:FF75=0)
DATA_133E       EQU     0FF76H                  ; (817F:FF76=0)
DATA_134E       EQU     0FF78H                  ; (817F:FF78=0)
DATA_135E       EQU     0FF7BH                  ; (817F:FF7B=0)
DATA_136E       EQU     0FF7CH                  ; (817F:FF7C=0)

;-------------------------------------------------------------- SEG_A  ----

SEG_A           SEGMENT PARA PUBLIC
               ASSUME CS:SEG_A , DS:SEG_A , SS:STACK_SEG_C


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_1           PROC    NEAR
SUB_1           ENDP


;��������������������������������������������������������������������������
;
;                       PROGRAM ENTRY POINT
;
;��������������������������������������������������������������������������


MAXIHD          PROC    FAR

start:
               MOV     DX,SEG SEG_B
               MOV     CS:DATA_38,DX           ; (7FD4:01F8=0)
               MOV     AH,30H                  ; '0'
               INT     21H                     ; DOS Services  ah=function 30h
                                               ;  get DOS version number ax
               MOV     BP,DS:DATA_25E          ; (7FC4:0002=0)
               MOV     BX,DS:DATA_26E          ; (7FC4:002C=0)
               MOV     DS,DX
               assume  ds:SEG_B
               MOV     DATA_77,AX              ; (8134:0092=0)
               MOV     DATA_76,ES              ; (8134:0090=0)
               MOV     WORD PTR DATA_73+2,BX   ; (8134:008C=0)
               MOV     DATA_84,BP              ; (8134:00AC=0)
               MOV     DATA_79,0FFFFH          ; (8134:0096=0)
               CALL    SUB_3                   ; (0162)
               LES     DI,DATA_73              ; (8134:008A=0) Load 32 bit ptr
               MOV     AX,DI
               MOV     BX,AX
               MOV     CX,7FFFH
LOC_2:
               CMP     WORD PTR ES:[DI],3738H
               JNE     LOC_3                   ; Jump if not equal
               MOV     DX,ES:[DI+2]
               CMP     DL,3DH                  ; '='
               JNE     LOC_3                   ; Jump if not equal
               AND     DH,0DFH
               INC     DATA_79                 ; (8134:0096=0)
               CMP     DH,59H                  ; 'Y'
               JNE     LOC_3                   ; Jump if not equal
               INC     DATA_79                 ; (8134:0096=0)
LOC_3:
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               JCXZ    LOC_6                   ; Jump if cx=0
               INC     BX
               CMP     ES:[DI],AL
               JNE     LOC_2                   ; Jump if not equal
               OR      CH,80H
               NEG     CX
               MOV     WORD PTR DATA_73,CX     ; (8134:008A=0)
               MOV     CX,1
               SHL     BX,CL                   ; Shift w/zeros fill
               ADD     BX,8
               AND     BX,0FFF8H
               MOV     DATA_75,BX              ; (8134:008E=0)
               MOV     DX,DS
               SUB     BP,DX
               MOV     DI,DATA_89              ; (8134:023A=1000H)
               CMP     DI,200H
               JAE     LOC_4                   ; Jump if above or =
               MOV     DI,200H
               MOV     DATA_89,DI              ; (8134:023A=1000H)
LOC_4:
               ADD     DI,4AAH
               JC      LOC_6                   ; Jump if carry Set
               ADD     DI,DATA_88              ; (8134:0238=0)
               JC      LOC_6                   ; Jump if carry Set
               MOV     CL,4
               SHR     DI,CL                   ; Shift w/zeros fill
               INC     DI
               CMP     BP,DI
               JB      LOC_6                   ; Jump if below
               CMP     DATA_89,0               ; (8134:023A=1000H)
               JE      LOC_5                   ; Jump if equal
               CMP     DATA_88,0               ; (8134:0238=0)
               JNE     LOC_7                   ; Jump if not equal
LOC_5:
               MOV     DI,1000H
               CMP     BP,DI
               JA      LOC_7                   ; Jump if above
               MOV     DI,BP
               JMP     SHORT LOC_7             ; (00C1)
LOC_6:
               JMP     LOC_10                  ; (01E2)
LOC_7:
               MOV     BX,DI
               ADD     BX,DX
               MOV     DATA_82,BX              ; (8134:00A4=0)
               MOV     DATA_83,BX              ; (8134:00A8=0)
               MOV     AX,DATA_76              ; (8134:0090=0)
               SUB     BX,AX
               MOV     ES,AX
               MOV     AH,4AH                  ; 'J'
               PUSH    DI
               INT     21H                     ; DOS Services  ah=function 4Ah
                                               ;  change mem allocation, bx=siz
               POP     DI
               SHL     DI,CL                   ; Shift w/zeros fill
               CLI                             ; Disable interrupts
               MOV     SS,DX
               MOV     SP,DI
               STI                             ; Enable interrupts
               XOR     AX,AX                   ; Zero register
               MOV     ES,CS:DATA_38           ; (7FD4:01F8=0)
               MOV     DI,464H
               MOV     CX,4AAH
               SUB     CX,DI
               REP     STOSB                   ; Rep while cx>0 Store al to es:[di]
               PUSH    CS
               CALL    WORD PTR DATA_117       ; (8134:0456=1D2H)
               CALL    SUB_12                  ; (0390)
               CALL    SUB_14                  ; (047B)
               MOV     AH,0
               INT     1AH                     ; Real time clock   ah=func 00h
                                               ;  get system timer count cx,dx
               MOV     DS:DATA_12E,DX          ; (0000:0098=198CH)
               MOV     DS:DATA_13E,CX          ; (0000:009A=27DH)
               CALL    WORD PTR DS:DATA_20E    ; (0000:045A=0)
               PUSH    WORD PTR DS:DATA_7E     ; (0000:0088=723H)
               PUSH    WORD PTR DS:DATA_6E     ; (0000:0086=13C7H)
               PUSH    WORD PTR DS:DATA_5E     ; (0000:0084=9CEH)
               CALL    SUB_6                   ; (01FA)
               PUSH    AX
               CALL    SUB_11                  ; (035B)

MAXIHD          ENDP

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_2           PROC    NEAR
               MOV     DS,CS:DATA_38           ; (7FD4:01F8=0)
               CALL    SUB_4                   ; (01A5)
               PUSH    CS
               CALL    WORD PTR DS:DATA_19E    ; (0000:0458=0)
               XOR     AX,AX                   ; Zero register
               MOV     SI,AX
               MOV     CX,2FH
               NOP
               CLD                             ; Clear direction

LOCLOOP_8:
               ADD     AL,[SI]
               ADC     AH,0
               INC     SI
               LOOP    LOCLOOP_8               ; Loop if cx > 0

               SUB     AX,0D37H
               NOP
               JZ      LOC_9                   ; Jump if zero
               MOV     CX,19H
               NOP
               MOV     DX,2FH
               CALL    SUB_5                   ; (01DA)
LOC_9:
               MOV     BP,SP
               MOV     AH,4CH                  ; 'L'
               MOV     AL,[BP+2]
               INT     21H                     ; DOS Services  ah=function 4Ch
                                               ;  terminate with al=return code
SUB_2           ENDP


;��������������������������������������������������������������������������
;
;                       External Entry Point
;
;��������������������������������������������������������������������������

INT_00H_ENTRY   PROC    FAR
               MOV     CX,0EH
               NOP
               MOV     DX,48H
               JMP     LOC_11                  ; (01E9)
INT_00H_ENTRY   ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_3           PROC    NEAR
               PUSH    DS
               MOV     AX,3500H
               INT     21H                     ; DOS Services  ah=function 35h
                                               ;  get intrpt vector al in es:bx
               MOV     DATA_65,BX              ; (8134:0074=0)
               MOV     DATA_66,ES              ; (8134:0076=0)
               MOV     AX,3504H
               INT     21H                     ; DOS Services  ah=function 35h
                                               ;  get intrpt vector al in es:bx
               MOV     DATA_67,BX              ; (8134:0078=0)
               MOV     DATA_68,ES              ; (8134:007A=0)
               MOV     AX,3505H
               INT     21H                     ; DOS Services  ah=function 35h
                                               ;  get intrpt vector al in es:bx
               MOV     DATA_69,BX              ; (8134:007C=0)
               MOV     DATA_70,ES              ; (8134:007E=0)
               MOV     AX,3506H
               INT     21H                     ; DOS Services  ah=function 35h
                                               ;  get intrpt vector al in es:bx
               MOV     DATA_71,BX              ; (8134:0080=0)
               MOV     DATA_72,ES              ; (8134:0082=0)
               MOV     AX,2500H
               MOV     DX,CS
               MOV     DS,DX
               MOV     DX,158H
               INT     21H                     ; DOS Services  ah=function 25h
                                               ;  set intrpt vector al to ds:dx
               POP     DS
               RETN
SUB_3           ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_4           PROC    NEAR
               PUSH    DS
               MOV     AX,2500H
               LDS     DX,DWORD PTR DS:DATA_1E ; (0000:0074=0F0A4H) Load 32 bit ptr
               INT     21H                     ; DOS Services  ah=function 25h
                                               ;  set intrpt vector al to ds:dx
               POP     DS
               PUSH    DS
               MOV     AX,2504H
               LDS     DX,DWORD PTR DS:DATA_2E ; (0000:0078=522H) Load 32 bit ptr
               INT     21H                     ; DOS Services  ah=function 25h
                                               ;  set intrpt vector al to ds:dx
               POP     DS
               PUSH    DS
               MOV     AX,2505H
               LDS     DX,DWORD PTR DS:DATA_3E ; (0000:007C=0) Load 32 bit ptr
               INT     21H                     ; DOS Services  ah=function 25h
                                               ;  set intrpt vector al to ds:dx
               POP     DS
               PUSH    DS
               MOV     AX,2506H
               LDS     DX,DWORD PTR DS:DATA_4E ; (0000:0080=16F5H) Load 32 bit ptr
               INT     21H                     ; DOS Services  ah=function 25h
                                               ;  set intrpt vector al to ds:dx
               POP     DS
               RETN
SUB_4           ENDP

               DB      0C7H, 6, 96H, 0, 0, 0
               DB      0CBH, 0C3H

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_5           PROC    NEAR
               MOV     AH,40H                  ; '@'
               MOV     BX,2
               INT     21H                     ; DOS Services  ah=function 40h
                                               ;  write file cx=bytes, to ds:dx
               RETN
SUB_5           ENDP

LOC_10:
               MOV     CX,1EH
               NOP
               MOV     DX,56H
LOC_11:
               MOV     DS,CS:DATA_38           ; (7FD4:01F8=0)
               CALL    SUB_5                   ; (01DA)
               MOV     AX,3
               PUSH    AX
               CALL    SUB_2                   ; (0121)
DATA_38         DW      0

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_6           PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AX,194H
               PUSH    AX
               CALL    SUB_8                   ; (0290)
               POP     CX
               MOV     AX,194H
               PUSH    AX
               CALL    SUB_7                   ; (0212)
               POP     CX
               CALL    SUB_9                   ; (02F5)
               POP     BP
               RETN
SUB_6           ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_7           PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,0AEH
               PUSH    SI
               PUSH    DI
               MOV     DI,[BP+4]
               PUSH    DI
               CALL    SUB_8                   ; (0290)
               POP     CX
               MOV     AX,19BH
               PUSH    AX
               PUSH    DI
               MOV     AX,195H
               PUSH    AX
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_51                  ; (1571)
               ADD     SP,8
               MOV     AX,10H
               PUSH    AX
               LEA     AX,[BP-0AEH]            ; Load effective addr
               PUSH    AX
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_49                  ; (150B)
               ADD     SP,6
               MOV     SI,AX
               JMP     SHORT LOC_14            ; (0286)
LOC_12:
               CMP     BYTE PTR SS:DATA_124E[BP],2EH   ; (8134:FF70=0) '.'
               JE      LOC_13                  ; Jump if equal
               TEST    BYTE PTR SS:DATA_123E[BP],10H   ; (8134:FF67=0)
               JZ      LOC_13                  ; Jump if zero
               LEA     AX,[BP-90H]             ; Load effective addr
               PUSH    AX
               PUSH    DI
               MOV     AX,195H
               PUSH    AX
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_51                  ; (1571)
               ADD     SP,8
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_7                   ; (0212)
               POP     CX
LOC_13:
               LEA     AX,[BP-0AEH]            ; Load effective addr
               PUSH    AX
               CALL    SUB_50                  ; (152D)
               POP     CX
               MOV     SI,AX
LOC_14:
               OR      SI,SI                   ; Zero ?
               JZ      LOC_12                  ; Jump if zero
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_7           ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_8           PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,7EH
               PUSH    SI
               PUSH    WORD PTR [BP+4]
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_33                  ; (0B88)
               POP     CX
               POP     CX
               MOV     AX,19FH
               PUSH    AX
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_32                  ; (0B4C)
               POP     CX
               POP     CX
               XOR     AX,AX                   ; Zero register
               PUSH    AX
               LEA     AX,[BP-7EH]             ; Load effective addr
               PUSH    AX
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_49                  ; (150B)
               ADD     SP,6
               MOV     SI,AX
               JMP     SHORT LOC_16            ; (02EC)
LOC_15:
               LEA     AX,[BP-60H]             ; Load effective addr
               PUSH    AX
               PUSH    WORD PTR [BP+4]
               MOV     AX,195H
               PUSH    AX
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_51                  ; (1571)
               ADD     SP,8
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               CALL    SUB_31                  ; (0B34)
               POP     CX
               LEA     AX,[BP-7EH]             ; Load effective addr
               PUSH    AX
               CALL    SUB_50                  ; (152D)
               POP     CX
               MOV     SI,AX
LOC_16:
               OR      SI,SI                   ; Zero ?
               JZ      LOC_15                  ; Jump if zero
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_8           ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_9           PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,4
               MOV     AX,1A4H
               PUSH    AX
               PUSH    WORD PTR [BP-2]
               CALL    SUB_48                  ; (14F3)
               POP     CX
               POP     CX
               PUSH    WORD PTR [BP-4]
               XOR     AX,AX                   ; Zero register
               PUSH    AX
               MOV     AX,0CH
               PUSH    AX
               MOV     AX,2
               PUSH    AX
               CALL    SUB_52                  ; (15D4)
               ADD     SP,8
               MOV     SP,BP
               POP     BP
               RETN
SUB_9           ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_10          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               MOV     SI,[BP+4]
               OR      SI,SI                   ; Zero ?
               JL      LOC_19                  ; Jump if <
               CMP     SI,58H
               JBE     LOC_18                  ; Jump if below or =
LOC_17:
               MOV     SI,57H
LOC_18:
               MOV     DS:DATA_29E,SI          ; (7FC4:01D6=0CD57H)
               MOV     AL,DS:DATA_30E[SI]      ; (7FC4:01D8=21H)
               CBW                             ; Convrt byte to word
               XCHG    AX,SI
               JMP     SHORT LOC_20            ; (034B)
LOC_19:
               NEG     SI
               CMP     SI,23H
               JA      LOC_17                  ; Jump if above
               MOV     WORD PTR DS:DATA_29E,0FFFFH     ; (7FC4:01D6=0CD57H)
LOC_20:
               MOV     AX,SI
               MOV     DS:DATA_27E,AX          ; (7FC4:0094=0)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_21            ; (0355)
LOC_21:
               POP     SI
               POP     BP
               RETN    2
SUB_10          ENDP

               DB      0C3H

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_11          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               JMP     SHORT LOC_23            ; (036A)
LOC_22:
               MOV     BX,WORD PTR DS:[23CH]   ; (7FC4:023C=0E246H)
               SHL     BX,1                    ; Shift w/zeros fill
               CALL    WORD PTR DS:[464H][BX]  ;*(7FC4:0464=0E3D1H)
LOC_23:
               MOV     AX,WORD PTR DS:[23CH]   ; (7FC4:023C=0E246H)
               DEC     WORD PTR DS:[23CH]      ; (7FC4:023C=0E246H)
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_22                  ; Jump if not zero
               CALL    WORD PTR DS:DATA_31E    ; (7FC4:0232=2FB9H)
               CALL    WORD PTR DS:[234H]      ; (7FC4:0234=9000H)
               CALL    WORD PTR DS:[236H]      ; (7FC4:0236=2FCH)
               PUSH    WORD PTR [BP+4]
               CALL    SUB_2                   ; (0121)
               POP     CX
               POP     BP
               RETN
SUB_11          ENDP

DATA_39         DW      0
DATA_40         DW      0
               DB      0, 0

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_12          PROC    NEAR
               POP     CS:DATA_39              ; (7FD4:038A=0)
               MOV     CS:DATA_40,DS           ; (7FD4:038C=0)
               CLD                             ; Clear direction
               MOV     ES,DATA_76              ; (8134:0090=0)
               MOV     SI,80H
               XOR     AH,AH                   ; Zero register
               LODS    BYTE PTR ES:[SI]        ; String [si] to al
               INC     AX
               MOV     BP,ES
               XCHG    DX,SI
               XCHG    AX,BX
               MOV     SI,WORD PTR DATA_73     ; (8134:008A=0)
               ADD     SI,2
               MOV     CX,1
               CMP     BYTE PTR DATA_77,3      ; (8134:0092=0)
               JB      LOC_24                  ; Jump if below
               MOV     ES,WORD PTR DATA_73+2   ; (8134:008C=0)
               MOV     DI,SI
               MOV     CL,7FH
               XOR     AL,AL                   ; Zero register
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               JCXZ    LOC_32                  ; Jump if cx=0
               XOR     CL,7FH
LOC_24:
               SUB     SP,2
               MOV     AX,1
               ADD     AX,BX
               ADD     AX,CX
               AND     AX,0FFFEH
               MOV     DI,SP
               SUB     DI,AX
               JC      LOC_32                  ; Jump if carry Set
               MOV     SP,DI
               MOV     AX,ES
               MOV     DS,AX
               MOV     AX,SS
               MOV     ES,AX
               PUSH    CX
               DEC     CX
               REP     MOVSB                   ; Rep while cx>0 Mov [si] to es:[di]
               XOR     AL,AL                   ; Zero register
               STOSB                           ; Store al to es:[di]
               MOV     DS,BP
               XCHG    SI,DX
               XCHG    BX,CX
               MOV     AX,BX
               MOV     DX,AX
               INC     BX
LOC_25:
               CALL    SUB_13                  ; (0419)
               JA      LOC_27                  ; Jump if above
LOC_26:
               JC      LOC_33                  ; Jump if carry Set
               CALL    SUB_13                  ; (0419)
               JA      LOC_26                  ; Jump if above
LOC_27:
               CMP     AL,20H                  ; ' '
               JE      LOC_28                  ; Jump if equal
               CMP     AL,0DH
               JE      LOC_28                  ; Jump if equal
               CMP     AL,9
               JNE     LOC_25                  ; Jump if not equal
LOC_28:
               XOR     AL,AL                   ; Zero register
               JMP     SHORT LOC_25            ; (03FD)

;���� External Entry into Subroutine ��������������������������������������

SUB_13:
               OR      AX,AX                   ; Zero ?
               JZ      LOC_29                  ; Jump if zero
               INC     DX
               STOSB                           ; Store al to es:[di]
               OR      AL,AL                   ; Zero ?
               JNZ     LOC_29                  ; Jump if not zero
               INC     BX
LOC_29:
               XCHG    AH,AL
               XOR     AL,AL                   ; Zero register
               STC                             ; Set carry flag
               JCXZ    LOC_RET_31              ; Jump if cx=0
               LODSB                           ; String [si] to al
               DEC     CX
               SUB     AL,22H                  ; '"'
               JZ      LOC_RET_31              ; Jump if zero
               ADD     AL,22H                  ; '"'
               CMP     AL,5CH                  ; '\'
               JNE     LOC_30                  ; Jump if not equal
               CMP     BYTE PTR [SI],22H       ; '"'
               JNE     LOC_30                  ; Jump if not equal
               LODSB                           ; String [si] to al
               DEC     CX
LOC_30:
               OR      SI,SI                   ; Zero ?

LOC_RET_31:
               RETN
LOC_32:
               JMP     LOC_10                  ; (01E2)
LOC_33:
               POP     CX
               ADD     CX,DX
               MOV     DS,CS:DATA_40           ; (7FD4:038C=0)
               MOV     DS:DATA_5E,BX           ; (0000:0084=9CEH)
               INC     BX
               ADD     BX,BX
               MOV     SI,SP
               MOV     BP,SP
               SUB     BP,BX
               JC      LOC_32                  ; Jump if carry Set
               MOV     SP,BP
               MOV     DS:DATA_6E,BP           ; (0000:0086=13C7H)
LOC_34:
               JCXZ    LOC_36                  ; Jump if cx=0
               MOV     [BP],SI
               ADD     BP,2

LOCLOOP_35:
               LODS    BYTE PTR SS:[SI]        ; String [si] to al
               OR      AL,AL                   ; Zero ?
               LOOPNZ  LOCLOOP_35              ; Loop if zf=0, cx>0

               JZ      LOC_34                  ; Jump if zero
LOC_36:
               XOR     AX,AX                   ; Zero register
               MOV     [BP],AX
               JMP     CS:DATA_39              ; (7FD4:038A=0)
SUB_12          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_14          PROC    NEAR
               MOV     CX,DS:DATA_8E           ; (0000:008A=23EAH)
               PUSH    CX
               CALL    SUB_19                  ; (05CA)
               POP     CX
               MOV     DI,AX
               OR      AX,AX                   ; Zero ?
               JZ      LOC_37                  ; Jump if zero
               PUSH    DS
               PUSH    DS
               POP     ES
               MOV     DS,DS:DATA_9E           ; (0000:008C=0A70H)
               XOR     SI,SI                   ; Zero register
               CLD                             ; Clear direction
               REP     MOVSB                   ; Rep while cx>0 Mov [si] to es:[di]
               POP     DS
               MOV     DI,AX
               PUSH    ES
               PUSH    WORD PTR DS:DATA_10E    ; (0000:008E=23EAH)
               CALL    SUB_19                  ; (05CA)
               ADD     SP,2
               MOV     BX,AX
               POP     ES
               MOV     DS:DATA_7E,AX           ; (0000:0088=723H)
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_38                  ; Jump if not zero
LOC_37:
               JMP     LOC_10                  ; (01E2)
LOC_38:
               XOR     AX,AX                   ; Zero register
               MOV     CX,0FFFFH
LOC_39:
               MOV     [BX],DI
               ADD     BX,2
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               CMP     ES:[DI],AL
               JNE     LOC_39                  ; Jump if not equal
               MOV     [BX],AX
               RETN
SUB_14          ENDP

               DB      55H, 8BH, 0ECH, 83H, 3EH, 3CH
               DB      2, 20H, 75H, 5, 0B8H, 1
               DB      0, 0EBH, 15H, 8BH, 46H, 4
               DB      8BH, 1EH, 3CH, 2, 0D1H, 0E3H
               DB      89H, 87H, 64H, 4, 0FFH, 6
               DB      3CH, 2, 33H, 0C0H, 0EBH, 0
LOC_40:
               POP     BP
               RETN

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_15          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     DI,[BP+4]
               MOV     AX,[DI+6]
               MOV     DS:DATA_23E,AX          ; (0000:04A6=0)
               CMP     AX,DI
               JNE     LOC_41                  ; Jump if not equal
               MOV     WORD PTR DS:DATA_23E,0  ; (0000:04A6=0)
               JMP     SHORT LOC_42            ; (0515)
LOC_41:
               MOV     SI,[DI+4]
               MOV     BX,DS:DATA_23E          ; (0000:04A6=0)
               MOV     [BX+4],SI
               MOV     AX,DS:DATA_23E          ; (0000:04A6=0)
               MOV     [SI+6],AX
LOC_42:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_15          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_16          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     DI,[BP+4]
               MOV     AX,[BP+6]
               SUB     [DI],AX
               MOV     SI,[DI]
               ADD     SI,DI
               MOV     AX,[BP+6]
               INC     AX
               MOV     [SI],AX
               MOV     [SI+2],DI
               MOV     AX,DS:DATA_22E          ; (0000:04A4=0)
               CMP     AX,DI
               JNE     LOC_43                  ; Jump if not equal
               MOV     DS:DATA_22E,SI          ; (0000:04A4=0)
               JMP     SHORT LOC_44            ; (0548)
LOC_43:
               MOV     DI,SI
               ADD     DI,[BP+6]
               MOV     [DI+2],SI
LOC_44:
               MOV     AX,SI
               ADD     AX,4
               JMP     SHORT LOC_45            ; (054F)
LOC_45:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_16          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_17          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               MOV     AX,[BP+4]
               XOR     DX,DX                   ; Zero register
               AND     AX,0FFFFH
               AND     DX,0
               nop                             ;*Fixup for MASM (M)
               PUSH    DX
               PUSH    AX
               CALL    SUB_21                  ; (065C)
               POP     CX
               POP     CX
               MOV     SI,AX
               CMP     SI,0FFFFH
               JNE     LOC_46                  ; Jump if not equal
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_47            ; (058D)
LOC_46:
               MOV     AX,DS:DATA_22E          ; (0000:04A4=0)
               MOV     [SI+2],AX
               MOV     AX,[BP+4]
               INC     AX
               MOV     [SI],AX
               MOV     DS:DATA_22E,SI          ; (0000:04A4=0)
               MOV     AX,DS:DATA_22E          ; (0000:04A4=0)
               ADD     AX,4
               JMP     SHORT LOC_47            ; (058D)
LOC_47:
               POP     SI
               POP     BP
               RETN
SUB_17          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_18          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               MOV     AX,[BP+4]
               XOR     DX,DX                   ; Zero register
               AND     AX,0FFFFH
               AND     DX,0
               nop                             ;*Fixup for MASM (M)
               PUSH    DX
               PUSH    AX
               CALL    SUB_21                  ; (065C)
               POP     CX
               POP     CX
               MOV     SI,AX
               CMP     SI,0FFFFH
               JNE     LOC_48                  ; Jump if not equal
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_49            ; (05C7)
LOC_48:
               MOV     DS:DATA_24E,SI          ; (0000:04A8=0)
               MOV     DS:DATA_22E,SI          ; (0000:04A4=0)
               MOV     AX,[BP+4]
               INC     AX
               MOV     [SI],AX
               MOV     AX,SI
               ADD     AX,4
               JMP     SHORT LOC_49            ; (05C7)
LOC_49:
               POP     SI
               POP     BP
               RETN
SUB_18          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_19          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     DI,[BP+4]
               OR      DI,DI                   ; Zero ?
               JNZ     LOC_50                  ; Jump if not zero
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_56            ; (0634)
LOC_50:
               MOV     AX,DI
               ADD     AX,0BH
               AND     AX,0FFF8H
               MOV     DI,AX
               CMP     WORD PTR DS:DATA_24E,0  ; (0000:04A8=0)
               JNE     LOC_51                  ; Jump if not equal
               PUSH    DI
               CALL    SUB_18                  ; (0590)
               POP     CX
               JMP     SHORT LOC_56            ; (0634)
LOC_51:
               MOV     SI,DS:DATA_23E          ; (0000:04A6=0)
               MOV     AX,SI
               OR      AX,AX                   ; Zero ?
               JZ      LOC_55                  ; Jump if zero
LOC_52:
               MOV     AX,[SI]
               MOV     DX,DI
               ADD     DX,28H
               CMP     AX,DX
               JB      LOC_53                  ; Jump if below
               PUSH    DI
               PUSH    SI
               CALL    SUB_16                  ; (0519)
               POP     CX
               POP     CX
               JMP     SHORT LOC_56            ; (0634)
LOC_53:
               MOV     AX,[SI]
               CMP     AX,DI
               JB      LOC_54                  ; Jump if below
               PUSH    SI
               CALL    SUB_15                  ; (04EB)
               POP     CX
               INC     WORD PTR [SI]
               MOV     AX,SI
               ADD     AX,4
               JMP     SHORT LOC_56            ; (0634)
LOC_54:
               MOV     SI,[SI+6]
               CMP     SI,DS:DATA_23E          ; (0000:04A6=0)
               JNE     LOC_52                  ; Jump if not equal
LOC_55:
               PUSH    DI
               CALL    SUB_17                  ; (0553)
               POP     CX
               JMP     SHORT LOC_56            ; (0634)
LOC_56:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_19          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_20          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AX,[BP+4]
               MOV     DX,SP
               SUB     DX,100H
               CMP     AX,DX
               JAE     LOC_57                  ; Jump if above or =
               MOV     DS:DATA_28E,AX          ; (7FC4:009E=0)
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_58            ; (065A)
LOC_57:
               MOV     WORD PTR DS:DATA_27E,8  ; (7FC4:0094=0)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_58            ; (065A)
LOC_58:
               POP     BP
               RETN
SUB_20          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_21          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AX,[BP+4]
               MOV     DX,[BP+6]
               ADD     AX,DS:DATA_14E          ; (0000:009E=27DH)
               ADC     DX,0
               MOV     CX,AX
               ADD     CX,100H
               ADC     DX,0
               OR      DX,DX                   ; Zero ?
               JNZ     LOC_59                  ; Jump if not zero
               CMP     CX,SP
               JAE     LOC_59                  ; Jump if above or =
               XCHG    AX,DS:DATA_14E          ; (0000:009E=27DH)
               JMP     SHORT LOC_60            ; (068E)
LOC_59:
               MOV     WORD PTR DS:DATA_11E,8  ; (0000:0094=192FH)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_60            ; (068E)
LOC_60:
               POP     BP
               RETN
SUB_21          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_22          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    WORD PTR [BP+4]
               CALL    SUB_20                  ; (0638)
               POP     CX
               JMP     SHORT LOC_61            ; (069C)
LOC_61:
               POP     BP
               RETN
SUB_22          ENDP

               DB      55H, 8BH, 0ECH, 8BH, 46H, 4
               DB      99H, 52H, 50H, 0E8H, 0B2H, 0FFH
               DB      8BH, 0E5H, 0EBH, 0, 5DH, 0C3H

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_23          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,2
               PUSH    SI
               PUSH    DI
               MOV     BX,[BP+4]
               MOV     SI,[BX]
               MOV     AX,SI
               MOV     [BP-2],AX
               MOV     BX,[BP+4]
               TEST    WORD PTR [BX+2],40H
               JZ      LOC_62                  ; Jump if zero
               MOV     AX,SI
               JMP     SHORT LOC_65            ; (06EF)
LOC_62:
               MOV     BX,[BP+4]
               MOV     DI,[BX+0AH]
               JMP     SHORT LOC_64            ; (06E3)
LOC_63:
               MOV     BX,DI
               INC     DI
               CMP     BYTE PTR [BX],0AH
               JNE     LOC_64                  ; Jump if not equal
               INC     WORD PTR [BP-2]
LOC_64:
               MOV     AX,SI
               DEC     SI
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_63                  ; Jump if not zero
               MOV     AX,[BP-2]
               JMP     SHORT LOC_65            ; (06EF)
LOC_65:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN    2
SUB_23          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_24          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               MOV     SI,[BP+4]
               PUSH    SI
               CALL    SUB_34                  ; (0BEE)
               POP     CX
               OR      AX,AX                   ; Zero ?
               JZ      LOC_66                  ; Jump if zero
               MOV     AX,0FFFFH
               JMP     SHORT LOC_70            ; (0758)
LOC_66:
               CMP     WORD PTR [BP+0AH],1
               JNE     LOC_67                  ; Jump if not equal
               CMP     WORD PTR [SI],0
               JLE     LOC_67                  ; Jump if < or =
               PUSH    SI
               CALL    SUB_23                  ; (06B0)
               CWD                             ; Word to double word
               SUB     [BP+6],AX
               SBB     [BP+8],DX
LOC_67:
               AND     WORD PTR [SI+2],0FE5FH
               MOV     WORD PTR [SI],0
               MOV     AX,[SI+8]
               MOV     [SI+0AH],AX
               PUSH    WORD PTR [BP+0AH]
               PUSH    WORD PTR [BP+8]
               PUSH    WORD PTR [BP+6]
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_29                  ; (0A1E)
               ADD     SP,8
               CMP     DX,0FFFFH
               JNE     LOC_68                  ; Jump if not equal
               CMP     AX,0FFFFH
               JNE     LOC_68                  ; Jump if not equal
               MOV     AX,0FFFFH
               JMP     SHORT LOC_69            ; (0756)
LOC_68:
               XOR     AX,AX                   ; Zero register
LOC_69:
               JMP     SHORT LOC_70            ; (0758)
LOC_70:
               POP     SI
               POP     BP
               RETN
SUB_24          ENDP

               DB      55H, 8BH, 0ECH, 83H, 0ECH, 4
               DB      56H, 8BH, 76H, 4, 56H, 0E8H
               DB      85H, 4, 59H, 0BH, 0C0H, 74H
               DB      8, 0BAH, 0FFH, 0FFH, 0B8H, 0FFH
               DB      0FFH, 0EBH, 3FH, 0B8H, 1, 0
               DB      50H, 33H, 0C0H, 50H, 50H, 8AH
               DB      44H, 4, 98H, 50H, 0E8H, 98H
               DB      2, 83H, 0C4H, 8, 89H, 56H
               DB      0FEH, 89H, 46H, 0FCH, 83H, 3CH
               DB      0, 7EH, 19H, 8BH, 56H, 0FEH
               DB      8BH, 46H, 0FCH, 52H, 50H, 56H
               DB      0E8H, 10H, 0FFH, 99H, 8BH, 0D8H
               DB      8BH, 0CAH, 58H, 5AH, 2BH, 0C3H
               DB      1BH, 0D1H, 0EBH, 6
LOC_71:
               MOV     DX,[BP-2]
               MOV     AX,[BP-4]
LOC_72:
               JMP     SHORT LOC_73            ; (07B5)
LOC_73:
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_25          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AX,4400H
               MOV     BX,[BP+4]
               INT     21H                     ; DOS Services  ah=function 44h
                                               ;  device drivr cntrl al=subfunc
               MOV     AX,0
               JC      LOC_74                  ; Jump if carry Set
               SHL     DX,1                    ; Shift w/zeros fill
               RCL     AX,1                    ; Rotate thru carry
LOC_74:
               JMP     SHORT LOC_75            ; (07D0)
LOC_75:
               POP     BP
               RETN
SUB_25          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_26          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     DI,[BP+0AH]
               MOV     SI,[BP+4]
               MOV     AX,[SI+0EH]
               CMP     AX,SI
               JNE     LOC_76                  ; Jump if not equal
               CMP     WORD PTR [BP+8],2
               JG      LOC_76                  ; Jump if >
               CMP     DI,7FFFH
               JBE     LOC_77                  ; Jump if below or =
LOC_76:
               MOV     AX,0FFFFH
               JMP     LOC_85                  ; (08A0)
LOC_77:
               CMP     WORD PTR DS:DATA_34E,0  ; (7FC4:03A8=0AE46H)
               JNE     LOC_78                  ; Jump if not equal
               MOV     AX,24EH
               CMP     AX,SI
               JNE     LOC_78                  ; Jump if not equal
               MOV     WORD PTR DS:DATA_34E,1  ; (7FC4:03A8=0AE46H)
               JMP     SHORT LOC_79            ; (0820)
LOC_78:
               CMP     WORD PTR DS:DATA_33E,0  ; (7FC4:03A6=8D50H)
               JNE     LOC_79                  ; Jump if not equal
               MOV     AX,23EH
               CMP     AX,SI
               JNE     LOC_79                  ; Jump if not equal
               MOV     WORD PTR DS:DATA_33E,1  ; (7FC4:03A6=8D50H)
LOC_79:
               CMP     WORD PTR [SI],0
               JE      LOC_80                  ; Jump if equal
               MOV     AX,1
               PUSH    AX
               XOR     AX,AX                   ; Zero register
               PUSH    AX
               PUSH    AX
               PUSH    SI
               CALL    SUB_24                  ; (06F7)
               ADD     SP,8
LOC_80:
               TEST    WORD PTR [SI+2],4
               JZ      LOC_81                  ; Jump if zero
               PUSH    WORD PTR [SI+8]
               CALL    SUB_47                  ; (14CC)
               POP     CX
LOC_81:
               AND     WORD PTR [SI+2],0FFF3H
               nop                             ;*Fixup for MASM (M)
               MOV     WORD PTR [SI+6],0
               MOV     AX,SI
               ADD     AX,5
               MOV     [SI+8],AX
               MOV     [SI+0AH],AX
               CMP     WORD PTR [BP+8],2
               JE      LOC_84                  ; Jump if equal
               OR      DI,DI                   ; Zero ?
               JBE     LOC_84                  ; Jump if below or =
               MOV     WORD PTR DS:DATA_31E,8A4H       ; (7FC4:0232=2FB9H)
               CMP     WORD PTR [BP+6],0
               JNE     LOC_83                  ; Jump if not equal
               PUSH    DI
               CALL    SUB_19                  ; (05CA)
               POP     CX
               MOV     [BP+6],AX
               OR      AX,AX                   ; Zero ?
               JZ      LOC_82                  ; Jump if zero
               OR      WORD PTR [SI+2],4
               nop                             ;*Fixup for MASM (M)
               JMP     SHORT LOC_83            ; (0885)
LOC_82:
               MOV     AX,0FFFFH
               JMP     SHORT LOC_85            ; (08A0)
LOC_83:
               MOV     AX,[BP+6]
               MOV     [SI+0AH],AX
               MOV     [SI+8],AX
               MOV     [SI+6],DI
               CMP     WORD PTR [BP+8],1
               JNE     LOC_84                  ; Jump if not equal
               OR      WORD PTR [SI+2],8
               nop                             ;*Fixup for MASM (M)
LOC_84:
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_85            ; (08A0)
LOC_85:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_26          ENDP

               DB      56H, 57H, 0BFH, 4, 0, 0BEH
               DB      3EH, 2, 0EBH, 10H
LOC_86:
               TEST    WORD PTR [SI+2],3
               JZ      LOC_87                  ; Jump if zero
               PUSH    SI
               CALL    SUB_34                  ; (0BEE)
               POP     CX
LOC_87:
               DEC     DI
               ADD     SI,10H
               OR      DI,DI                   ; Zero ?
               JNZ     LOC_86                  ; Jump if not zero
               POP     DI
               POP     SI
               RETN

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_27          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,8AH
               PUSH    SI
               PUSH    DI
               MOV     AX,[BP+8]
               INC     AX
               CMP     AX,2
               JAE     LOC_88                  ; Jump if above or =
               XOR     AX,AX                   ; Zero register
               JMP     LOC_100                 ; (09D2)
LOC_88:
               MOV     BX,[BP+4]
               SHL     BX,1                    ; Shift w/zeros fill
               TEST    WORD PTR DS:DATA_32E[BX],8000H  ; (7FC4:037E=50FFH)
               JZ      LOC_89                  ; Jump if zero
               PUSH    WORD PTR [BP+8]
               PUSH    WORD PTR [BP+6]
               PUSH    WORD PTR [BP+4]
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               JMP     LOC_100                 ; (09D2)
LOC_89:
               MOV     BX,[BP+4]
               SHL     BX,1                    ; Shift w/zeros fill
               AND     WORD PTR DS:DATA_32E[BX],0FDFFH ; (7FC4:037E=50FFH)
               MOV     AX,[BP+6]
               MOV     SS:DATA_136E[BP],AX     ; (817F:FF7C=0)
               MOV     AX,[BP+8]
               MOV     SS:DATA_134E[BP],AX     ; (817F:FF78=0)
               LEA     SI,[BP-82H]             ; Load effective addr
               JMP     SHORT LOC_95            ; (0987)
LOC_90:
               DEC     WORD PTR SS:DATA_134E[BP]       ; (817F:FF78=0)
               MOV     BX,SS:DATA_136E[BP]     ; (817F:FF7C=0)
               INC     WORD PTR SS:DATA_136E[BP]       ; (817F:FF7C=0)
               MOV     AL,[BX]
               MOV     SS:DATA_135E[BP],AL     ; (817F:FF7B=0)
               CMP     AL,0AH
               JNE     LOC_91                  ; Jump if not equal
               MOV     BYTE PTR [SI],0DH
               INC     SI
LOC_91:
               MOV     AL,SS:DATA_135E[BP]     ; (817F:FF7B=0)
               MOV     [SI],AL
               INC     SI
               LEA     AX,[BP-82H]             ; Load effective addr
               MOV     DX,SI
               SUB     DX,AX
               CMP     DX,80H
               JL      LOC_95                  ; Jump if <
               LEA     AX,[BP-82H]             ; Load effective addr
               MOV     DI,SI
               SUB     DI,AX
               PUSH    DI
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               PUSH    WORD PTR [BP+4]
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               MOV     SS:DATA_133E[BP],AX     ; (817F:FF76=0)
               CMP     AX,DI
               JE      LOC_94                  ; Jump if equal
               CMP     WORD PTR SS:DATA_133E[BP],0     ; (817F:FF76=0)
               JAE     LOC_92                  ; Jump if above or =
               MOV     AX,0FFFFH
               JMP     SHORT LOC_93            ; (0981)
LOC_92:
               MOV     AX,[BP+8]
               SUB     AX,SS:DATA_134E[BP]     ; (817F:FF78=0)
               ADD     AX,SS:DATA_133E[BP]     ; (817F:FF76=0)
               SUB     AX,DI
LOC_93:
               JMP     SHORT LOC_100           ; (09D2)
LOC_94:
               LEA     SI,[BP-82H]             ; Load effective addr
LOC_95:
               CMP     WORD PTR SS:DATA_134E[BP],0     ; (817F:FF78=0)
               JE      LOC_96                  ; Jump if equal
               JMP     LOC_90                  ; (091A)
               nop                             ;*Fixup for MASM (V)
LOC_96:
               LEA     AX,[BP-82H]             ; Load effective addr
               MOV     DI,SI
               SUB     DI,AX
               MOV     AX,DI
               OR      AX,AX                   ; Zero ?
               JBE     LOC_99                  ; Jump if below or =
               PUSH    DI
               LEA     AX,[BP-82H]             ; Load effective addr
               PUSH    AX
               PUSH    WORD PTR [BP+4]
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               MOV     SS:DATA_133E[BP],AX     ; (817F:FF76=0)
               CMP     AX,DI
               JE      LOC_99                  ; Jump if equal
               CMP     WORD PTR SS:DATA_133E[BP],0     ; (817F:FF76=0)
               JAE     LOC_97                  ; Jump if above or =
               MOV     AX,0FFFFH
               JMP     SHORT LOC_98            ; (09CB)
LOC_97:
               MOV     AX,[BP+8]
               ADD     AX,SS:DATA_133E[BP]     ; (817F:FF76=0)
               SUB     AX,DI
LOC_98:
               JMP     SHORT LOC_100           ; (09D2)
LOC_99:
               MOV     AX,[BP+8]
               JMP     SHORT LOC_100           ; (09D2)
LOC_100:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_27          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_28          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     BX,[BP+4]
               SHL     BX,1                    ; Shift w/zeros fill
               TEST    WORD PTR DS:DATA_32E[BX],800H   ; (7FC4:037E=50FFH)
               JZ      LOC_101                 ; Jump if zero
               MOV     AX,2
               PUSH    AX
               XOR     AX,AX                   ; Zero register
               PUSH    AX
               PUSH    AX
               PUSH    WORD PTR [BP+4]
               CALL    SUB_29                  ; (0A1E)
               MOV     SP,BP
LOC_101:
               MOV     AH,40H                  ; '@'
               MOV     BX,[BP+4]
               MOV     CX,[BP+8]
               MOV     DX,[BP+6]
               INT     21H                     ; DOS Services  ah=function 40h
                                               ;  write file cx=bytes, to ds:dx
               JC      LOC_102                 ; Jump if carry Set
               PUSH    AX
               MOV     BX,[BP+4]
               SHL     BX,1                    ; Shift w/zeros fill
               OR      WORD PTR DS:DATA_32E[BX],1000H  ; (7FC4:037E=50FFH)
               POP     AX
               JMP     SHORT LOC_103           ; (0A1C)
LOC_102:
               PUSH    AX
               CALL    SUB_10                  ; (031F)
               JMP     SHORT LOC_103           ; (0A1C)
LOC_103:
               POP     BP
               RETN
SUB_28          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_29          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     BX,[BP+4]
               SHL     BX,1                    ; Shift w/zeros fill
               AND     WORD PTR DS:DATA_32E[BX],0FDFFH ; (7FC4:037E=50FFH)
               MOV     AH,42H                  ; 'B'
               MOV     AL,[BP+0AH]
               MOV     BX,[BP+4]
               MOV     CX,[BP+8]
               MOV     DX,[BP+6]
               INT     21H                     ; DOS Services  ah=function 42h
                                               ;  move file ptr, cx,dx=offset
               JC      LOC_104                 ; Jump if carry Set
               JMP     SHORT LOC_105           ; (0A47)
LOC_104:
               PUSH    AX
               CALL    SUB_10                  ; (031F)
               CWD                             ; Word to double word
               JMP     SHORT LOC_105           ; (0A47)
LOC_105:
               POP     BP
               RETN
SUB_29          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_30          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,22H
               PUSH    SI
               PUSH    DI
               PUSH    ES
               MOV     DI,[BP+0AH]
               PUSH    DS
               POP     ES
               MOV     BX,[BP+8]
               CMP     BX,24H
               JA      LOC_113                 ; Jump if above
               CMP     BL,2
               JB      LOC_113                 ; Jump if below
               MOV     AX,[BP+0CH]
               MOV     CX,[BP+0EH]
               OR      CX,CX                   ; Zero ?
               JGE     LOC_106                 ; Jump if > or =
               CMP     BYTE PTR [BP+6],0
               JE      LOC_106                 ; Jump if equal
               MOV     BYTE PTR [DI],2DH       ; '-'
               INC     DI
               NEG     CX
               NEG     AX
               SBB     CX,0
LOC_106:
               LEA     SI,[BP-22H]             ; Load effective addr
               JCXZ    LOC_108                 ; Jump if cx=0
LOC_107:
               XCHG    AX,CX
               SUB     DX,DX
               DIV     BX                      ; ax,dx rem=dx:ax/reg
               XCHG    AX,CX
               DIV     BX                      ; ax,dx rem=dx:ax/reg
               MOV     [SI],DL
               INC     SI
               JCXZ    LOC_109                 ; Jump if cx=0
               JMP     SHORT LOC_107           ; (0A84)
LOC_108:
               SUB     DX,DX
               DIV     BX                      ; ax,dx rem=dx:ax/reg
               MOV     [SI],DL
               INC     SI
LOC_109:
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_108                 ; Jump if not zero
               LEA     CX,[BP-22H]             ; Load effective addr
               NEG     CX
               ADD     CX,SI
               CLD                             ; Clear direction

LOCLOOP_110:
               DEC     SI
               MOV     AL,[SI]
               SUB     AL,0AH
               JNC     LOC_111                 ; Jump if carry=0
               ADD     AL,3AH                  ; ':'
               JMP     SHORT LOC_112           ; (0AB4)
LOC_111:
               ADD     AL,[BP+4]
LOC_112:
               STOSB                           ; Store al to es:[di]
               LOOP    LOCLOOP_110             ; Loop if cx > 0

LOC_113:
               MOV     AL,0
               STOSB                           ; Store al to es:[di]
               POP     ES
               MOV     AX,[BP+0AH]
               JMP     SHORT LOC_114           ; (0AC0)
LOC_114:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN    0CH
SUB_30          ENDP

               DB      55H, 8BH, 0ECH, 83H, 7EH, 8
               DB      0AH, 75H, 6, 8BH, 46H, 4
               DB      99H, 0EBH, 5, 8BH, 46H, 4
               DB      33H, 0D2H, 52H, 50H, 0FFH, 76H
               DB      6, 0FFH, 76H, 8, 0B0H, 1
               DB      50H, 0B0H, 61H, 50H, 0E8H, 5CH
               DB      0FFH, 0EBH, 0
LOC_115:
               POP     BP
               RETN
               DB      55H, 8BH, 0ECH, 0FFH, 76H, 6
               DB      0FFH, 76H, 4, 0FFH, 76H, 8
               DB      0FFH, 76H, 0AH, 0B0H, 0, 50H
               DB      0B0H, 61H, 50H, 0E8H, 40H, 0FFH
               DB      0EBH, 0, 5DH, 0C3H, 55H, 8BH
               DB      0ECH, 0FFH, 76H, 6, 0FFH, 76H
               DB      4, 0FFH, 76H, 8, 0FFH, 76H
               DB      0AH, 83H, 7EH, 0AH, 0AH, 75H
               DB      5, 0B8H, 1, 0, 0EBH, 2
               DB      33H, 0C0H, 50H, 0B0H, 61H, 50H
               DB      0E8H, 19H, 0FFH, 0EBH, 0
LOC_116:
               POP     BP
               RETN

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_31          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AH,41H                  ; 'A'
               MOV     DX,[BP+4]
               INT     21H                     ; DOS Services  ah=function 41h
                                               ;  delete file, name @ ds:dx
               JC      LOC_117                 ; Jump if carry Set
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_118           ; (0B4A)
LOC_117:
               PUSH    AX
               CALL    SUB_10                  ; (031F)
               JMP     SHORT LOC_118           ; (0B4A)
LOC_118:
               POP     BP
               RETN
SUB_31          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_32          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               CLD                             ; Clear direction
               MOV     DI,[BP+4]
               PUSH    DS
               POP     ES
               MOV     DX,DI
               XOR     AL,AL                   ; Zero register
               MOV     CX,0FFFFH
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               LEA     SI,[DI-1]               ; Load effective addr
               MOV     DI,[BP+6]
               MOV     CX,0FFFFH
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               NOT     CX
               SUB     DI,CX
               XCHG    SI,DI
               TEST    SI,1
               JZ      LOC_119                 ; Jump if zero
               MOVSB                           ; Mov [si] to es:[di]
               DEC     CX
LOC_119:
               SHR     CX,1                    ; Shift w/zeros fill
               REP     MOVSW                   ; Rep while cx>0 Mov [si] to es:[di]
               JNC     LOC_120                 ; Jump if carry=0
               MOVSB                           ; Mov [si] to es:[di]
LOC_120:
               MOV     AX,DX
               JMP     SHORT LOC_121           ; (0B84)
LOC_121:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_32          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_33          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               PUSH    DS
               POP     ES
               CLD                             ; Clear direction
               MOV     DI,[BP+6]
               MOV     SI,DI
               XOR     AL,AL                   ; Zero register
               MOV     CX,0FFFFH
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               NOT     CX
               MOV     DI,[BP+4]
               REP     MOVSB                   ; Rep while cx>0 Mov [si] to es:[di]
               MOV     AX,[BP+4]
               JMP     SHORT LOC_122           ; (0BA8)
LOC_122:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_33          ENDP

               DB      55H, 8BH, 0ECH, 56H, 57H, 1EH
               DB      7, 8BH, 7EH, 4, 8BH, 76H
               DB      6, 8BH, 4EH, 8, 0D1H, 0E9H
               DB      0FCH, 0F3H, 0A5H, 73H, 1, 0A4H
LOC_123:
               MOV     AX,[BP+4]
               JMP     SHORT LOC_124           ; (0BC9)
LOC_124:
               POP     DI
               POP     SI
               POP     BP
               RETN
               DB      0BAH, 0AAH, 3, 0EBH, 3, 0BAH
               DB      0AFH, 3, 0B9H, 5, 0, 90H
               DB      0B4H, 40H, 0BBH, 2, 0, 0CDH
               DB      21H, 0B9H, 27H, 0, 90H, 0BAH
               DB      0B4H, 3, 0B4H, 40H, 0CDH, 21H
               DB      0E9H, 0F4H, 0F5H

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_34          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     SI,[BP+4]
               MOV     AX,[SI+0EH]
               CMP     AX,SI
               JE      LOC_125                 ; Jump if equal
               MOV     AX,0FFFFH
               JMP     SHORT LOC_130           ; (0C68)
LOC_125:
               CMP     WORD PTR [SI],0
               JL      LOC_128                 ; Jump if <
               TEST    WORD PTR [SI+2],8
               JNZ     LOC_126                 ; Jump if not zero
               MOV     AX,[SI+0AH]
               MOV     DX,SI
               ADD     DX,5
               CMP     AX,DX
               JNE     LOC_127                 ; Jump if not equal
LOC_126:
               MOV     WORD PTR [SI],0
               MOV     AX,[SI+0AH]
               MOV     DX,SI
               ADD     DX,5
               CMP     AX,DX
               JNE     LOC_127                 ; Jump if not equal
               MOV     AX,[SI+8]
               MOV     [SI+0AH],AX
LOC_127:
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_130           ; (0C68)
LOC_128:
               MOV     DI,[SI+6]
               ADD     DI,[SI]
               INC     DI
               SUB     [SI],DI
               PUSH    DI
               MOV     AX,[SI+8]
               MOV     [SI+0AH],AX
               PUSH    AX
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_27                  ; (08C5)
               ADD     SP,6
               CMP     AX,DI
               JE      LOC_129                 ; Jump if equal
               TEST    WORD PTR [SI+2],200H
               JNZ     LOC_129                 ; Jump if not zero
               OR      WORD PTR [SI+2],10H
               nop                             ;*Fixup for MASM (M)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_130           ; (0C68)
LOC_129:
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_130           ; (0C68)
LOC_130:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_34          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_35          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     BX,[BP+6]
               DEC     WORD PTR [BX]
               PUSH    WORD PTR [BP+6]
               MOV     AL,[BP+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_36                  ; (0C85)
               MOV     SP,BP
               JMP     SHORT LOC_131           ; (0C83)
LOC_131:
               POP     BP
               RETN
SUB_35          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_36          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,2
               PUSH    SI
               MOV     SI,[BP+6]
               MOV     AL,[BP+4]
               MOV     [BP-1],AL
LOC_132:
               INC     WORD PTR [SI]
               JGE     LOC_135                 ; Jump if > or =
               MOV     AL,[BP-1]
               INC     WORD PTR [SI+0AH]
               MOV     BX,[SI+0AH]
               MOV     [BX-1],AL
               TEST    WORD PTR [SI+2],8
               JZ      LOC_134                 ; Jump if zero
               CMP     BYTE PTR [BP-1],0AH
               JE      LOC_133                 ; Jump if equal
               CMP     BYTE PTR [BP-1],0DH
               JNE     LOC_134                 ; Jump if not equal
LOC_133:
               PUSH    SI
               CALL    SUB_34                  ; (0BEE)
               POP     CX
               OR      AX,AX                   ; Zero ?
               JZ      LOC_134                 ; Jump if zero
               MOV     AX,0FFFFH
               JMP     LOC_149                 ; (0DB0)
LOC_134:
               MOV     AL,[BP-1]
               MOV     AH,0
               JMP     LOC_149                 ; (0DB0)
LOC_135:
               DEC     WORD PTR [SI]
               TEST    WORD PTR [SI+2],90H
               JNZ     LOC_136                 ; Jump if not zero
               TEST    WORD PTR [SI+2],2
               JNZ     LOC_137                 ; Jump if not zero
LOC_136:
               OR      WORD PTR [SI+2],10H
               nop                             ;*Fixup for MASM (M)
               MOV     AX,0FFFFH
               JMP     LOC_149                 ; (0DB0)
LOC_137:
               OR      WORD PTR [SI+2],100H
               CMP     WORD PTR [SI+6],0
               JE      LOC_141                 ; Jump if equal
               CMP     WORD PTR [SI],0
               JE      LOC_139                 ; Jump if equal
               PUSH    SI
               CALL    SUB_34                  ; (0BEE)
               POP     CX
               OR      AX,AX                   ; Zero ?
               JZ      LOC_138                 ; Jump if zero
               MOV     AX,0FFFFH
               JMP     LOC_149                 ; (0DB0)
LOC_138:
               JMP     SHORT LOC_140           ; (0D15)
LOC_139:
               MOV     AX,0FFFFH
               MOV     DX,[SI+6]
               SUB     AX,DX
               MOV     [SI],AX
LOC_140:
               JMP     LOC_132                 ; (0C95)
               JMP     LOC_149                 ; (0DB0)
LOC_141:
               CMP     WORD PTR DS:DATA_34E,0  ; (7FC4:03A8=0AE46H)
               JNE     LOC_145                 ; Jump if not equal
               MOV     AX,24EH
               CMP     AX,SI
               JNE     LOC_145                 ; Jump if not equal
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_25                  ; (07BA)
               POP     CX
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_142                 ; Jump if not zero
               AND     WORD PTR [SI+2],0FDFFH
LOC_142:
               MOV     AX,200H
               PUSH    AX
               TEST    WORD PTR [SI+2],200H
               JZ      LOC_143                 ; Jump if zero
               MOV     AX,2
               JMP     SHORT LOC_144           ; (0D4D)
LOC_143:
               XOR     AX,AX                   ; Zero register
LOC_144:
               PUSH    AX
               XOR     AX,AX                   ; Zero register
               PUSH    AX
               PUSH    SI
               CALL    SUB_26                  ; (07D2)
               ADD     SP,8
               JMP     LOC_137                 ; (0CEA)
               nop                             ;*Fixup for MASM (V)
LOC_145:
               CMP     BYTE PTR [BP-1],0AH
               JNE     LOC_146                 ; Jump if not equal
               TEST    WORD PTR [SI+2],40H
               JNZ     LOC_146                 ; Jump if not zero
               MOV     AX,1
               PUSH    AX
               MOV     AX,3DCH
               PUSH    AX
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               CMP     AX,1
               JNE     LOC_147                 ; Jump if not equal
LOC_146:
               MOV     AX,1
               PUSH    AX
               LEA     AX,[BP+4]               ; Load effective addr
               PUSH    AX
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               CMP     AX,1
               JE      LOC_148                 ; Jump if equal
LOC_147:
               TEST    WORD PTR [SI+2],200H
               JNZ     LOC_148                 ; Jump if not zero
               OR      WORD PTR [SI+2],10H
               nop                             ;*Fixup for MASM (M)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_149           ; (0DB0)
LOC_148:
               MOV     AL,[BP-1]
               MOV     AH,0
               JMP     SHORT LOC_149           ; (0DB0)
LOC_149:
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_36          ENDP

               DB      55H, 8BH, 0ECH, 56H, 8BH, 76H
               DB      4, 0B8H, 4EH, 2, 50H, 56H
               DB      0E8H, 0C1H, 0FEH, 59H, 59H, 0EBH
               DB      0, 5EH, 5DH, 0C3H, 55H, 8BH
               DB      0ECH, 83H, 0ECH, 2, 56H, 57H
               DB      8BH, 76H, 4, 8BH, 7EH, 6
               DB      47H, 0F7H, 44H, 2, 8, 0
               DB      74H, 23H, 0EBH, 2
LOC_150:
               JMP     SHORT LOC_151           ; (0DE5)
LOC_151:
               DEC     DI
               MOV     AX,DI
               OR      AX,AX                   ; Zero ?
               JZ      LOC_152                 ; Jump if zero
               PUSH    SI
               MOV     BX,[BP+8]
               INC     WORD PTR [BP+8]
               MOV     AL,[BX]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_36                  ; (0C85)
               POP     CX
               POP     CX
               CMP     AX,0FFFFH
               JNE     LOC_150                 ; Jump if not equal
LOC_152:
               JMP     LOC_159                 ; (0E79)
               DB      0F7H, 44H, 2, 40H, 0, 74H
               DB      37H, 83H, 7CH, 6, 0, 74H
               DB      31H, 8BH, 44H, 6, 3BH, 0C7H
               DB      73H, 2AH, 83H, 3CH, 0, 74H
               DB      0DH, 56H, 0E8H, 0CDH, 0FDH, 59H
               DB      0BH, 0C0H, 74H, 4, 33H, 0C0H
               DB      0EBH
               DB      53H
LOC_153:
               DEC     DI
               PUSH    DI
               PUSH    WORD PTR [BP+8]
               MOV     AL,[SI+4]
               CBW                             ; Convrt byte to word
               PUSH    AX
               CALL    SUB_28                  ; (09D8)
               ADD     SP,6
               MOV     [BP-2],AX
               SUB     DI,[BP-2]
               JMP     SHORT LOC_159           ; (0E79)
LOC_154:
               JMP     SHORT LOC_156           ; (0E46)
LOC_155:
               JMP     SHORT LOC_156           ; (0E46)
LOC_156:
               DEC     DI
               MOV     AX,DI
               OR      AX,AX                   ; Zero ?
               JZ      LOC_159                 ; Jump if zero
               INC     WORD PTR [SI]
               JGE     LOC_157                 ; Jump if > or =
               MOV     BX,[BP+8]
               INC     WORD PTR [BP+8]
               MOV     AL,[BX]
               INC     WORD PTR [SI+0AH]
               MOV     BX,[SI+0AH]
               MOV     [BX-1],AL
               MOV     AH,0
               JMP     SHORT LOC_158           ; (0E74)
LOC_157:
               PUSH    SI
               MOV     BX,[BP+8]
               INC     WORD PTR [BP+8]
               PUSH    WORD PTR [BX]
               CALL    SUB_35                  ; (0C6C)
               POP     CX
               POP     CX
LOC_158:
               CMP     AX,0FFFFH
               JNE     LOC_155                 ; Jump if not equal
LOC_159:
               MOV     AX,DI
               JMP     SHORT LOC_160           ; (0E7D)
LOC_160:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN    6

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_37          PROC    NEAR
               JMP     WORD PTR DS:[45CH]      ; (8134:045C=0BCDH)

;���� External Entry into Subroutine ��������������������������������������

SUB_38:
               PUSH    BP
               MOV     BP,SP
               MOV     DX,[BP+4]
               MOV     CX,0F04H
               MOV     BX,3E5H
               CLD                             ; Clear direction
               MOV     AL,DH
               SHR     AL,CL                   ; Shift w/zeros fill
               XLAT                            ; al=[al+[bx]] table
               STOSB                           ; Store al to es:[di]
               MOV     AL,DH
               AND     AL,CH
               XLAT                            ; al=[al+[bx]] table
               STOSB                           ; Store al to es:[di]
               MOV     AL,DL
               SHR     AL,CL                   ; Shift w/zeros fill
               XLAT                            ; al=[al+[bx]] table
               STOSB                           ; Store al to es:[di]
               MOV     AL,DL
               AND     AL,CH
               XLAT                            ; al=[al+[bx]] table
               STOSB                           ; Store al to es:[di]
               JMP     SHORT LOC_161           ; (0EB0)
LOC_161:
               POP     BP
               RETN    2
SUB_37          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_39          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,96H
               PUSH    SI
               PUSH    DI
               MOV     WORD PTR [BP-56H],0
               MOV     BYTE PTR [BP-53H],50H   ; 'P'
               JMP     SHORT LOC_163           ; (0F00)

;���� External Entry into Subroutine ��������������������������������������

SUB_40:
               PUSH    DI
               MOV     CX,0FFFFH
               XOR     AL,AL                   ; Zero register
               REPNE   SCASB                   ; Rept zf=0+cx>0 Scan es:[di] for al
               NOT     CX
               DEC     CX
               POP     DI
               RETN

;���� External Entry into Subroutine ��������������������������������������

SUB_41:
               MOV     [DI],AL
               INC     DI
               DEC     BYTE PTR [BP-53H]
               JLE     LOC_RET_162             ; Jump if < or =

;���� External Entry into Subroutine ��������������������������������������

SUB_42:
               PUSH    BX
               PUSH    CX
               PUSH    DX
               PUSH    ES
               LEA     AX,[BP-52H]             ; Load effective addr
               SUB     DI,AX
               LEA     AX,[BP-52H]             ; Load effective addr
               PUSH    AX
               PUSH    DI
               PUSH    WORD PTR [BP+8]
               CALL    WORD PTR [BP+0AH]       ;*(0000)             1 entry
               MOV     BYTE PTR [BP-53H],50H   ; 'P'
               ADD     [BP-56H],DI
               LEA     DI,[BP-52H]             ; Load effective addr
               POP     ES
               POP     DX
               POP     CX
               POP     BX

LOC_RET_162:
               RETN
LOC_163:
               PUSH    ES
               CLD                             ; Clear direction
               LEA     DI,[BP-52H]             ; Load effective addr
               MOV     SS:DATA_127E[BP],DI     ; (817F:FF6C=0)
LOC_164:
               MOV     DI,SS:DATA_127E[BP]     ; (817F:FF6C=0)
LOC_165:
               MOV     SI,[BP+6]
LOC_166:
               LODSB                           ; String [si] to al
               OR      AL,AL                   ; Zero ?
               JZ      LOC_168                 ; Jump if zero
               CMP     AL,25H                  ; '%'
               JE      LOC_169                 ; Jump if equal
LOC_167:
               MOV     [DI],AL
               INC     DI
               DEC     BYTE PTR [BP-53H]
               JG      LOC_166                 ; Jump if >
               CALL    SUB_42                  ; (0EDD)
               JMP     SHORT LOC_166           ; (0F10)
LOC_168:
               JMP     LOC_247                 ; (139E)
LOC_169:
               MOV     SS:DATA_134E[BP],SI     ; (817F:FF78=0)
               LODSB                           ; String [si] to al
               CMP     AL,25H                  ; '%'
               JE      LOC_167                 ; Jump if equal
               MOV     SS:DATA_127E[BP],DI     ; (817F:FF6C=0)
               XOR     CX,CX                   ; Zero register
               MOV     SS:DATA_133E[BP],CX     ; (817F:FF76=0)
               MOV     SS:DATA_126E[BP],CX     ; (817F:FF6A=0)
               MOV     SS:DATA_132E[BP],CL     ; (817F:FF75=0)
               MOV     WORD PTR SS:DATA_130E[BP],0FFFFH        ; (817F:FF70=0)
               MOV     WORD PTR SS:DATA_131E[BP],0FFFFH        ; (817F:FF72=0)
               JMP     SHORT LOC_171           ; (0F53)
LOC_170:
               LODSB                           ; String [si] to al
LOC_171:
               XOR     AH,AH                   ; Zero register
               MOV     DX,AX
               MOV     BX,AX
               SUB     BL,20H                  ; ' '
               CMP     BL,60H                  ; '`'
               JAE     LOC_173                 ; Jump if above or =
               MOV     BL,DATA_111[BX]         ; (8134:03F5=0)
               MOV     AX,BX
               CMP     AX,17H
               JBE     LOC_172                 ; Jump if below or =
               JMP     LOC_245                 ; (138C)
LOC_172:
               MOV     BX,AX
               SHL     BX,1                    ; Shift w/zeros fill
               JMP     WORD PTR CS:DATA_41[BX] ;*(7FD4:0F78=0FC3H)  24 entries
DATA_41         DW      OFFSET LOC_176          ; Data table (indexed access)
DATA_42         DW      OFFSET LOC_174
DATA_43         DW      OFFSET LOC_182
DATA_44         DW      OFFSET LOCLOOP_175
DATA_45         DW      OFFSET LOC_185
DATA_46         DW      OFFSET LOC_186
DATA_47         DW      OFFSET LOC_188
DATA_48         DW      OFFSET LOC_189
DATA_49         DW      OFFSET LOC_190
DATA_50         DW      OFFSET LOC_180
DATA_51         DW      OFFSET LOC_196
DATA_52         DW      OFFSET LOC_191
DATA_53         DW      OFFSET LOC_192
DATA_54         DW      OFFSET LOC_193
DATA_55         DW      OFFSET LOC_205
DATA_56         DW      OFFSET LOC_214
DATA_57         DW      OFFSET LOC_208
DATA_58         DW      OFFSET LOC_209
DATA_59         DW      OFFSET LOC_242
DATA_60         DW      OFFSET LOC_245
DATA_61         DW      OFFSET LOC_245
DATA_62         DW      OFFSET LOC_245
DATA_63         DW      OFFSET LOC_178
DATA_64         DW      OFFSET LOC_179
LOC_173:
               JMP     LOC_245                 ; (138C)

;����� Indexed Entry Point ������������������������������������������������

LOC_174:
               CMP     CH,0
               JA      LOC_173                 ; Jump if above
               OR      WORD PTR SS:DATA_126E[BP],1     ; (817F:FF6A=0)
               JMP     SHORT LOC_170           ; (0F52)

;����� Indexed Entry Point ������������������������������������������������


LOCLOOP_175:
               CMP     CH,0
               JA      LOC_173                 ; Jump if above
               OR      WORD PTR SS:DATA_126E[BP],2     ; (817F:FF6A=0)
               JMP     SHORT LOC_170           ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_176:
               CMP     CH,0
               JA      LOC_173                 ; Jump if above
               CMP     BYTE PTR SS:DATA_132E[BP],2BH   ; (817F:FF75=0) '+'
               JE      LOC_177                 ; Jump if equal
               MOV     SS:DATA_132E[BP],DL     ; (817F:FF75=0)
LOC_177:
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_178:
               AND     WORD PTR SS:DATA_126E[BP],0FFDFH        ; (817F:FF6A=0)
               MOV     CH,5
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_179:
               OR      WORD PTR SS:DATA_126E[BP],20H   ; (817F:FF6A=0)
               MOV     CH,5
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_180:
               CMP     CH,0
               JA      LOC_186                 ; Jump if above
               TEST    WORD PTR SS:DATA_126E[BP],2     ; (817F:FF6A=0)
               JNZ     LOC_183                 ; Jump if not zero
               OR      WORD PTR SS:DATA_126E[BP],8     ; (817F:FF6A=0)
               MOV     CH,1
               JMP     LOC_170                 ; (0F52)
LOC_181:
               JMP     LOC_245                 ; (138C)

;����� Indexed Entry Point ������������������������������������������������

LOC_182:
               MOV     DI,[BP+4]
               MOV     AX,[DI]
               ADD     WORD PTR [BP+4],2
               CMP     CH,2
               JAE     LOC_184                 ; Jump if above or =
               MOV     SS:DATA_130E[BP],AX     ; (817F:FF70=0)
               MOV     CH,3
LOC_183:
               JMP     LOC_170                 ; (0F52)
LOC_184:
               CMP     CH,4
               JNE     LOC_181                 ; Jump if not equal
               MOV     SS:DATA_131E[BP],AX     ; (817F:FF72=0)
               INC     CH
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_185:
               CMP     CH,4
               JAE     LOC_181                 ; Jump if above or =
               MOV     CH,4
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_186:
               XCHG    AX,DX
               SUB     AL,30H                  ; '0'
               CBW                             ; Convrt byte to word
               CMP     CH,2
               JA      LOC_187                 ; Jump if above
               MOV     CH,2
               XCHG    AX,SS:DATA_130E[BP]     ; (817F:FF70=0)
               OR      AX,AX                   ; Zero ?
               JL      LOC_183                 ; Jump if <
               SHL     AX,1                    ; Shift w/zeros fill
               MOV     DX,AX
               SHL     AX,1                    ; Shift w/zeros fill
               SHL     AX,1                    ; Shift w/zeros fill
               ADD     AX,DX
               ADD     SS:DATA_130E[BP],AX     ; (817F:FF70=0)
               JMP     LOC_170                 ; (0F52)
LOC_187:
               CMP     CH,4
               JNE     LOC_181                 ; Jump if not equal
               XCHG    AX,SS:DATA_131E[BP]     ; (817F:FF72=0)
               OR      AX,AX                   ; Zero ?
               JL      LOC_183                 ; Jump if <
               SHL     AX,1                    ; Shift w/zeros fill
               MOV     DX,AX
               SHL     AX,1                    ; Shift w/zeros fill
               SHL     AX,1                    ; Shift w/zeros fill
               ADD     AX,DX
               ADD     SS:DATA_131E[BP],AX     ; (817F:FF72=0)
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_188:
               OR      WORD PTR SS:DATA_126E[BP],10H   ; (817F:FF6A=0)
               MOV     CH,5
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_189:
               OR      WORD PTR SS:DATA_126E[BP],100H  ; (817F:FF6A=0)
               AND     WORD PTR SS:DATA_126E[BP],0FFEFH        ; (817F:FF6A=0)
               MOV     CH,5
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_190:
               AND     WORD PTR SS:DATA_126E[BP],0FFEFH        ; (817F:FF6A=0)
               OR      WORD PTR SS:DATA_126E[BP],80H   ; (817F:FF6A=0)
               MOV     CH,5
               JMP     LOC_170                 ; (0F52)

;����� Indexed Entry Point ������������������������������������������������

LOC_191:
               MOV     BH,8
               JMP     SHORT LOC_194           ; (10AD)

;����� Indexed Entry Point ������������������������������������������������

LOC_192:
               MOV     BH,0AH
               JMP     SHORT LOC_195           ; (10B2)

;����� Indexed Entry Point ������������������������������������������������

LOC_193:
               MOV     BH,10H
               MOV     BL,0E9H
               ADD     BL,DL
LOC_194:
               MOV     BYTE PTR SS:DATA_132E[BP],0     ; (817F:FF75=0)
LOC_195:
               MOV     BYTE PTR SS:DATA_129E[BP],0     ; (817F:FF6F=0)
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     DI,[BP+4]
               MOV     AX,[DI]
               XOR     DX,DX                   ; Zero register
               JMP     SHORT LOC_197           ; (10D5)

;����� Indexed Entry Point ������������������������������������������������

LOC_196:
               MOV     BH,0AH
               MOV     BYTE PTR SS:DATA_129E[BP],1     ; (817F:FF6F=0)
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     DI,[BP+4]
               MOV     AX,[DI]
               CWD                             ; Word to double word
LOC_197:
               INC     DI
               INC     DI
               MOV     [BP+6],SI
               TEST    WORD PTR SS:DATA_126E[BP],10H   ; (817F:FF6A=0)
               JZ      LOC_198                 ; Jump if zero
               MOV     DX,[DI]
               INC     DI
               INC     DI
LOC_198:
               MOV     [BP+4],DI
               LEA     DI,[BP-85H]             ; Load effective addr
               OR      AX,AX                   ; Zero ?
               JNZ     LOC_202                 ; Jump if not zero
               OR      DX,DX                   ; Zero ?
               JNZ     LOC_202                 ; Jump if not zero
               CMP     WORD PTR SS:DATA_131E[BP],0     ; (817F:FF72=0)
               JNE     LOC_203                 ; Jump if not equal
               MOV     DI,SS:DATA_127E[BP]     ; (817F:FF6C=0)
               MOV     CX,SS:DATA_130E[BP]     ; (817F:FF70=0)
               JCXZ    LOC_201                 ; Jump if cx=0
               CMP     CX,0FFFFH
               JE      LOC_201                 ; Jump if equal
               MOV     AX,SS:DATA_126E[BP]     ; (817F:FF6A=0)
               AND     AX,8
               JZ      LOC_199                 ; Jump if zero
               MOV     DL,30H                  ; '0'
               JMP     SHORT LOCLOOP_200       ; (111A)
LOC_199:
               MOV     DL,20H                  ; ' '

LOCLOOP_200:
               MOV     AL,DL
               CALL    SUB_41                  ; (0ED5)
               LOOP    LOCLOOP_200             ; Loop if cx > 0

LOC_201:
               JMP     LOC_165                 ; (0F0D)
LOC_202:
               OR      WORD PTR SS:DATA_126E[BP],4     ; (817F:FF6A=0)
LOC_203:
               PUSH    DX
               PUSH    AX
               PUSH    DI
               MOV     AL,BH
               CBW                             ; Convrt byte to word
               PUSH    AX
               MOV     AL,SS:DATA_129E[BP]     ; (817F:FF6F=0)
               PUSH    AX
               PUSH    BX
               CALL    SUB_30                  ; (0A49)
               PUSH    SS
               POP     ES
               MOV     DX,SS:DATA_131E[BP]     ; (817F:FF72=0)
               OR      DX,DX                   ; Zero ?
               JG      LOC_204                 ; Jump if >
               JMP     LOC_219                 ; (125A)
LOC_204:
               JMP     LOC_220                 ; (126A)

;����� Indexed Entry Point ������������������������������������������������

LOC_205:
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     [BP+6],SI
               LEA     DI,[BP-86H]             ; Load effective addr
               MOV     BX,[BP+4]
               PUSH    WORD PTR [BX]
               INC     BX
               INC     BX
               MOV     [BP+4],BX
               TEST    WORD PTR SS:DATA_126E[BP],20H   ; (817F:FF6A=0)
               JZ      LOC_206                 ; Jump if zero
               PUSH    WORD PTR [BX]
               INC     BX
               INC     BX
               MOV     [BP+4],BX
               PUSH    SS
               POP     ES
               CALL    SUB_38                  ; (0E89)
               MOV     AL,3AH                  ; ':'
               STOSB                           ; Store al to es:[di]
LOC_206:
               PUSH    SS
               POP     ES
               CALL    SUB_38                  ; (0E89)
               MOV     BYTE PTR [DI],0
               MOV     BYTE PTR SS:DATA_129E[BP],0     ; (817F:FF6F=0)
               AND     WORD PTR SS:DATA_126E[BP],0FFFBH        ; (817F:FF6A=0)
               LEA     CX,[BP-86H]             ; Load effective addr
               SUB     DI,CX
               XCHG    CX,DI
               MOV     DX,SS:DATA_131E[BP]     ; (817F:FF72=0)
               CMP     DX,CX
               JG      LOC_207                 ; Jump if >
               MOV     DX,CX
LOC_207:
               JMP     LOC_219                 ; (125A)

;����� Indexed Entry Point ������������������������������������������������

LOC_208:
               MOV     [BP+6],SI
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     DI,[BP+4]
               MOV     AX,[DI]
               ADD     WORD PTR [BP+4],2
               PUSH    SS
               POP     ES
               LEA     DI,[BP-85H]             ; Load effective addr
               XOR     AH,AH                   ; Zero register
               MOV     [DI],AX
               MOV     CX,1
               JMP     LOC_223                 ; (1294)

;����� Indexed Entry Point ������������������������������������������������

LOC_209:
               MOV     [BP+6],SI
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     DI,[BP+4]
               TEST    WORD PTR SS:DATA_126E[BP],20H   ; (817F:FF6A=0)
               JNZ     LOC_210                 ; Jump if not zero
               MOV     DI,[DI]
               ADD     WORD PTR [BP+4],2
               PUSH    DS
               POP     ES
               OR      DI,DI                   ; Zero ?
               JMP     SHORT LOC_211           ; (11E4)
LOC_210:
               LES     DI,DWORD PTR [DI]       ; Load 32 bit ptr
               ADD     WORD PTR [BP+4],4
               MOV     AX,ES
               OR      AX,DI
LOC_211:
               JNZ     LOC_212                 ; Jump if not zero
               PUSH    DS
               POP     ES
               MOV     DI,3DEH
LOC_212:
               CALL    SUB_40                  ; (0EC8)
               CMP     CX,SS:DATA_131E[BP]     ; (817F:FF72=0)
               JBE     LOC_213                 ; Jump if below or =
               MOV     CX,SS:DATA_131E[BP]     ; (817F:FF72=0)
LOC_213:
               JMP     LOC_223                 ; (1294)

;����� Indexed Entry Point ������������������������������������������������

LOC_214:
               MOV     [BP+6],SI
               MOV     SS:DATA_128E[BP],DL     ; (817F:FF6E=0)
               MOV     DI,[BP+4]
               MOV     CX,SS:DATA_131E[BP]     ; (817F:FF72=0)
               OR      CX,CX                   ; Zero ?
               JGE     LOC_215                 ; Jump if > or =
               MOV     CX,6
LOC_215:
               PUSH    DI
               PUSH    CX
               LEA     BX,[BP-85H]             ; Load effective addr
               PUSH    BX
               PUSH    DX
               MOV     AX,1
               AND     AX,SS:DATA_126E[BP]     ; (817F:FF6A=0)
               PUSH    AX
               MOV     AX,SS:DATA_126E[BP]     ; (817F:FF6A=0)
               TEST    AX,80H
               JZ      LOC_216                 ; Jump if zero
               MOV     AX,2
               MOV     WORD PTR [BP-2],4
               JMP     SHORT LOC_218           ; (124A)
LOC_216:
               TEST    AX,100H
               JZ      LOC_217                 ; Jump if zero
               MOV     AX,8
               MOV     WORD PTR [BP-2],0AH
               JMP     SHORT LOC_218           ; (124A)
LOC_217:
               MOV     WORD PTR [BP-2],8
               MOV     AX,6
LOC_218:
               PUSH    AX
               CALL    SUB_37                  ; (0E85)
               MOV     AX,[BP-2]
               ADD     [BP+4],AX
               PUSH    SS
               POP     ES
               LEA     DI,[BP-85H]             ; Load effective addr
LOC_219:
               TEST    WORD PTR SS:DATA_126E[BP],8     ; (817F:FF6A=0)
               JZ      LOC_221                 ; Jump if zero
               MOV     DX,SS:DATA_130E[BP]     ; (817F:FF70=0)
               OR      DX,DX                   ; Zero ?
               JLE     LOC_221                 ; Jump if < or =
LOC_220:
               CALL    SUB_40                  ; (0EC8)
               SUB     DX,CX
               JLE     LOC_221                 ; Jump if < or =
               MOV     SS:DATA_133E[BP],DX     ; (817F:FF76=0)
LOC_221:
               MOV     AL,SS:DATA_132E[BP]     ; (817F:FF75=0)
               OR      AL,AL                   ; Zero ?
               JZ      LOC_222                 ; Jump if zero
               CMP     BYTE PTR ES:[DI],2DH    ; '-'
               JE      LOC_222                 ; Jump if equal
               SUB     WORD PTR SS:DATA_133E[BP],1     ; (817F:FF76=0)
               ADC     WORD PTR SS:DATA_133E[BP],0     ; (817F:FF76=0)
               DEC     DI
               MOV     ES:[DI],AL
LOC_222:
               CALL    SUB_40                  ; (0EC8)
LOC_223:
               MOV     SI,DI
               MOV     DI,SS:DATA_127E[BP]     ; (817F:FF6C=0)
               MOV     BX,SS:DATA_130E[BP]     ; (817F:FF70=0)
               MOV     AX,5
               AND     AX,SS:DATA_126E[BP]     ; (817F:FF6A=0)
               CMP     AX,5
               JNE     LOC_224                 ; Jump if not equal
               MOV     AH,SS:DATA_128E[BP]     ; (817F:FF6E=0)
               CMP     AH,6FH                  ; 'o'
               JNE     LOC_225                 ; Jump if not equal
               CMP     WORD PTR SS:DATA_133E[BP],0     ; (817F:FF76=0)
               JG      LOC_224                 ; Jump if >
               MOV     WORD PTR SS:DATA_133E[BP],1     ; (817F:FF76=0)
LOC_224:
               JMP     SHORT LOC_227           ; (12E1)
               DB      90H
LOC_225:
               CMP     AH,78H                  ; 'x'
               JE      LOC_226                 ; Jump if equal
               CMP     AH,58H                  ; 'X'
               JNE     LOC_227                 ; Jump if not equal
LOC_226:
               OR      WORD PTR SS:DATA_126E[BP],40H   ; (817F:FF6A=0)
               DEC     BX
               DEC     BX
               SUB     WORD PTR SS:DATA_133E[BP],2     ; (817F:FF76=0)
               JGE     LOC_227                 ; Jump if > or =
               MOV     WORD PTR SS:DATA_133E[BP],0     ; (817F:FF76=0)
LOC_227:
               ADD     CX,SS:DATA_133E[BP]     ; (817F:FF76=0)
               TEST    WORD PTR SS:DATA_126E[BP],2     ; (817F:FF6A=0)
               JNZ     LOC_230                 ; Jump if not zero
               JMP     SHORT LOC_229           ; (12F5)
LOC_228:
               MOV     AL,20H                  ; ' '
               CALL    SUB_41                  ; (0ED5)
               DEC     BX
LOC_229:
               CMP     BX,CX
               JG      LOC_228                 ; Jump if >
LOC_230:
               TEST    WORD PTR SS:DATA_126E[BP],40H   ; (817F:FF6A=0)
               JZ      LOC_231                 ; Jump if zero
               MOV     AL,30H                  ; '0'
               CALL    SUB_41                  ; (0ED5)
               MOV     AL,SS:DATA_128E[BP]     ; (817F:FF6E=0)
               CALL    SUB_41                  ; (0ED5)
LOC_231:
               MOV     DX,SS:DATA_133E[BP]     ; (817F:FF76=0)
               OR      DX,DX                   ; Zero ?
               JLE     LOC_236                 ; Jump if < or =
               SUB     CX,DX
               SUB     BX,DX
               MOV     AL,ES:[SI]
               CMP     AL,2DH                  ; '-'
               JE      LOC_232                 ; Jump if equal
               CMP     AL,20H                  ; ' '
               JE      LOC_232                 ; Jump if equal
               CMP     AL,2BH                  ; '+'
               JNE     LOC_233                 ; Jump if not equal
LOC_232:
               LODS    BYTE PTR ES:[SI]        ; String [si] to al
               CALL    SUB_41                  ; (0ED5)
               DEC     CX
               DEC     BX
LOC_233:
               XCHG    CX,DX
               JCXZ    LOC_235                 ; Jump if cx=0

LOCLOOP_234:
               MOV     AL,30H                  ; '0'
               CALL    SUB_41                  ; (0ED5)
               LOOP    LOCLOOP_234             ; Loop if cx > 0

LOC_235:
               XCHG    CX,DX
LOC_236:
               JCXZ    LOC_239                 ; Jump if cx=0
               SUB     BX,CX

LOCLOOP_237:
               LODS    BYTE PTR ES:[SI]        ; String [si] to al
               MOV     [DI],AL
               INC     DI
               DEC     BYTE PTR [BP-53H]
               JG      LOC_238                 ; Jump if >
               CALL    SUB_42                  ; (0EDD)
LOC_238:
               LOOP    LOCLOOP_237             ; Loop if cx > 0

LOC_239:
               OR      BX,BX                   ; Zero ?
               JLE     LOC_241                 ; Jump if < or =
               MOV     CX,BX

LOCLOOP_240:
               MOV     AL,20H                  ; ' '
               CALL    SUB_41                  ; (0ED5)
               LOOP    LOCLOOP_240             ; Loop if cx > 0

LOC_241:
               JMP     LOC_165                 ; (0F0D)
SUB_39          ENDP


;����� Indexed Entry Point ������������������������������������������������

LOC_242:
               MOV     [BP+6],SI
               MOV     DI,[BP+4]
               TEST    WORD PTR SS:DATA_126E[BP],20H   ; (817F:FF6A=0)
               JNZ     LOC_243                 ; Jump if not zero
               MOV     DI,[DI]
               ADD     WORD PTR [BP+4],2
               PUSH    DS
               POP     ES
               JMP     SHORT LOC_244           ; (137D)
LOC_243:
               LES     DI,DWORD PTR [DI]       ; Load 32 bit ptr
               ADD     WORD PTR [BP+4],4
LOC_244:
               MOV     AX,50H
               SUB     AL,[BP-53H]
               ADD     AX,[BP-56H]
               MOV     ES:[DI],AX
               JMP     LOC_164                 ; (0F09)

;����� Indexed Entry Point ������������������������������������������������

LOC_245:
               MOV     SI,SS:DATA_134E[BP]     ; (817F:FF78=0)
               MOV     DI,SS:DATA_127E[BP]     ; (817F:FF6C=0)
               MOV     AL,25H                  ; '%'
LOC_246:
               CALL    SUB_41                  ; (0ED5)
               LODSB                           ; String [si] to al
               OR      AL,AL                   ; Zero ?
               JNZ     LOC_246                 ; Jump if not zero
LOC_247:
               CMP     BYTE PTR [BP-53H],50H   ; 'P'
               JGE     LOC_248                 ; Jump if > or =
               CALL    SUB_42                  ; (0EDD)
LOC_248:
               POP     ES
               MOV     AX,[BP-56H]
               JMP     SHORT LOC_249           ; (13AD)
LOC_249:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN    8

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_43          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     SI,[BP+4]
               CMP     WORD PTR DS:DATA_36E,0  ; (7FC4:04A6=8C40H)
               JE      LOC_250                 ; Jump if equal
               MOV     BX,DS:DATA_36E          ; (7FC4:04A6=8C40H)
               MOV     DI,[BX+6]
               MOV     BX,DS:DATA_36E          ; (7FC4:04A6=8C40H)
               MOV     [BX+6],SI
               MOV     [DI+4],SI
               MOV     [SI+6],DI
               MOV     AX,DS:DATA_36E          ; (7FC4:04A6=8C40H)
               MOV     [SI+4],AX
               JMP     SHORT LOC_251           ; (13EA)
LOC_250:
               MOV     DS:DATA_36E,SI          ; (7FC4:04A6=8C40H)
               MOV     [SI+4],SI
               MOV     [SI+6],SI
LOC_251:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_43          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_44          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,2
               PUSH    SI
               PUSH    DI
               MOV     SI,[BP+6]
               MOV     DI,[BP+4]
               MOV     AX,[SI]
               ADD     [DI],AX
               MOV     AX,DS:DATA_35E          ; (7FC4:04A4=0AC26H)
               CMP     AX,SI
               JNE     LOC_252                 ; Jump if not equal
               MOV     DS:DATA_35E,DI          ; (7FC4:04A4=0AC26H)
               JMP     SHORT LOC_253           ; (141A)
LOC_252:
               MOV     AX,[SI]
               ADD     AX,SI
               MOV     [BP-2],AX
               MOV     BX,[BP-2]
               MOV     [BX+2],DI
LOC_253:
               PUSH    SI
               CALL    SUB_15                  ; (04EB)
               POP     CX
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_44          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_45          PROC    NEAR
               PUSH    SI
               MOV     AX,DS:DATA_37E          ; (7FC4:04A8=87C5H)
               CMP     AX,DS:DATA_35E          ; (7FC4:04A4=0AC26H)
               JNE     LOC_254                 ; Jump if not equal
               PUSH    WORD PTR DS:DATA_37E    ; (7FC4:04A8=87C5H)
               CALL    SUB_22                  ; (0690)
               POP     CX
               XOR     AX,AX                   ; Zero register
               MOV     DS:DATA_35E,AX          ; (7FC4:04A4=0AC26H)
               MOV     DS:DATA_37E,AX          ; (7FC4:04A8=87C5H)
               JMP     SHORT LOC_258           ; (147C)
LOC_254:
               MOV     BX,DS:DATA_35E          ; (7FC4:04A4=0AC26H)
               MOV     SI,[BX+2]
               TEST    WORD PTR [SI],1
               JNZ     LOC_257                 ; Jump if not zero
               PUSH    SI
               CALL    SUB_15                  ; (04EB)
               POP     CX
               CMP     SI,DS:DATA_37E          ; (7FC4:04A8=87C5H)
               JNE     LOC_255                 ; Jump if not equal
               XOR     AX,AX                   ; Zero register
               MOV     DS:DATA_35E,AX          ; (7FC4:04A4=0AC26H)
               MOV     DS:DATA_37E,AX          ; (7FC4:04A8=87C5H)
               JMP     SHORT LOC_256           ; (1469)
LOC_255:
               MOV     AX,[SI+2]
               MOV     DS:DATA_35E,AX          ; (7FC4:04A4=0AC26H)
LOC_256:
               PUSH    SI
               CALL    SUB_22                  ; (0690)
               POP     CX
               JMP     SHORT LOC_258           ; (147C)
LOC_257:
               PUSH    WORD PTR DS:DATA_35E    ; (7FC4:04A4=0AC26H)
               CALL    SUB_22                  ; (0690)
               POP     CX
               MOV     DS:DATA_35E,SI          ; (7FC4:04A4=0AC26H)
LOC_258:
               POP     SI
               RETN
SUB_45          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_46          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               SUB     SP,2
               PUSH    SI
               PUSH    DI
               MOV     SI,[BP+4]
               DEC     WORD PTR [SI]
               MOV     AX,[SI]
               ADD     AX,SI
               MOV     [BP-2],AX
               MOV     DI,[SI+2]
               TEST    WORD PTR [DI],1
               JNZ     LOC_259                 ; Jump if not zero
               CMP     SI,DS:DATA_37E          ; (7FC4:04A8=87C5H)
               JE      LOC_259                 ; Jump if equal
               MOV     AX,[SI]
               ADD     [DI],AX
               MOV     BX,[BP-2]
               MOV     [BX+2],DI
               MOV     SI,DI
               JMP     SHORT LOC_260           ; (14B4)
LOC_259:
               PUSH    SI
               CALL    SUB_43                  ; (13B5)
               POP     CX
LOC_260:
               MOV     BX,[BP-2]
               TEST    WORD PTR [BX],1
               JNZ     LOC_261                 ; Jump if not zero
               PUSH    WORD PTR [BP-2]
               PUSH    SI
               CALL    SUB_44                  ; (13EE)
               POP     CX
               POP     CX
LOC_261:
               POP     DI
               POP     SI
               MOV     SP,BP
               POP     BP
               RETN
SUB_46          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_47          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               MOV     SI,[BP+4]
               OR      SI,SI                   ; Zero ?
               JNZ     LOC_262                 ; Jump if not zero
               JMP     SHORT LOC_264           ; (14F0)
LOC_262:
               MOV     AX,SI
               ADD     AX,0FFFCH
               MOV     SI,AX
               CMP     SI,DS:DATA_35E          ; (7FC4:04A4=0AC26H)
               JNE     LOC_263                 ; Jump if not equal
               CALL    SUB_45                  ; (1425)
               JMP     SHORT LOC_264           ; (14F0)
LOC_263:
               PUSH    SI
               CALL    SUB_46                  ; (147E)
               POP     CX
LOC_264:
               POP     SI
               POP     BP
               RETN
SUB_47          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_48          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AX,0DCBH
               PUSH    AX
               PUSH    WORD PTR [BP+4]
               PUSH    WORD PTR [BP+6]
               LEA     AX,[BP+8]               ; Load effective addr
               PUSH    AX
               CALL    SUB_39                  ; (0EB4)
               JMP     SHORT LOC_265           ; (1509)
LOC_265:
               POP     BP
               RETN
SUB_48          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_49          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AH,1AH
               MOV     DX,[BP+6]
               INT     21H                     ; DOS Services  ah=function 1Ah
                                               ;  set DTA to ds:dx
               MOV     AH,4EH                  ; 'N'
               MOV     CX,[BP+8]
               MOV     DX,[BP+4]
               INT     21H                     ; DOS Services  ah=function 4Eh
                                               ;  find 1st filenam match @ds:dx
               JC      LOC_266                 ; Jump if carry Set
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_267           ; (152B)
LOC_266:
               PUSH    AX
               CALL    SUB_10                  ; (031F)
               JMP     SHORT LOC_267           ; (152B)
LOC_267:
               POP     BP
               RETN
SUB_49          ENDP


;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_50          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     AH,1AH
               MOV     DX,[BP+4]
               INT     21H                     ; DOS Services  ah=function 1Ah
                                               ;  set DTA to ds:dx
               MOV     AH,4FH                  ; 'O'
               INT     21H                     ; DOS Services  ah=function 4Fh
                                               ;  find next filename match
               JC      LOC_268                 ; Jump if carry Set
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_269           ; (1547)
LOC_268:
               PUSH    AX
               CALL    SUB_10                  ; (031F)
               JMP     SHORT LOC_269           ; (1547)
LOC_269:
               POP     BP
               RETN
SUB_50          ENDP

               DB      55H, 8BH, 0ECH, 0FFH, 76H, 6
               DB      0FFH, 76H, 8, 8BH, 5EH, 4
               DB      0FFH, 37H, 0E8H, 52H, 0F6H, 8BH
               DB      0E5H, 8BH, 46H, 6, 8BH, 5EH
               DB      4, 1, 7, 8BH, 1FH, 0C6H
               DB      7, 0, 33H, 0C0H, 0EBH, 0
               DB      5DH, 0C2H, 6, 0

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_51          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               MOV     BX,[BP+4]
               MOV     BYTE PTR [BX],0
               MOV     AX,1549H
               PUSH    AX
               LEA     AX,[BP+4]               ; Load effective addr
               PUSH    AX
               PUSH    WORD PTR [BP+6]
               LEA     AX,[BP+8]               ; Load effective addr
               PUSH    AX
               CALL    SUB_39                  ; (0EB4)
               JMP     SHORT LOC_270           ; (158E)
LOC_270:
               POP     BP
               RETN
SUB_51          ENDP

               DB      55H, 8BH, 0ECH, 8BH, 5EH, 4
               DB      0C6H, 7, 0, 0B8H, 49H, 15H
               DB      50H, 8DH, 46H, 4, 50H, 0FFH
               DB      76H, 6, 0FFH, 76H, 8, 0E8H
               DB      0AH, 0F9H, 0EBH, 0, 5DH, 0C3H
               DB      55H, 8BH, 0ECH, 56H, 57H, 8AH
               DB      46H, 4, 8BH, 4EH, 6, 8BH
               DB      56H, 8, 8BH, 5EH, 0AH, 0CDH
               DB      25H, 5BH, 72H, 4, 33H, 0C0H
               DB      0EBH, 8, 0A3H, 94H, 0, 0B8H
               DB      0FFH, 0FFH, 0EBH, 0
LOC_271:
               POP     DI
               POP     SI
               POP     BP
               RETN

;��������������������������������������������������������������������������
;                              SUBROUTINE
;��������������������������������������������������������������������������

SUB_52          PROC    NEAR
               PUSH    BP
               MOV     BP,SP
               PUSH    SI
               PUSH    DI
               MOV     AL,[BP+4]
               MOV     CX,[BP+6]
               MOV     DX,[BP+8]
               MOV     BX,[BP+0AH]
               INT     26H                     ; Absolute disk write, drive al
               POP     BX
               JC      LOC_272                 ; Jump if carry Set
               XOR     AX,AX                   ; Zero register
               JMP     SHORT LOC_273           ; (15F6)
LOC_272:
               MOV     DATA_78,AX              ; (8134:0094=0)
               MOV     AX,0FFFFH
               JMP     SHORT LOC_273           ; (15F6)
LOC_273:
               POP     DI
               POP     SI
               POP     BP
               RETN
SUB_52          ENDP

               DB      0, 0, 0, 0, 0, 0

SEG_A           ENDS



;-------------------------------------------------------------- SEG_B  ----

SEG_B           SEGMENT PARA PUBLIC
               ASSUME CS:SEG_B , DS:SEG_B , SS:STACK_SEG_C

               DB      0, 0, 0, 0
               DB      'Turbo-C - Copyright (c) 1988 Bor'
               DB      'land Intl.'
               DB      0
               DB      'Null pointer assignment', 0DH, 0AH
               DB      'Divide error', 0DH, 0AH, 'Abnorm'
               DB      'al program termination', 0DH, 0AH
DATA_65         DW      0
DATA_66         DW      0
DATA_67         DW      0
DATA_68         DW      0
DATA_69         DW      0
DATA_70         DW      0
DATA_71         DW      0
DATA_72         DW      0
               DB      0, 0, 0, 0, 0, 0
DATA_73         DD      00000H
DATA_75         DW      0
DATA_76         DW      0
DATA_77         DW      0
DATA_78         DW      0
DATA_79         DW      0
               DB      0, 0, 0, 0, 0AAH, 4
DATA_80         DW      4AAH
               DB      0AAH, 4, 0
               DB      0
DATA_82         DW      0
               DB      0, 0
DATA_83         DW      0
               DB      0, 0
DATA_84         DW      0
               DB      231 DUP (0)
               DB      25H, 73H, 5CH, 25H, 73H, 0
               DB      2AH, 2EH, 2AH, 0, 5CH, 2AH
               DB      2EH, 2AH, 0
               DB      'THIS PROGRAM WAS MADE BY A PERSO'
               DB      'N FAR FROM YOU!!'
               DB      0, 0, 0, 0, 0, 13H
               DB      2, 2, 4, 5, 6, 8
               DB      8, 8, 14H, 15H, 5, 13H
               DB      0FFH, 16H, 5, 11H, 2, 0FFH
               DB      12 DUP (0FFH)
               DB      5, 5, 0FFH
               DB      15 DUP (0FFH)
               DB      0FH, 0FFH, 23H, 2, 0FFH, 0FH
               DB      0FFH, 0FFH, 0FFH, 0FFH, 13H, 0FFH
               DB      0FFH, 2, 2, 5, 0FH, 2
               DB      0FFH, 0FFH, 0FFH, 13H
               DB      8 DUP (0FFH)
               DB      23H, 0FFH, 0FFH, 0FFH, 0FFH, 23H
               DB      0FFH, 13H, 0FFH, 0, 5AH, 3
               DB      5AH, 3, 5AH, 3
DATA_88         DW      0
DATA_89         DW      1000H
               DB      0, 0, 0, 0, 9, 2
               DB      10 DUP (0)
               DB      3EH, 2, 0, 0, 0AH, 2
               DB      1
               DB      9 DUP (0)
               DB      4EH, 2, 0, 0, 2, 2
               DB      2
               DB      9 DUP (0)
               DB      5EH, 2, 0, 0, 43H, 2
               DB      3, 0
               DB      8 DUP (0)
               DB      6EH, 2, 0, 0, 42H, 2
               DB      4, 0
               DB      8 DUP (0)
               DB      7EH, 2, 0, 0, 0, 0
               DB      0FFH, 0
               DB      8 DUP (0)
               DB      8EH, 2, 0, 0, 0, 0
               DB      0FFH, 0
               DB      8 DUP (0)
               DB      9EH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0AEH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0BEH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0CEH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0DEH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0EEH, 2, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      0FEH, 2, 0, 0, 0, 0
               DB      0FFH, 0
               DB      8 DUP (0)
               DB      0EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      1EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      2EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      3EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      4EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      5EH, 3, 0, 0, 0, 0
               DB      0FFH
               DB      9 DUP (0)
               DB      6EH, 3, 1, 20H, 2, 20H
               DB      2, 20H, 4, 0A0H, 2, 0A0H
               DB      30 DUP (0FFH)
               DB      0, 0, 0, 0
               DB      'print scanf : floating point for'
               DB      'mats not linked', 0DH, 0AH
               DB      0, 0DH, 0, 28H, 6EH, 75H
               DB      6CH, 6CH, 29H, 0
               DB      '0123456789ABCDEF'
DATA_111        DB      0                       ; Data table (indexed access)
               DB      14H, 14H, 1, 14H, 15H, 14H
               DB      14H, 14H, 14H, 2, 0, 14H
               DB      3, 4, 14H, 9, 5
               DB      8 DUP (5)
               DB      11 DUP (14H)
               DB      0FH, 17H, 0FH, 8, 14H, 14H
               DB      14H, 7, 14H, 16H
               DB      9 DUP (14H)
               DB      0DH, 14H, 14H
               DB      8 DUP (14H)
               DB      10H, 0AH, 0FH, 0FH, 0FH, 8
               DB      0AH, 14H, 14H, 6, 14H, 12H
               DB      0BH, 0EH, 14H, 14H, 11H, 14H
               DB      0CH, 14H, 14H
               DB      0DH
               DB      7 DUP (14H)
               DB      0
DATA_117        DW      1D2H
               DB      0D2H, 1, 0D9H, 1
;*TA_118        DW      OFFSET SUB_53           ;*(0BCD)
               DB      0CDH, 0BH
               DB      0D2H, 0BH, 0D2H, 0BH, 0D2H, 0BH
               DB      0
               DB      63 DUP (0)
DATA_120        DW      0
DATA_121        DW      0
DATA_122        DW      0
               DB      0, 0, 0, 0, 0, 0

SEG_B           ENDS



;--------------------------------------------------------- STACK_SEG_C  ---

STACK_SEG_C     SEGMENT PARA STACK

               DB      128 DUP (0)

STACK_SEG_C     ENDS



               END     START

Downloaded From P-80 International Information Systems 304-744-2253