; RENEGADE.ASM
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; +	This file is generated by The Interactive Disassembler (IDA)	    +
; +	Copyright (c) 2010 by Hex-Rays SA, <support@hex-rays.com>	    +
; +			 Licensed to: Freeware version			    +
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Input	MD5   :	D0F7C8CB04F76016F634938D6C39D938

; File Name   :	C:\dosprogs\PROGRAMS\RENEGADE.COM
; Format      :	MS-DOS COM-file
; Base Address:	0h Range: 100h-8CAh Loaded length: 7CAh

; NASM version: Erdogan Tan, 14/08/2016

; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[BITS 16]

[ORG 100h]

start:
		mov	di, 0B80h
		mov	bh, 3
		call	sub_1F1
		mov	bh, 4
		call	sub_1F1
		push	cs
		pop	ds
		call	sub_844
		call	sub_6C4
		mov	ax, 13h
		int	10h		; - VIDEO - SET	VIDEO MODE
					; AL = mode
		mov	ax, 4209h
		mov	dx, 3D4h
		out	dx, ax		; Video: CRT cntrlr addr
					;
		mov	dx, 3DAh
		in	al, dx		; Video	status bits:
					; 0: retrace.  1=display is in vert or horiz retrace.
					; 1: 1=light pen is triggered; 0=armed
					; 2: 1=light pen switch	is open; 0=closed
					; 3: 1=vertical	sync pulse is occurring.
		mov	cx, 10h
		xor	al, al
		mov	dx, 3C0h

loc_12D:				; CODE XREF: start+33j
		out	dx, al		; EGA: palette register: select	colors for attribute AL:
					; 0: RED
					; 1: GREEN
					; 2: BLUE
					; 3: blue
					; 4: green
					; 5: red
		jmp	short $+2
		out	dx, al		; EGA: palette register: select	colors for attribute AL:
					; 0: RED
					; 1: GREEN
					; 2: BLUE
					; 3: blue
					; 4: green
					; 5: red
		inc	al
		loop	loc_12D
		mov	al, 20h
		out	dx, al		; EGA: palette register: select	colors for attribute AL:
					; 0: RED
					; 1: GREEN
					; 2: BLUE
					; 3: blue
					; 4: green
					; 5: red
		mov	si, 425h
		mov	dx, 3C8h
		mov	al, 1
		out	dx, al
		inc	dx
		mov	cx, 8

loc_145:				; CODE XREF: start+4Aj
		add	al, 7
		out	dx, al
		out	dx, al
		out	dx, al
		loop	loc_145
		mov	cl, 15h

loc_14E:				; CODE XREF: start+51j
		xor	al, al
		out	dx, al
		loop	loc_14E
		mov	bh, 8

loc_155:				; CODE XREF: start+68j
		lodsw
		mov	bl, [si]
		inc	si
		mov	cl, 10h

loc_15B:				; CODE XREF: start+64j
		push	ax
		out	dx, al
		mov	al, ah
		out	dx, al
		mov	al, bl
		out	dx, al
		pop	ax
		loop	loc_15B
		dec	bh
		jnz	short loc_155
		mov	ax, 0A000h
		mov	es, ax
		mov	di, 96Ch
		mov	cx, 85h

loc_175:				; CODE XREF: start+8Ej
		call	sub_21F
		xor	dx, dx
		mov	bx, 140h
		div	bx
		mov	[di], dx
		call	sub_21F
		and	ax, 7
		inc	ax
		mov	[di+2],	ax
		add	di, 4
		loop	loc_175

loc_190:				; CODE XREF: start+DFj
		mov	dx, 3DAh

loc_193:				; CODE XREF: start+96j
		in	al, dx		; Video	status bits:
					; 0: retrace.  1=display is in vert or horiz retrace.
					; 1: 1=light pen is triggered; 0=armed
					; 2: 1=light pen switch	is open; 0=closed
					; 3: 1=vertical	sync pulse is occurring.
		test	al, 8
		jnz	short loc_193

loc_198:				; CODE XREF: start+9Bj
		in	al, dx		; Video	status bits:
					; 0: retrace.  1=display is in vert or horiz retrace.
					; 1: 1=light pen is triggered; 0=armed
					; 2: 1=light pen switch	is open; 0=closed
					; 3: 1=vertical	sync pulse is occurring.
		test	al, 8
		jz	short loc_198
		mov	si, 96Ch
		xor	di, di
		mov	cx, 85h

loc_1A5:				; CODE XREF: start+CCj
		mov	bx, [si]
		and	byte [es:bx+di], 0F0h
		mov	ax, [si+2]
		sub	bx, ax
		jnb	short loc_1BD
		add	bx, 140h
		call	sub_21F
		and	ax, 7
		inc	ax

loc_1BD:				; CODE XREF: start+B0j
		or	[es:bx+di], al
		mov	[si], bx
		mov	[si+2],	ax
		add	si, 4
		add	di, 140h
		loop	loc_1A5
		call	sub_25C
		call	sub_282
		push	es
		push	cs
		pop	es
		call	sub_6A5
		pop	es
		mov	ah, 1
		int	16h		; KEYBOARD - CHECK BUFFER, DO NOT CLEAR
					; Return: ZF clear if character	in buffer
					; AH = scan code, AL = character
					; ZF set if no character in buffer
		jz	short loc_190
		call	sub_844
		mov	ah, 0
		int	16h		; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
					; Return: AH = scan code, AL = character
		mov	ax, 3
		int	10h		; - VIDEO - SET	VIDEO MODE
					; AL = mode
		mov	ah, 4Ch
		int	21h		; DOS -	2+ - QUIT WITH EXIT CODE (EXIT)

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_1F1:				; CODE XREF: start+5p start+Ap
		mov	ax, 1130h
		int	10h		; - VIDEO - TEXT-MODE CHARACTER	GENERATOR FUNCTIONS (PS, EGA, VGA)
					; AL = 00h, 10h: load user-specified patterns
					; AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
					; AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
					; AL = 03h: set	block specifier
		push	es
		push	cs
		pop	es
		pop	ds
		mov	si, bp
		mov	bh, 80h

loc_1FE:				; CODE XREF: sub_1F1+2Bj
		mov	bl, 8
		mov	dl, 10h

loc_202:				; CODE XREF: sub_1F1+27j
		mov	ah, [si]
		inc	si
		mov	cx, 8

loc_208:				; CODE XREF: sub_1F1+20j
		xor	al, al
		shl	ah, 1
		jnb	short loc_210
		mov	al, dl

loc_210:				; CODE XREF: sub_1F1+1Bj
		stosb
		loop	loc_208
		add	dl, 10h
		dec	bl
		jnz	short loc_202
		dec	bh
		jnz	short loc_1FE
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_21F:				; CODE XREF: start:loc_175p start+81p	...
		rol	word [word_23C], 3
		add	word [word_23C], 7
		mov	ax, [word_23C]
		add	ax, [word_23E]
		add	word [word_23E], 0A0A5h
		ror	word [word_23E], 7
		retn

; ---------------------------------------------------------------------------

word_23C:	dw 5B9Ch		; DATA XREF: sub_21Fw sub_21F+5w ...
word_23E:	dw 35B9h		; DATA XREF: sub_21F+Dr sub_21F+11w ...

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_240:				; CODE XREF: sub_282+13j sub_282+1Aj ...
		push	cx
		push	di
		xor	ah, ah
		shl	ax, 6
		add	ax, 0B80h
		mov	si, ax
		mov	cx, 8

loc_24F:				; CODE XREF: sub_240+17j
		movsw
		movsw
		movsw
		movsw
		add	di, 138h
		loop	loc_24F
		pop	di
		pop	cx
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_25C:				; CODE XREF: start+CEp
		cmp	word [word_337], 0D2h
		ja	short locret_280
		cmp	byte [byte_339], 0
		jz	short locret_280
		dec	byte [byte_339]
		mov	al, 0A0h
		mul	byte [byte_339]
		shl	ax, 1
		mov	di, ax
		mov	cx, 0A0h
		xor	ax, ax
		rep stosw

locret_280:				; CODE XREF: sub_25C+6j sub_25C+Dj
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------

nullsub_1:				; CODE XREF: sub_282+2Aj
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_282:				; CODE XREF: start+D1p
		dec	word [word_337]
		mov	di, [word_333]
		add	di, [word_331]
		mov	al, 0F9h
		cmp	word [word_337], 6
		jz	short sub_240
		cmp	word [word_337], 2
		jz	short sub_240
		mov	al, 0FEh
		cmp	word [word_337], 4
		jz	short sub_240
		cmp	word [word_337], 0
		jnz	short nullsub_1
		mov	al, 20h
		call	sub_240
		mov	bx, [word_331]
		mov	di, [word_333]
		mov	si, [word_335]
		mov	word [word_337], 7
		cmp	byte [si], 2Dh
		jnz	short loc_2D0
		mov	word [word_337], 1

loc_2D0:				; CODE XREF: sub_282+46j sub_282+56j ...
		lodsb
		cmp	al, 20h
		jnz	short loc_2DA
		add	bx, 8
		jmp	short loc_2D0

; ---------------------------------------------------------------------------

loc_2DA:				; CODE XREF: sub_282+51j
		or	al, al
		jnz	short loc_2E7
		mov	bx, 8
		add	di, 0B40h
		jmp	short loc_2D0

; ---------------------------------------------------------------------------

loc_2E7:				; CODE XREF: sub_282+5Aj
		cmp	al, 20h
		ja	short loc_2F3
		mov	ah, 8
		mul	ah
		add	bx, ax
		jmp	short loc_2D0

; ---------------------------------------------------------------------------

loc_2F3:				; CODE XREF: sub_282+67j
		cmp	al, 0FEh
		jnz	short loc_2FC
		mov	si, 33Ah
		jmp	short loc_300

; ---------------------------------------------------------------------------

loc_2FC:				; CODE XREF: sub_282+73j
		cmp	al, 0FFh
		jnz	short loc_31C

loc_300:				; CODE XREF: sub_282+78j
		mov	word [word_337], 12Ch
		mov	word [word_333], 0C80h
		mov	word [word_331], 8
		mov	word [word_335], si
		mov	byte [byte_339], 85h
		retn

; ---------------------------------------------------------------------------

loc_31C:				; CODE XREF: sub_282+7Cj
		mov	[word_335], si
		mov	[word_333], di
		add	di, bx
		call	sub_240
		add	bx, 8
		mov	[word_331], bx
		retn

; ---------------------------------------------------------------------------

word_331:	dw 8			; DATA XREF: sub_282+8r sub_282+31r ...
word_333:	dw 0C80h		; DATA XREF: sub_282+4r sub_282+35r ...
word_335:	dw 33Ah			; DATA XREF: sub_282+39r sub_282+90w ...
word_337:	dw 1			; DATA XREF: sub_25Cr sub_282w ...
byte_339:	db 0			; DATA XREF: sub_25C+8r sub_25C+Fw ...
		db  0Eh
		db  52h	; R
		db  65h	; e
		db  6Eh	; n
		db  65h	; e
		db  47h	; G
		db  61h	; a
		db  64h	; d
		db  65h	; e
		db  20h
		db  42h	; B
		db  42h	; B
		db  53h	; S
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    0
		db    0
		db    7
		db  30h	; 0
		db  2Dh	; -
		db  32h	; 2
		db  32h	; 2
		db  34h	; 4
		db  2Dh	; -
		db  36h	; 6
		db  37h	; 7
		db  36h	; 6
		db  2Dh	; -
		db  34h	; 4
		db  32h	; 2
		db  32h	; 2
		db  30h	; 0
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    0
		db    8
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    0
		db  0Ah
		db  53h	; S
		db  59h	; Y
		db  53h	; S
		db  4Fh	; O
		db  50h	; P
		db  20h
		db  48h	; H
		db  41h	; A
		db  4Bh	; K
		db  41h	; A
		db  4Eh	; N
		db  20h
		db  4Bh	; K
		db  55h	; U
		db  52h	; R
		db  54h	; T
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  0Dh
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    0
		db    0
		db    0
		db  0Ah
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    1
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    2
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db    0
		db    2
		db  20h
		db  20h
		db  20h
		db  20h
		db  20h
		db  4Bh	; K
		db  61h	; a
		db  72h	; r
		db  61h	; a
		db  63h	; c
		db  61h	; a
		db  62h	; b
		db  65h	; e
		db  79h	; y
		db  20h
		db  2Fh	; /
		db  20h
		db  42h	; B
		db  55h	; U
		db  52h	; R
		db  53h	; S
		db  41h	; A
		db  20h
		db  20h
		db  20h
		db  20h
		db 0FEh	; 
		db  14h
		db  14h
		db  3Fh	; ?
		db  19h
		db  19h
		db  3Fh	; ?
		db  23h	; #
		db  23h	; #
		db  3Fh	; ?
		db  28h	; (
		db  28h	; (
		db  3Fh	; ?
		db  3Fh	; ?
		db  16h
		db    0
		db  3Ch	; <
		db  1Bh
		db    0
		db  39h	; 9
		db  20h
		db    0
		db  36h	; 6
		db  25h	; %
		db    0
byte_43D:	db 6			; DATA XREF: sub_6A5+36r sub_6ED+71w
		db  40h	; @
		db    0
		db    0
		db    0
		db 0FAh	; 
		db 0D9h	; 
		db  37h	; 7
		db    4
		db    0
		db    0
		db    0
		db    0
		db    0
		db  21h	; !
		db  22h	; "
		db  0Dh
		db    8
		db 0F0h	; 
		db 0A0h	; 
		db 0F0h	; 
		db 0F8h	; 
		db    0
		db    0
		db  0Ch
		db    2
		db    3
		db 0D1h	; 
		db 0D1h	; 
		db    7
		db    0
		db  83h	; 
		db 0F4h	; 
		db 0F8h	; 
		db 0F8h	; 
		db    0
		db    0
		db    5
		db    0
		db    3
		db 0D1h	; 
		db 0D0h	; 
		db  0Ah
		db    7
		db 0F4h	; 
		db 0F4h	; 
		db  18h
		db  18h
		db    0
		db    0
		db  0Bh
		db    0
		db    3
		db  3Eh	; >
		db    4
		db  4Bh	; K
		db    4
		db  58h	; X
		db    4
		db  65h	; e
		db    4
		db 0FCh	; 
		db  87h	; 
		db  90h	; 
		db 0C7h	; 
		db  20h
		db  90h	; 
		db  87h	; 
		db  90h	; 
		db  87h	; 
		db  90h	; 
		db  87h	; 
		db  95h	; 
		db  87h	; 
		db  95h	; 
		db  87h	; 
		db  95h	; 
		db  87h	; 
		db  95h	; 
		db  87h	; 
		db  7Dh	; }
		db 0FEh	; 
		db 0FCh	; 
		db  87h	; 
		db  90h	; 
		db  21h	; !
		db  7Fh	; 
		db 0A3h	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  90h	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  90h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  9Ah	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  90h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  9Ah	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  93h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  93h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  9Fh	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  9Ch	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  95h	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  9Fh	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  95h	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  95h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db  9Fh	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  95h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db  9Fh	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db  97h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  32h	; 2
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  97h	; 
		db    1
		db  2Eh	; .
		db  7Fh	; 
		db 0A3h	; 
		db    1
		db  26h	; &
		db  7Fh	; 
		db 0A1h	; 
		db    1
		db  2Ah	; *
		db  7Fh	; 
		db  7Dh	; }
		db 0FEh	; 
		db 0FCh	; 
		db  83h	; 
		db 0A8h	; 
		db 0C3h	; 
		db  22h	; "
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B7h	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db  7Dh	; }
		db 0FCh	; 
		db  82h	; 
		db  80h	; 
		db 0BFh	; 
		db  7Dh	; }
		db 0FCh	; 
		db  82h	; 
		db 0A8h	; 
		db 0C3h	; 
		db  22h	; "
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B7h	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db  7Dh	; }
		db 0FEh	; 
		db 0FCh	; 
		db  83h	; 
		db    0
		db  80h	; 
		db  22h	; "
		db 0ADh	; 
		db 0C3h	; 
		db  78h	; x
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B7h	; 
		db  83h	; 
		db 0ABh	; 
		db  81h	; 
		db  7Dh	; }
		db  80h	; 
		db 0BFh	; 
		db  80h	; 
		db  84h	; 
		db  80h	; 
		db  22h	; "
		db  90h	; 
		db 0C7h	; 
		db  77h	; w
		db  9Ch	; 
		db  83h	; 
		db  9Ah	; 
		db  87h	; 
		db  9Fh	; 
		db  87h	; 
		db  93h	; 
		db  83h	; 
		db  90h	; 
		db  87h	; 
		db  9Ch	; 
		db  83h	; 
		db  9Ah	; 
		db  87h	; 
		db  9Fh	; 
		db  85h	; 
		db 0FCh	; 
		db  82h	; 
		db    0
		db  80h	; 
		db  22h	; "
		db 0ADh	; 
		db 0C3h	; 
		db  78h	; x
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0ADh	; 
		db  83h	; 
		db 0A8h	; 
		db  83h	; 
		db 0AFh	; 
		db  83h	; 
		db 0ABh	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db 0B7h	; 
		db  83h	; 
		db 0ABh	; 
		db  81h	; 
		db  7Dh	; }
		db 0FEh	; 
		db  80h	; 
		db 0FFh
		db  40h	; @
		db 0FCh	; 
		db  82h	; 
		db  9Ch	; 
		db 0C7h	; 
		db  22h	; "
		db 0C0h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  83h	; 
		db 0A8h	; 
		db  81h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  85h	; 
		db  9Ch	; 
		db  87h	; 
		db 0C0h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  83h	; 
		db 0A8h	; 
		db  81h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  85h	; 
		db  7Dh	; }
		db  80h	; 
		db 0BFh	; 
		db 0FCh	; 
		db  83h	; 
		db  90h	; 
		db 0C7h	; 
		db  22h	; "
		db  9Ch	; 
		db  83h	; 
		db  9Ah	; 
		db  87h	; 
		db  9Fh	; 
		db  87h	; 
		db  93h	; 
		db  83h	; 
		db  90h	; 
		db  87h	; 
		db  9Ch	; 
		db  83h	; 
		db  9Ah	; 
		db  87h	; 
		db  9Fh	; 
		db  87h	; 
		db  9Ah	; 
		db  83h	; 
		db  7Dh	; }
		db 0FEh	; 
		db  80h	; 
		db 0FFh
		db  40h	; @
		db 0FCh	; 
		db  82h	; 
		db  80h	; 
		db 0C5h	; 
		db  40h	; @
		db  9Ch	; 
		db 0C7h	; 
		db  77h	; w
		db 0C0h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  83h	; 
		db 0A8h	; 
		db  81h	; 
		db 0B4h	; 
		db  89h	; 
		db  9Ch	; 
		db  87h	; 
		db 0C0h	; 
		db  83h	; 
		db 0B4h	; 
		db  83h	; 
		db  9Ch	; 
		db  83h	; 
		db 0A8h	; 
		db  81h	; 
		db 0B4h	; 
		db  83h	; 
		db  7Dh	; }
		db  80h	; 
		db 0BFh	; 
		db 0FCh	; 
		db  82h	; 
		db  80h	; 
		db 0C2h	; 
		db  23h	; #
		db 0CCh	; 
		db  85h	; 
		db 0B4h	; 
		db  83h	; 
		db 0C0h	; 
		db  85h	; 
		db 0CCh	; 
		db  85h	; 
		db 0B4h	; 
		db  83h	; 
		db 0C0h	; 
		db  85h	; 
		db 0CCh	; 
		db  85h	; 
		db 0B4h	; 
		db  83h	; 
		db 0C0h	; 
		db  85h	; 
		db 0CCh	; 
		db  85h	; 
		db 0B4h	; 
		db  83h	; 
		db 0C0h	; 
		db  82h	; 
		db  7Dh	; }
		db 0FEh	; 
		db 0FCh	; 
		db  82h	; 
		db  80h	; 
		db 0BFh	; 
		db  7Dh	; }
		db 0FCh	; 
		db  84h	; 
		db 0CCh	; 
		db 0C1h	; 
		db  23h	; #
		db 0CCh	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0CCh	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0B4h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db 0C0h	; 
		db  81h	; 
		db  7Dh	; }
		db 0FEh	; 
		db  7Ah	; z
		db    4
		db  8Fh	; 
		db    4
		db  12h
		db    5
		db  60h	; `
		db    5
		db 0C8h	; 
		db    5
		db    6
		db    6
		db  49h	; I
		db    6
		db    0
		db    0
		db    0
		db    0

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_6A5	:				; CODE XREF: start+D7p

; FUNCTION CHUNK AT 06D5 SIZE 00000018 BYTES

		movzx	ebx, word [8CAh]
		or	ebx, [8CCh]
		or	ebx, [8D0h]
		or	ebx, [8D4h]
		or	ebx, [8D8h]
		jnz	short loc_6D5
		push	6D5h

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_6C4:				; CODE XREF: start+12p
		mov	cx, 9
		mov	si, 693h
		mov	di, 8CAh
		rep movsw
		mov	byte [byte_8C0], 1
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------
; START	OF FUNCTION CHUNK FOR sub_6A5

loc_6D5:				; CODE XREF: sub_6A5+1Aj
		dec	byte [byte_8C0]
		jnz	short locret_6EC
		mov	al, [byte_43D]
		mov	[byte_8C0], al
		xor	di, di

loc_6E3:				; CODE XREF: sub_6A5+45j
		call	sub_6ED
		inc	di
		cmp	di, 9
		jb	short loc_6E3

locret_6EC:				; CODE XREF: sub_6A5+34j sub_6ED+Aj ...
		retn
; END OF FUNCTION CHUNK	FOR sub_6A5

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_6ED:				; CODE XREF: sub_6A5:loc_6E3p
		mov	bx, di
		shl	bx, 1
		mov	si, [bx+8CAh]
		or	si, si
		jz	short locret_6EC
		sub	byte [di+8C1h], 1
		jnb	short locret_6EC
		inc	byte [di+8C1h]

loc_704:				; CODE XREF: sub_6ED+20j sub_6ED+26j ...
		lodsb
		cmp	al, 7Dh
		jnz	short loc_715
		dec	byte [di+8EEh]
		jz	short loc_704
		mov	si, [bx+8DCh]
		jmp	short loc_704

; ---------------------------------------------------------------------------

loc_715:				; CODE XREF: sub_6ED+1Aj
		cmp	al, 0FCh
		jnz	short loc_726
		lodsb
		and	al, 3Fh
		mov	[di+8EEh], al
		mov	[bx+8DCh], si
		jmp	short loc_704

; ---------------------------------------------------------------------------

loc_726:				; CODE XREF: sub_6ED+2Aj
		cmp	al, 0FEh
		jnz	short loc_72E
		xor	si, si
		jmp	short loc_7A9

; ---------------------------------------------------------------------------

loc_72E:				; CODE XREF: sub_6ED+3Bj
		push	ax
		test	al, 80h
		jz	short loc_79A
		lodsb
		test	al, 80h
		jz	short loc_746
		mov	[di+8C1h], al
		and	byte [di+8C1h], 3Fh
		test	al, 40h
		jz	short loc_79A
		lodsb

loc_746:				; CODE XREF: sub_6ED+49j
		imul	bx, di,	0Dh
		add	bx, 8F7h
		mov	dx, di
		mov	dh, [di+8A8h]
		dec	al
		jz	short loc_7B2
		sub	al, 3
		ja	short loc_763
		lodsb
		jnz	short loc_79A
		mov	[byte_43D], al
		jmp	short loc_79A

; ---------------------------------------------------------------------------

loc_763:				; CODE XREF: sub_6ED+6Cj
		dec	al
		jnz	short loc_774
		sub	word [word_8BE], 2

loc_76C:				; CODE XREF: sub_6ED+89j
		sub	word [word_8BE], 6
		lodsb
		jmp	short loc_77E

; ---------------------------------------------------------------------------

loc_774:				; CODE XREF: sub_6ED+78j
		sub	al, 1Bh
		jb	short loc_76C
		cmp	al, 20h
		jb	short loc_7C7
		sub	al, 20h

loc_77E:				; CODE XREF: sub_6ED+85j
		mov	ah, [bx+3]
		or	ah, 3Fh
		sub	ah, al
		mov	[bx+3],	ah
		mov	al, dh
		add	al, 43h
		call	sub_867
		and	byte [word_8BE], 0F0h
		add	byte [word_8BE], 8

loc_79A:				; CODE XREF: sub_6ED+44j sub_6ED+56j ...
		pop	ax
		and	al, 7Fh
		jz	short loc_7A9
		call	sub_82C
		cmp	al, 7Fh
		jz	short loc_7A9
		call	sub_7FD

loc_7A9:				; CODE XREF: sub_6ED+3Fj sub_6ED+B0j ...
		shl	di, 1
		mov	[di+8CAh], si
		shr	di, 1
		retn

; ---------------------------------------------------------------------------

loc_7B2:				; CODE XREF: sub_6ED+68j
		lodsb
		mov	ah, [bx+2]
		or	ah, 3Fh
		sub	ah, al
		mov	[bx+2],	ah
		mov	al, dh
		add	al, 40h
		call	sub_867
		jmp	short loc_79A

; ---------------------------------------------------------------------------

loc_7C7:				; CODE XREF: sub_6ED+8Dj
		call	sub_82C
		push	si
		push	di
		movzx	di, al
		shl	di, 1
		mov	di, [di+472h]
		mov	si, 8B1h
		mov	cx, 0Dh

loc_7DB:				; CODE XREF: sub_6ED+10Aj
		lodsb
		mov	ah, [di]
		cmp	[bx], ah
		jz	short loc_7F5
		mov	[bx], ah
		add	al, dl
		cmp	al, 0A0h
		jb	short loc_7EE
		cmp	al, 0E0h
		jb	short loc_7F2

loc_7EE:				; CODE XREF: sub_6ED+FBj
		add	al, dh
		sub	al, dl

loc_7F2:				; CODE XREF: sub_6ED+FFj
		call	sub_867

loc_7F5:				; CODE XREF: sub_6ED+F3j
		inc	di
		inc	bx
		loop	loc_7DB
		pop	di
		pop	si
		jmp	short loc_79A

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_7FD:				; CODE XREF: sub_6ED+B9p
		dec	al
		xor	ah, ah
		mov	bl, 0Ch
		div	bl
		mov	bx, ax
		shr	bx, 7
		shl	ax, 0Ah
		or	ax, [bx+890h]
		or	ah, 20h
		imul	bx, di,	0Dh
		add	bx, 8F7h
		mov	[bx+8],	ax
		mov	al, 0B0h
		add	ax, di
		call	sub_867
		sub	al, 10h
		mov	ah, [bx+8]
		jmp	short sub_867

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_82C:				; CODE XREF: sub_6ED+B2p
					; sub_6ED:loc_7C7p
		push	ax
		push	di
		mov	al, 0B0h
		add	ax, di
		imul	di, 0Dh
		and	byte [di+900h], 0DFh
		mov	ah, [di+900h]
		call	sub_867
		pop	di
		pop	ax
		retn

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_844:				; CODE XREF: start+Fp start+E1p
		mov	di, 8F7h
		mov	cx, 75h
		mov	al, 0FFh
		rep stosb
		mov	ax, 0FF20h

loc_851:				; CODE XREF: sub_844+12j
		call	sub_867
		inc	al
		jnz	short loc_851
		mov	ax, 2001h
		call	sub_867
		mov	ax, 8
		call	sub_867
		mov	ax, 0C0BDh

; --------------- S U B	R O U T	I N E ---------------------------------------

sub_867:				; CODE XREF: sub_6ED+A0p sub_6ED+D5p ...
		push	ax
		push	dx
		mov	dx, [word_8BE]
		out	dx, al
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		inc	dl
		mov	al, ah
		out	dx, al
		dec	dl
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		in	al, dx
		pop	dx
		pop	ax
		retn

; --------------- DATA ------------------------------------------------------

		db  57h	; W
		db    1
		db  6Bh	; k
		db    1
		db  81h	; 
		db    1
		db  98h	; 
		db    1
		db 0B0h	; 
		db    1
		db 0CAh	; 
		db    1
		db 0E5h	; 
		db    1
		db    2
		db    2
		db  20h
		db    2
		db  41h	; A
		db    2
		db  63h	; c
		db    2
		db  87h	; 
		db    2
		db    0
		db    1
		db    2
		db    8
		db    9
		db  0Ah
		db  10h
		db  11h
		db  12h
		db  20h
		db  23h	; #
		db  40h	; @
		db  43h	; C
		db  60h	; `
		db  63h	; c
		db  80h	; 
		db  83h	; 
		db 0A0h	; 
		db 0B0h	; 
		db 0C0h	; 
		db 0E0h	; 
		db 0E3h	; 
word_8BE:	dw 228h			; DATA XREF: sub_6ED+7Aw
					; sub_6ED:loc_76Cw ...
byte_8C0:	db 1			; DATA XREF: sub_6C4+Bw
					; sub_6A5:loc_6D5w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
_end: