; program       : AntiCicloVir
; programsort   : Viruskiller
; versionsnr.   : 2.3
; genesis date  : 19.08.1994
; author        : Mathias Gutt
;	       	  Kantstr. 16
;		  21335 Lüneburg
;		  Tel.: 04131/49624
;		  Germany
; This program shows a simple form of virus-hunting
; and so I hope, some novices can find some useful
; routines in AntiCicloVir.
; AntiCicloVir is completely Public Domain and that
; means, you can do everything with the program
; and this source, but read the docs !!!
; You can put out some routines from AntiCicloVir, to
; include them into your own program, or you may use
; AntiCicloVir as base for your own viruskiller, but
; it is not allowed, to use the same name !!!
; AntiCicloVir shows the system-vectors to you,
; looks for known viruses in memory, in the bootsectors
; of one disk from drive df0 and checks directories
; and files for viruses ...
; I used the masterseka v1.5 to write this one.
; Please excuse my bad anglian !!!
; I know, that this source is not the best one, but
; if you have some questions, please write me !


Execbase = 4
MEMF_PUBLIC = 1
MEMF_CHIP = 2
MEMF_FAST = 4
MEMF_CLEAR = 65536
MEMF_LARGEST = 131072

Addport = -354
AllocMem = -198
AllocSignal = -330
AutoRequest = -348
Close = -36
CloseDevice = -450
CloseLibrary = -414
CloseWindow = -72
CopyMem = -624
CurrentDir = -126
Delay = -$00C6
DeleteFile = -$0048
DisplayAlert = -90
DoIORoutine = -456
Examine = -102
ExNext = -108
FreeMem = -210
FreeSignal = -336
FindName = -276
FindTask = -294
GetMsg = -372
Lock = -84
Open = -$001E
OpenDeviceRoutine = -444
OpenLibrary = -552
OpenWindow = -204
Read = -42
RemPort = -360
Rename = -78
SetProtection = -186
UnLock = -90
WaitIO = -474
WaitPort = -384
Write = -$0030

Requester: MACRO		;Macro
lea AutoRequestTextPtr(pc),a0	;get RequestText
move.l ?1,(a0)			
lea GadgetTextPtr(pc),a0	;get GadgetText
move.l ?2,(a0)
lea GadgetText2Ptr(pc),a0	;get next GadgetText
move.l ?3,(a0)
move.l #0,a0			
lea AutoRequestText(pc),a1	;get RequestText-structure	
lea GadgetText(pc),a2		;get GadgetText-structure
lea GadgetText2(pc),a3		;get GadgetText2-structure
moveq #0,d0			;no IDCMP-Flag
moveq #0,d1			;no IDMCP-Flag
move.l ?4,d2			;get Width for Request
move.l ?5,d3			;get Height for Request
move.l Intuibase(pc),a6		;get Intuibase
jsr AutoRequest(a6)		;call subroutine
ENDM				;end of macro

Requesterold: MACRO		;Macro
move.l #0,a0
lea ?1,a1			;get RequestText-structure
lea ?2,a2			;get GadgetText-structure
lea ?3,a3			;get Gadget2Text-structure
moveq #0,d0			;no IDCMP-Flag
moveq #0,d1			;no IDCMP-Flag
move.l ?4,d2			;get Width for Requester
move.l ?5,d3			;get Heigth for Requester
move.l Intuibase(pc),a6		;get Intuibase
jsr AutoRequest(a6)		;call subroutine
ENDM				;end of macro


move.l a0,ParamAddress		;get ParamAddress
move.l d0,ParamLength		;get ParamLength

;WBStartup-Head
;This routine tries to find out, if AntiCicloVir was
;called from the Workbench or from the Shell.

move.l ExecBase,a6
suba.l a1,a1
jsr FindTask(a6)
move.l d0,a4
tst.l 172(a4)
bne clicall			;was called from shell

lea 92(a4),a0
jsr WaitPort(a6)
lea 92(a4),a0
jsr GetMsg(a6)
bra WBcall			;was called from WB

clicall:
bsr GetPara
move.l Paramaddress(pc),a0

cmp.b #"-",(a0)+		;look for option-line
bne ScanFiles			;if not go to scanfiles

Option:
cmp.b #"c",(a0)			;look for option c
beq fastcheckset		;if yes, go to fastcheckset
cmp.b #"m",(a0)			;look for option m
beq Clicall2			;if yes, go to Clicall2
fastcheckset:
move.b #$FF,fastcheck		;set fastcheck-flag

Clicall2:
move.b #$FF,StartupFlag		;set StartupFlag

WBcall:
; This one is a little color-cycling, to greet the
; user !

Colors:
add.l #$00070007,d0
cmp.l #$00FF00FF,d0
bge AntiCicloVir
move.w #1,d1

Colorcycling:
move.b $dff005,d2

ColorcyclingLoop:
move.l d0,$dff180
move.l d0,$dff184
cmp.b $dff005,d2

beq.s ColorcyclingLoop
dbra d1,ColorCycling
bra Colors

AntiCicloVir:
bsr OpenDos			;open DosLib
cmp.l #0,d0			;error ?
beq Ende			;Yes, end it !
move.l d0,Dosbase		;No, get DosBase
bsr OpenIntui			;open IntuiLib
cmp.l #0,d0			;error ?
beq CloseDos			;Yes, close DosLib
move.l d0,Intuibase		;No, get Intuibase
cmp.b #$FF,StartupFlag		;was Startup-flag set ?
bne WBStart			;No, go to WBStart
bsr OpenWin			;open DOS-window
cmp.l #0,d0			;error ?
beq CloseDos			;Yes, close DosLib
move.l d0,Handle		;No, get Handle

WBStart:
bsr vectors_table		;show system-vectors
cmp.b #$FF,StartupFlag		;was Startup-flag set ?
bne WBStart2			;No, go to WBStart2
bsr Print			;print my message

WBStart2:
bsr CheckMem			;check memory for viruses
cmp.b #$FF,StartupFlag		;was Startup-flag set ?
bne WBStart3			;No, go to WBStart3
bsr CloseWin			;close DOS-Window

WBStart3:
bsr CloseIntui			;close IntuiLib
bra CloseDos			;close DosLib

ScanFiles:
bsr OpenDos			;open DosLib
cmp.l #0,d0			;error ?
beq Ende			;Yes, and good bye !
move.l d0,Dosbase		;No, get DosBase
bsr OpenIntui			;open IntuiLib
cmp.l #0,d0			;error ?
beq CloseDos			;Yes, end it !
move.l d0,Intuibase		;No, get Intuibase
bsr OpenWin			;open DOS-window
cmp.l #0,d0			;error ?
beq CloseDos			;Yes, close DosLib
move.l d0,Handle		;No, get Handle
bsr Print			;print my message
move.b #$FF,fastcheck		;set fastcheck-flag
bsr CheckMem			;check memory for viruses
move.l ExecBase,a6		;get ExecBase
move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #260,d0			;allocate 260 B
jsr AllocMem(a6)		;connected CHIP-RAM !
tst.l d0			;error ?
beq notenough			;Yes, print notenough
move.l d0,FileInfoBlockMem	;No, get MemPtr
move.l ExecBase,a6		;get ExecBase
move.l #MEMF_CHIP!MEMF_LARGEST,d1;allocate $5000 bytes
move.l #$5000,d0		;connected CHIP-RAM !
jsr AllocMem(a6)
tst.l d0			;error ?
beq notenough			;Yes, print notenough
move.l d0,FileMem		;No, get MemPtr
bsr GetLock			;Go to GetLock
cmp.l #0,d0			;error ?
beq ScanFilesEnd		;Yes, end all !
move.l d0,LockHandle		;No, get Lock
bsr ExamineIt			;examine file
cmp.l #0,d0			;error ?
beq FileTestEnd			;Yes, go to FileTestEnd
move.l FileInfoBlockMem(pc),a0	;No, get FileInfoBlock 
cmp.l #0,4(a0)			;directory ?
ble FileTest			;No, go to filetest

DirectoryTest:			;Yes !
bsr MakeCurrentDir		;branch to MakeCurrentDir
move.l d0,OldLock		;get old Lock
bra Seek2			;branch to Seek2

Seek:
bsr CheckFile			;branch to CheckFile
Seek2:			
bsr ExNextIt			;get next FIB-datas
cmp.l #0,d0			;more datas ?
bne Seek			;Yes, go to Seek
bsr UnLockIt			;No, unlock it
bsr OldCurrentDir		;branch to OldCurrentDir
bra ScanFilesEnd		;end scanfiles

FileTest:
lea Directory(pc),a0		;get Directory
move.l ParamLength,d0		;get ParamLength

PathLoop:
cmp.b #":",(a0)			;look for :
beq GetDirectoryname		;Yes, get directoryname
cmp.b #"/",(a0)+		;look for /
beq GetDirectoryname		;Yes, get directoryname
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne PathLoop			;No, continue loop !
bra FileTest2			;Yes, go to FileTest2

GetDirectoryName:
move.b #$FF,FileFlag		;set FileFlag
lea Directory(pc),a0		;get Directory
move.l ParamLength,d0		;get ParamLegth
add.l d0,a0			;add lentgh to address

DirectoryNameLoop:
cmp.b #":",(a0)			;look for :
beq MakeCurrentPath		;Yes, go to MakeCurrentPath
cmp.b #"/",(a0)			;look for /
beq MakeCurrentPath		;Yes, go to MakeCurrentPath
sub.l #1,a0			;count down
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne DirectoryNameLoop		;No, continue loop !
bra FileTest2			;Yes, go to FileTest2

MakeCurrentPath:
move.b #00,1(a0)		;clear last byte
bsr GetLock			;go to GetLock
cmp.l #0,d0			;error ?
beq FileTestEnd			;Yes, end FileTest
move.l d0,FileLockHandle	;No, get Lock
bsr MakeCurrentFileDir		;branch to MakeCurrentFileDir
move.l d0,OldLock		;get old Lock

FileTest2:
bsr CheckFile			;branch to CheckFile
cmp.b #$FF,FileFlag		;was FileFlag set ?
bne FileTestEnd			;No, end FileTest

bsr UnLockFilePath		;Yes, unlock filepath
bsr OldCurrentDir		;branch to OldCurrentDir

FileTestEnd:
bsr UnLockIt			;unlock file
bra ScanFilesEnd		;end scanfiles

GetPara:
move.l Paramaddress(pc),a0	;get Paramaddress
lea Directory(pc),a1		;get Directory

ParaLoop:
move.b (a0)+,(a1)+		;copy Parameter to Directory
cmp.b #10,(a0)			;Returncode ?
bne ParaLoop			;No, continue loop !

ParaLoopEnde:
move.b #0,(a1)			;Yes, remove returncode
rts				;return from subroutine

OpenDos:
move.l ExecBase,a6		;get ExecBase
lea Dosname(pc),a1		;get LibName
move.l #0,d0			;any version
jsr OpenLibrary(a6)		;call subroutine
rts				;return from subroutine

OpenIntui:
move.l ExecBase,a6		;get ExecBase
lea Intuiname(pc),a1		;get LibName
move.l #0,d0			;any version
jsr OpenLibrary(a6)		;call subroutine
rts				;return from subroutine

OpenWin:
move.l Dosbase(pc),a6		;get DosBase
move.l #DOSWin,d1		;get Window-address
move.l #1006,d2			;new mode
jsr Open(a6)			;call subroutine
rts				;return from subroutine

Print:
move.l #Text,d2			;get Text-Startaddress
move.l #Textende,d3		;get Text-Endaddress
bsr PrintDOSText		;jump to subroutine
rts				;return from subroutine

notenough:
move.l #notenoughText,d2	;get Text-Startaddress
move.l #notenoughTextende,d3	;get Text-Endaddress
bsr PrintDOSText		;jump to subroutine
rts				;return from subroutine

NoMemAlert:
move.l Intuibase(pc),a6		;get Intuibase
move.l #40,d1			;get Alert-Heigth
lea string(pc),a0		;get string-address
jsr DisplayAlert(a6)		;call subroutine
rts				;return from subroutine

CloseWin:
move.l Handle(pc),d1		;get Handle
move.l Dosbase(pc),a6		;get DosBase
jsr Close(a6)			;call subroutine
rts				;return from subroutine

CloseIntui:
move.l ExecBase,a6		;get ExecBase
move.l Intuibase(pc),a1		;get IntuiBase
jsr CloseLibrary(a6)		;call subroutine
rts				;return from subroutine

CloseDos:
move.l ExecBase,a6		;get ExecBase
move.l Dosbase(pc),a1		;get DosBase
jsr CloseLibrary(a6)		;call subroutine
clr.l d0			;clear d0

Ende:
rts				;return from subroutine

GetLock:
move.l Dosbase(pc),a6		;get DosBase
move.l #Directory,d1		;get Directory
move.l #72,d2			;read mode
jsr Lock(a6)			;call subroutine
rts				;return from subroutine

MakeCurrentDir:
move.l Dosbase(pc),a6		;get DosBase
move.l LockHandle(pc),d1	;get Lock
jsr CurrentDir(a6)		;call subroutine
rts				;return from subroutine

MakeCurrentFileDir:
move.l Dosbase(pc),a6		;get DosBase
move.l FileLockHandle(pc),d1	;get Lock
jsr CurrentDir(a6)		;call subroutine
rts				;return from subroutine

ExamineIt:
move.l Dosbase(pc),a6		;get DosBase
move.l LockHandle(pc),d1	;get Lock
move.l FileInfoBlockMem(pc),d2	;get FileInfoBlock-structure
jsr Examine(a6)			;call subroutine
rts				;return from subroutine

ExNextIt:
move.l Dosbase(pc),a6		;get DosBase
move.l LockHandle(pc),d1	;get Lock
move.l FileInfoBlockMem(pc),d2 	;get FileInfoBlock-structure
jsr ExNext(a6)			;call subroutine
rts				;return from subroutine

UnLockIt:
move.l Dosbase(pc),a6		;get DosBase
move.l LockHandle(pc),d1	;get Lock
jsr UnLock(a6)			;call subroutine
rts				;return from subroutine

UnLockFilePath:
move.l Dosbase(pc),a6		;get DosBase
move.l FileLockHandle(pc),d1	;get FileInfoBlock-structure
jsr UnLock(a6)			;call subroutine
rts				;return from subroutine

OldCurrentDir:
move.l Dosbase(pc),a6		;get DosBase
move.l OldLock(pc),d1		;get old lock
jsr CurrentDir(a6)		;call subroutine
rts				;return from subroutine

ScanFilesEnd:
move.l ExecBase,a6		;get ExecBase
move.l #260,d0			;deallocate 260 Bytes
move.l FileInfoBlockMem(pc),a1	;memory from the
jsr FreeMem(a6)			;FileInfoBlock-structure

move.l ExecBase,a6		;get ExecBase
move.l #$5000,d0		;deallocate $5000 Bytes
move.l FileMem(pc),a1		;memory from the
jsr Freemem(a6)			;filebuffer

bsr CloseWin			;close DOS-window
bsr CloseIntui			;close IntuiLib
bra CloseDos			;close DosLib


CheckFile:
move.l #30,d0
lea FileNameText(pc),a0		;get FileNameText-address

ClearFileNameTextLoop:
move.b #$20,(a0)+		;clear all bytes with spaces
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne ClearFileNameTextLoop	;No, continue loop !

move.l FileInfoBlockMem(pc),a0	;get FIB-structure
add.l #8,a0			;get filename
lea FileNameText(pc),a1		;get address of FileNamebuffer
move.l #30,d0

NameLoop:
move.b (a0)+,(a1)+		;write filename to filenamebuffer
cmp.b #00,(a0)			;look for zero
beq NameLoopEnd			;Yes, end the loop !
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne NameLoop			;No, continue the loop !
NameLoopEnd:
move.l #FileNameText,d2		;get FileNamebuffer-Startaddress
move.l #FileNameTextende,d3	;get FileNamebuffer-Endaddress
bsr PrintDOSText		;jump to subroutine

move.l FileInfoBlockMem(pc),a0	;get FIB-structure
cmp.l #0,4(a0)			;Directory ?
ble Sizehex			;No, get filesize

move.l #DirText,d2		;get DirText-Startaddress
move.l #DirTextende,d3		;get DirText-Endaddress
bsr PrintDOSText		;jump to subroutine
bra Protection			;branch Protection

Sizehex:
move.l FileInfoBlockMem(pc),a6	;get FIB-structure
move.l 124(a6),d2		;get Size-address
lea Length(pc),a0		;get Sizebuffer-address
bsr hex				;hex it !

move.l #SizeText,d2		;get SizeText-Startaddress
move.l #SizeTextende,d3		;get SizeText-Endaddress
bsr PrintDOSText		;jump to subroutine

Protection:
move.l PBits(pc),ProtectText	;write Protectionbits to the buffer

lea ProtectText(pc),a0		;get ProtectText-Startaddress
move.l FileInfoBlockMem(pc),a6	;get FIB-structure
move.l #03,d0

ProtectionLoop:
btst d0,116(a6)			;is Protectionbit set ?
bne SetLine			;Yes, write line !
ProtectionLoop2:
cmp.b #0,(a0)+
sub.l #1,d0			;count down
cmp.l #0,d0			;lower than zero ?
bge ProtectionLoop		;No, continue the loop !
bra ShowPBits			;Yes, show Protectionbits

SetLine:
move.b #`-`,(a0)		;write line
bra ProtectionLoop2		;branch back to loop !

ShowPBits:
move.l Dosbase(pc),a6		;get DosBase
move.l Handle(pc),d1		;get Handle
move.l #ProtectText,d2		;get ProtectText-Startaddress
move.l #8,d3			;get Textlength
jsr Write(a6)			;call subroutine

move.l Dosbase(pc),a6		;get DosBase
move.l Handle(pc),d1		;get Handle
move.l FileInfoBlockMem(pc),d2	;get FIB-structure
add.l #144,d2			;get CommentText-address
move.l d2,a0			
TextLoop:
cmp.b #$00,(a0)+		;zerobyte ?
bne TextLoop			;No, continue the loop !
sub.l d2,a0			;Yes, subtract end- from startaddress
move.l a0,d3			;get Textlength
jsr Write(a6)			;call subroutine

move.l Dosbase(pc),a6		;get DosBase
move.l FileInfoBlockMem(pc),d1	;get FIB-structure
add.l #8,d1			;get filename
move.l #1005,d2			;old mode
jsr Open(a6)			;call subroutine
cmp.l #0,d0			;error ?
beq OK2				;Yes, end CheckFile
move.l d0,Dateihandle		;No, get Dateihandle

move.l Dosbase(pc),a6		;get DosBase
move.l Dateihandle(pc),d1	;get Dateihandle
move.l FileMem(pc),d2		;get Filebuffer
move.l #$5000,d3		;read $5000 bytes
jsr Read(a6)			;call subroutine

move.l #53,d0			;get counter
lea FileVirusOffsetlist(pc),a0	;get offsetlist
lea Filevirustestbyteslist(pc),a1;get testbyteslist
lea FilevirusNameList(pc),a3	;get FileVirusNamelist

CompareFileLoop:
move.l (a0)+,d1			;get offset
add.l FileMem(pc),d1		;add filebuffer-address
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;get one longword from filebuffer
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq Filevirus			;Yes, go to Filevirus
cmp.l #0,(a3)+			;count FilevirusNamelist
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne CompareFileLoop		;No, continue the loop !

SpecialVirus:

move.l #4,d0			;get counter
lea SpecialVirusOffsetList(pc),a0; get offsetlist
lea SpecialVirusTestbytesList(pc),a1;get testbyteslist
lea SpecialVirusNameList(pc),a3	;get SpecialVirusNameList
lea SpecialVirusInvisibleNameList(pc),a5

CompareSpecialVirusLoop:
move.l (a0)+,d1			;get offset
add.l FileMem(pc),d1		;add filebufferaddress to offset
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;get one longword from filebuffer 
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq KillSpecialVirus		;Yes, go to KillSpecialVirus
cmp.l #0,(a3)+			;count SpecialVirusNameList
cmp.l #0,(a5)+			;count SpecialVirusInvisibleNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne CompareSpecialVirusLoop	;No, continue the loop !

CheckFile2:
move.l FileMem(pc),a0		;get filebuffer

cmp.l #$60040000,$24(a0)	;RoLe-Virus ?
beq ReturnFile			;Yes, go to ReturnFile

cmp.l #$024D4558,$6F0(a0)	;HQCruncher ?
beq HQFile			;Yes, go to HQFile

cmp.l #"powe",$80(a0)		;PowerPacker ?
beq PowerPackerFile		;Yes, go to PowerPackerFile

cmp.l #"xplo",$54(a0)		;Imploder
beq ImploderFile		;Yes, go to ImploderFile

move.l FileInfoBlockMem(pc),d0	;get FIB-structure
add.l #8,d0			;get filename
move.l d0,a0			
InvisibleLoop:
cmp.b #$A0,(a0)+		;Invisible sign in filename ?
beq InvisibleFile		;Yes, go to InvisibleFile
cmp.b #$00,(a0)			;any more byte ?
bne InvisibleLoop		;Yes, continue the loop !

move.l FileMem(pc),a0		;get filebuffer
cmp.l #$000003F3,(a0)		;executable ?
bne OK				;No, end CheckFile

LinkLoop:
cmp.l #$000003E9,(a0)+		;Hunk-Start ?
bne LinkLoop			;No, continue the loop !

move.l a0,HunkPos		;get Hunk-Startposition
move.l #12,d0			;get counter
lea LinkvirusOffsetList(pc),a0	;get offsetlist
lea LinkvirusTestbytesList(pc),a1;get testbyteslist
lea LinkvirusNameList(pc),a3	;get LinkvirusNameList

CompareLinkLoop:
move.l (a0)+,d1			;get offset
add.l HunkPos(pc),d1		;add Hunkposition to offset
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;get one longword from hunk
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq Linkvirus			;Yes, go to Linkvirus
cmp.l #0,(a3)+			;count LinkvirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne CompareLinkLoop		;No, continue the loop !

CheckFile3:
move.l FileMem(pc),a0		;get filebuffer
cmp.l #$000003F3,(a0)		;executable ?
beq EXECUTABLEFile		;Yes, go to ExecutableFile

OK:
move.l Dosbase(pc),a6		;get DosBase
move.l Dateihandle(pc),d1	;get Dateihandle
jsr Close(a6)			;call subroutine

OK2:
move.l #FileText2,d2		;get FileText-Startaddress
move.l #FileText2ende,d3	;get FileText-Endaddress
bsr PrintDOSText		;jump to subroutine
rts				;return from subroutine

PrintDOSText:
move.l Dosbase(pc),a6		;get DosBase
move.l Handle(pc),d1		;get Handle
sub.l d2,d3			;get Textlength
jsr Write(a6)			;call subroutine
rts				;return from subroutine

FileVirusNameLoop:
move.l #40,d0			;get counter
lea FileVirusName(pc),a0	;get FileVirusNamebuffer

ClearFileVirusNameLoop:
move.b #$00,(a0)+		;clear all bytes
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne ClearFileVirusNameLoop	;No, continue the Loop !

move.l #FileText,d2		;get FileText-Startaddress
move.l #FileTextende,d3		;get FileText-Endaddress
lea FileVirusName(pc),a0	;get FileVirusNamebuffer

FileVirusNameLoopLoop:
move.b (a1)+,(a0)+		;write Virusname to Filevirusbuffer
cmp.b #$00,(a1)			;zero ?
bne FileVirusNameLoopLoop	;No, continue the loop !
bsr PrintDOSText		;jump to subroutine
rts				;return from subroutine

FileVirus:
clr.l (a2)			;clear testbytes in filebuffer
move.l (a3),a1			;get VirusText-Address
bsr FileVirusNameLoop		;go to FileVirusNameLoop

move.l FileInfoBlockMem(pc),d4	;get FIB-structure
add.l #8,d4			;get filename
bsr KillFileVirus		;jump to subroutine
bra OK2				;end CheckFile

ReturnFile:
clr.l $24(a0)			;clear testbytes in filebuffer
lea ReturnoftheLamerExterminatorText(pc),a1
bsr FileVirusNameLoop		;go to FileVirusNameLoop
move.l FileInfoBlockMem(pc),d4	;get FIB-structure
add.l #8,d4			;get filename
bsr KillFileVirus3		;jump to subroutine
bra OK2				;end CheckFile

HQFile:
clr.l $6F0(a0)			;clear testbytes in filebuffer
move.l #HQCruncherText,d2	;get HQCruncherText-StartAddress
move.l #HQCruncherTextende,d3	;get HQCruncherText-Endaddress
bsr PrintDOSText		;jump to subroutine
bra OK				;end CheckFile

PowerPackerFile:
clr.l $80(a0)			;clear testbytes in filebuffer
move.l #PowerPackerText,d2	;get PowerPackerText-Startaddress
move.l #PowerPackerTextende,d3	;get PowerPackerText-Endaddress
bsr PrintDOSText		;jump to subroutine
bra OK				;end CheckFile

ImploderFile:
clr.l $54(a0)			;clear the testbytes in filebuffer
move.l #ImploderText,d2		;get ImploderText-Startaddress
move.l #ImploderTextende,d3	;get ImploderText-Endaddress
bsr PrintDOSText		;jump to subroutine
bra OK				;end CheckFile

EXECUTABLEFile:
move.l #ExecutableText,d2	;get ExecutableText-Startaddress
move.l #ExecutableTextende,d3	;get ExecutableText-Endaddress
bsr PrintDOSText		;jump to subroutine
bra OK				;end CheckFile

InvisibleFile:
move.l #InvisibleFileText,d2	;get InvisibleText-Startaddress
move.l #InvisibleFileTextende,d3;get InvisibleText-Endaddress
bsr PrintDOSText		;jump to subroutine
move.l FileInfoBlockMem(pc),d4	;get FIB-structure
add.l #8,d4			;get filename
bsr KillFileVirus4		;jump to subroutine
bra OK2				;end CheckFile

LinkvirusNameLoop:
move.l #40,d0			;get counter
lea LinkvirusName(pc),a0	;get LinkvirusNamebuffer-address

ClearLinkvirusNameLoop:
move.b #$00,(a0)+		;clear the buffer
sub.l #1,d0			;count down
cmp.l #0,d0			;zero ?
bne ClearLinkvirusNameLoop	;No, continue the loop !

move.l #LinkText,d2		;get LinkText-Startaddress
move.l #LinkTextende,d3		;get LinkText-Endaddress
lea LinkVirusName(pc),a0	;get Linkvirusnamebuffer-address

LinkVirusNameLoopLoop:
move.b (a1)+,(a0)+		;write Virusname to LinkvirusNamebuffer
cmp.b #$00,(a1)			;zero ?
bne LinkVirusNameLoopLoop	;No, continue the loop !
bsr PrintDOSText		;jump to subroutine
rts				;return from subroutine

Linkvirus:
clr.l (a2)			;clear testbytes from filebuffer
move.l (a3),a1			;get VirusText-Address
bsr LinkvirusNameLoop		;jump to LinkvirusLoop
bra OK2				;end CheckFile

CloseVirus:
move.l Dosbase(pc),a6		;get DosBase
move.l Dateihandle(pc),d1	;get Dateihandle
jsr Close(a6)			;call subroutine
rts				;return from subroutine

KillFileVirus:
bsr CloseVirus			;jump to subroutine
KillFileVirus2:			
Requester #KillFileTexten,#Yes,#No,#310,#80
cmp.l #0,d0			;Zero ?
beq KillFileVirusNext		;Yes, do not kill the filevirus

DeleteVirus:
move.l Dosbase(pc),a6		;get DosBase
move.l d4,d1			;get filename
move.l #%00000000,d2		;unprotect
jsr SetProtection(a6)		;call subroutine

move.l Dosbase(pc),a6		;get DosBase
move.l d4,d1			;get filename
jsr DeleteFile(a6)		;call subroutine
KillFileVirusNext:
rts				;return from subroutine

RenameVirus:
move.l Dosbase(pc),a6		;get DosBase
move.l d4,d2			;get new filename
jsr Rename(a6)			;call subroutine
rts				;return from subroutine

KillSpecialVirus:
clr.l (a2)			;clear testbytes in filebuffer
lea SpecialVirusName(pc),a0	;get SpecialVirusNamebuffer-address
move.l #40,d0			;get counter

ClearSpecialVirusNameLoop:
move.b #00,(a0)+		;clear the buffer
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne ClearSpecialVirusNameLoop	;No, continue the loop !

lea SpecialVirusName(pc),a0	;get SpecialVirusNamebuffer-address
move.l (a3),a1			;get Virusname-Address

SpecialVirusNameLoop:
move.b (a1)+,(a0)+		;write VirusName to SpecialVirusNamebuffer
cmp.b #0,(a1)			;Zero ?
bne SpecialVirusNameLoop	;No, continue the loop !

bsr CloseVirus			;jump to subroutine
Requester #KillSpecialVirusText,#Yes,#No,#610,#70
cmp.l #0,d0			;Zero ?
beq KillSpecialVirusNext	;Yes, do not kill the filevirus
move.l FileInfoBlockMem(pc),d4	;get FIB-structure
add.l #8,d4			;get filename
bsr DeleteVirus			;jump to subroutine
KillSpecialVirusNext:	
Requester #SpecialVirusOrigText,#Yes,#No,#610,#70
cmp.l #0,d0			;Zero ?
beq KillSpecialVirusNextNext	;Yes, do not rename the original
move.l (a5),d1			;No, get original-filename-address
move.l FileInfoBlockMem(pc),d4	;get FIB-structure
add.l #8,d4			;get filename
bsr RenameVirus			;jump to subroutine
KillSpecialVirusNextNext:
bra OK2				;end CheckFile

KillFileVirus3:
bsr CloseVirus			;jump to subroutine
Requester #RenameFileTexten,#Yes,#No,#400,#70
cmp.l #0,d0			;Zero ?
beq KillFileVirus3Next		;Yes, do not rename the file

move.l Dosbase(pc),a6		;get DosBase
move.l d4,d1			;get old filename
move.l #RETURN,d2		;get new filename
jsr Rename(a6)			;call subroutine
KillFileVirus3Next:
rts				;return from subroutine

KillFileVirus4:
bsr CloseVirus			;jump to subroutine
Requester #RenameInvisibleFileText,#Yes,#No,#350,#70
cmp.l #0,d0			;Zero ?
beq KillFileVirus4Next

move.l Dosbase(pc),a6		;get DosBase
move.l d4,d1			;get old filename
move.l #CRITICAL,d2		;get new filename
jsr Rename(a6)			;call subroutine
KillFileVirus4Next:
rts				;return from subroutine

vectors_table:
bsr OpenTable			;open table-window
cmp.l #0,d0			;error ?
beq vectorsend			;Yes, end vectros_table
move.l d0,vectorshandle		;No, get handle
bsr vectors			;show vectors
bsr vectorswait			;delay vectors
bra vectorsend			;close vectors_table

OpenTable:
move.l Dosbase(pc),a6		;get ExecBase
move.l #Table,d1		;get DOS-Window-Address
move.l #1006,d2			;mode new
jsr Open(a6)			;call subroutine
rts				;return from subroutine

vectors:
move.l #17,d0			;get counter
lea ExecVectorsList(pc),a3	;get vectorslist
lea ExecVectorsNameList(pc),a4	;get ExecVectorsNameList

ExecVectorsLoop:
move.l (a3)+,d4			;get offset
move.l 4,a6			;get ExecBase
add.l d4,a6			;add offset to ExecBase
move.l (a6),d2			;write ROM-address to d2
move.l (a4)+,a0			;get vectorbuffer
bsr hex				;hex !!!
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne ExecVectorsLoop		;No, continue the loop !
 
bsr FindTrackDisk		;get TrackDiskBase
move.l a1,a6			;write TrackDiskBase to a6
move.l #2,d0			;get counter
lea TrackDiskVectorsList(pc),a3	;get offsetlist
lea TrackDiskVectorsNameList(pc),a4;get TrackDiskVectorsNameList

TrackDiskVectorsLoop:
move.l a6,a1			;get TrackDiskBase
add.l (a3)+,a1			;add offset to TrackDiskBase
move.l (a1),d2			;write ROM-address to d2
move.l (a4)+,a0			;get vectorbuffer
bsr hex				;hex !!!
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne TrackDiskVectorsLoop	;No, continue the loop !

bsr Findkeyboard		;get KeyBoardBase
move.l -$0000001C(a1),d2	;get offset
lea BeginIOVec(pc),a0		;get vectorbuffer
bsr hex				;hex !!!

move.l #4,d0			;get counter
lea DOSVectorsList(pc),a3	;get offsetlist
lea DOSVectorsNameList(pc),a4	;get DOSVectorsNameList

DOSVectorsLoop:
move.l DosBase(pc),a6		;get DosBase
add.l (a3)+,a6			;add offset to DosBase
move.l (a6),d2			;write ROM-address to d2
move.l (a4)+,a0			;get vectorsbuffer
bsr hex				;hex !!!
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne DOSVectorsLoop		;No, continue the loop !

move.l #2,d0			;get counter
lea IntuitionVectorsList(pc),a3	;get offsetlist
lea IntuitionVectorsNameList(pc),a4;get IntuitionVectorsNameList

IntuitionLoop:
move.l Intuibase(pc),a6		;get IntuiBase
add.l (a3)+,a6			;add offset to Intuibase
move.l (a6),d2			;write ROM-address to d2
move.l (a4)+,a0			;get vectorsbuffer
bsr hex				;hex !!!
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne IntuitionLoop		;No, continue the loop !

move.l #Systemvectorstabletext,d2;get Systemvectorstabletext-Startaddress
move.l #Systemvectorstableend,d3;get Systemvectorstable-Endaddress
bsr PrintDOSText2		;jump to subroutine
rts				;return from subroutine
					
hex:				
;this routine converts the ROM-addresses to hexadecimal
;numbers

move.l #8,d1			;get counter

HexaLoop:
rol.l #4,d2			;rotate 4 bits left
move.l d2,d3			;get byte
and.b #$0f,d3			;get nibble
add.b #$30,d3			;get ciphers
cmp.b #$39,d3			;d3 > 9 ?
ble display			;No, diplay hexa-cipher
add.b #7,d3			;Yes, get letter A-F

Display:
move.b d3,(a0)+			;display one byte
sub.l #1,d1			;count down
cmp.l #0,d1			;Zero ?
bne HexaLoop			;No, continue the loop !
rts				;return from subroutine

vectorswait:
move.l Dosbase(pc),a6		;get DosBase
move.l #300,d1			;worth for Delay
jsr Delay(a6)			;call subroutine

CloseTable:
move.l Dosbase(pc),a6		;get DosBase
move.l vectorshandle(pc),d1	;get handle
jsr Close(a6)			;call subroutine
rts				;return from subroutine

PrintDOSText2:
move.l Dosbase(pc),a6		;get DosBase
move.l vectorshandle(pc),d1	;get handle
sub.l d2,d3			;calculate textlength
jsr Write(a6)			;call subroutine
rts				;return from subroutine

vectorsend:
rts				;return from subroutine

CheckMem:
move.l #129,d0
lea AbsoluteMemoryPositionVirusOffsetList(pc),a0
lea AbsoluteMemoryPositionVirusTestbytesList(pc),a1
lea AbsoluteMemoryPositionVirusNameList(pc),a3

CompareAbsMemLoop:
move.l (a0)+,a2			;get offset
move.l (a2),d1			;get longword from offset-position
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq AMIGAMemoryVirus		;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+			;count AbsoluteMemoryPositionVirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne CompareAbsMemLoop		;No, continue the loop !

ColdRelativeMemoryPosition:
move.l #8,d0
lea ColdRelativeMemoryPositionVirusOffsetList(pc),a0
lea ColdRelativeMemoryPositionVirusTestbytesList(pc),a1
lea ColdRelativeMemoryPositionVirusNameList(pc),a3

CompareColdRelativeMemoryPositionLoop:
move.l (a0)+,d1			;get offset
move.l ExecBase,a6		;get ExecBase
move.l 42(a6),d2		;get ColdCapture-Startaddress
add.l d2,d1			;add offset to this Startaddress
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;write longword from memory to d1
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq AMIGAMemoryVirus		;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+			;count ColdRelativeMemoryPositionVirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne CompareColdRelativeMemoryPositionLoop;No, continue the loop !

CoolRelativeMemoryPosition:
move.l #23,d0
lea CoolRelativeMemoryPositionVirusOffsetList(pc),a0
lea CoolRelativeMemoryPositionVirusTestbytesList(pc),a1
lea CoolRelativeMemoryPositionVirusNameList(pc),a3

CompareCoolRelativeMemoryPositionLoop:
move.l (a0)+,d1			;get offset
move.l ExecBase,a6		;get ExecBase
move.l 46(a6),d2		;get CoolCapture-Startaddress
add.l d2,d1			;add offset to this Startaddress
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;write longword from memory to d1
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq AMIGAMemoryVirus		;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+			;count CoolRelativeMemoryPositionVirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne CompareCoolRelativeMemoryPositionLoop;No, continue the loop !

KickTagRelativeMemoryPosition:
move.l #56,d0
lea KickTagRelativeMemoryPositionVirusOffsetList(pc),a0
lea KickTagRelativeMemoryPositionVirusTestbytesList(pc),a1
lea KickTagRelativeMemoryPositionVirusNameList(pc),a3

CompareKickTagRelativeMemoryPositionLoop:
move.l (a0)+,d1			;get offset
move.l ExecBase,a6		;get ExecBase
move.l 550(a6),d2		;get KickTagPtr-Startaddress
add.l d2,d1			;add offset to this Startaddress
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;write longword from memory to d1
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq AMIGAMemoryVirus		;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+			;count KickTagRelativeMemoryPositionVirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne CompareKickTagRelativeMemoryPositionLoop;No, continue the loop !

CheckMemNext:
lea HochofenName(pc),a1		;get HochofenName-Address
bsr Task			;jump to subroutine
cmp.l #0,d0			;Zero ?
bne Hochofen			;No, its the Hochofen-virus

lea ModemCheckerName(pc),a1	;get ModemCheckerName-Address
bsr Task			;jump to subroutine
cmp.l #0,d0			;Zero ?
bne ModemChecker		;No, its the ModemChecker-virus
bra KillMem			;jump to KillMem

Task:
move.l ExecBase,a6		;get ExecBase
jsr FindTask(a6)		;call subroutine
rts				;return from subroutine

KillMem:
move.l ExecBase,a6		;get ExecBase
cmp.l #0,42(a6)			;is ColdCapture at zero ?
bne AskColdCapture		;No, jump to AskColdCapture
cmp.l #0,46(a6)			;is CoolCapture at zero ?
bne AskCoolCapture		;No, jump to AskCoolCapture
cmp.l #0,550(a6)		;is KickTagPtr at zero ?
bne AskKickTagPtr		;No, jump to KickTagPtr

KillMem2:
bra NoAMIGAMemoryVirus		;jump to NoAMIGAMemoryVirus

AskColdCapture:
Requester #AColdText,#Yes,#No,#360,#70
cmp.l #1,d0			;was Yes-Gadget touched ?
beq KillColdCapture		;Yes, KillColdCapture
bra NoAMIGAMemoryVirus		;No, jump to NoAMIGAMemoryVirus

AskCoolCapture:
Requester #ACoolText,#Yes,#No,#360,#70
cmp.l #1,d0			;was Yes-Gadaget touched ?
beq KillCoolCapture		;Yes, KillCoolCapture
bra NoAMIGAMemoryVirus		;No, jump to NoAMIGAMemoryVirus

AskKickTagPtr:
Requester #AKickText,#Yes,#No,#360,#70
cmp.l #1,d0			;was Yes-Gadget touched
beq KillKickTagPtr		;Yes, KillKickTagPtr
bra NoAMIGAMemoryVirus		;No, jump to NoAMIGAMemoryVirus

KillColdCapture:
move.l 4,a6			;get ExecBase
clr.l 42(a6)			;clear ColdCapture
bsr ChkSum			;calculate new ChkSum
rts				;return from subroutine

KillCoolCapture:
move.l 4,a6			;get ExecBase
clr.l 46(a6)			;clear CoolCapture
bsr ChkSum			;calculate new ChkSum
rts				;return from subroutine

ChkSum:
clr.w 82(a6)			;clear old ChkSum
lea 34(a6),a0			;get Versionnumber
clr.l d0			;clear d0
moveq #23,d0			;get counter
clr.w d1			;clear d1
ChkSumLoop:
add.w (a0)+,d1			;add the lower words
				;of the ExecBase-structure
dbf d0,ChkSumLoop		;until d0 is count down

not.w d1			;invert this sum
move.w d1,82(a6)		;get new ChkSum
clr.l d0			;clear d0
rts				;return from subroutine

KillKickMemPtr:
move.l 4,a6			;get ExecBase
move.l 546(a6),a0		;get KickMemPtr
move.l (a0),d0			;get successor
move.l d0,546(a6)		;enter address of successor
				;to KickMemPtr
bsr KillKickCheckSum		;calculate new KickCheckSum
rts				;return from subroutine

KillKickTagPtr:
move.l 4,a6			;get ExecBase
move.l 550(a6),a0		;get KickTagPtr
move.l 4(a0),d0			;get successor
move.l d0,550(a6)		;enter address of successor
				;to KickTagPtr
bsr KillKickCheckSum		;calculate new KickCheckSum
rts				;return from subroutine

KillKickCheckSum:
move.l 4,a6			;get ExecBase
jsr -612(a6)			;call subroutine
move.l d0,554(a6)		;enter new KickCheckSum
				;to KickCheckSum
rts				;return from subroutine

FindTrackDisk:
move.l ExecBase,a6		;get ExecBase
lea $0000015E(a6),a0		;ListPtr
lea TrackName(pc),a1		;Name
jsr FindName(a6)		;call subroutine
move.l d0,a1			;get address of TrackDisk
rts				;return from subroutine

Findkeyboard:
move.l ExecBase,a6		;get ExecBase
lea $0000015E(a6),a0		;ListPtr
lea KeyName(pc),a1		;Name
jsr FindName(a6)		;call subroutine
move.l d0,a1			;get address of Keyboard
rts				;return from subroutine

returntoSystem:
rts				;return from subroutine

NoAMIGAMemoryVirus:

cmp.b #$FF,fastcheck		;was fastcheck-flag set ?
beq returntoSystem		;No, returntoSystem

move.l ExecBase,a6		;get ExecBase
move.l #MEMF_LARGEST,d1		;want connected memory
move.l #$5000,d0		;want $5000 bytes
jsr AllocMem(a6)		;call subroutine

move.l d0,DiskValMem		;get MemPtr
tst.l d0			;error ?
beq NoMemAlert			;Yes, jump to NoMemAlert
clr.b TrackdiskFlag		;clear TrackDiskFlag
bsr BootblockStart		;open TrackDiskDevice
cmp.b #$FF,TrackdiskFlag	;TrackDiskError ?
beq IntuiEnde2			;Yes, go to IntuiEnde2

move.l Intuibase(pc),a6		;get Intuibase
lea NewWindow(pc),a0		;get NewWindow-structure
jsr OpenWindow(a6)		;call subroutine
move.l d0,Winhandle		;get Winhandle
bra IntuiWait3			;jump to IntuiWait3

IntuiWait:
move.l Winhandle(pc),a0		;get Winhandle
move.l ExecBase,a6		;get ExecBase
move.l 86(a0),a0		;get Message
jsr GetMsg(a6)			;call subroutine

IntuiWait3:
move.l Winhandle(pc),a0		;get Winhandle
move.l 86(a0),a0		;get Message
move.l ExecBase,a6		;get ExecBase
jsr WaitPort(a6)		;call subroutine
move.l d0,a1			;get Message
move.l 20(a1),d1		;write Message to d1	
cmp.l #$8000,d1			;Diskinserted ?
beq VirusCheck  		;Yes, go to VirusCheck

IntuiPart2:
cmp.l #$200,d1			;WindowClosed ?
beq IntuiEnde			;Yes, end Intui
bra IntuiWait			;Jump to IntuiWait

IntuiEnde:
move.l Winhandle(pc),a0		;get Winhandle
move.l Intuibase(pc),a6		;get Intuibase
jsr CloseWindow(a6)		;call subroutine
bsr BootblockEnde		;close TrackDiskDevice

IntuiEnde2:
move.l ExecBase,a6		;get ExecBase
move.l DiskValMem(pc),a1	;get MemPtr
move.l #$5000,d0		;deallocate $5000 bytes
jsr FreeMem(a6)			;call subroutine
rts				;return from subroutine

BootblockStart:
move.l ExecBase,a6		;get ExecBase
move.l #MEMF_CHIP!MEMF_LARGEST,d1;get connected CHIP-RAM
move.l #$2048,d0		;want $2048 bytes
jsr AllocMem(a6)		;call subroutine
tst.l d0			;error ?
beq BootblockCheckEnde		;Yes, end BootblockCheck
move.l d0,Sectorbuffer		;No, get Sectorbufferaddress

move.l #0,a1			;my task
bsr Task			;jump to subroutine
move.l d0,AntiCicloTask		;get TaskPtr

move.l ExecBase,a6		;get ExecBase
move.l #-1,d0			;allocate free signal
jsr AllocSignal(a6)		;call subroutine
cmp.l #0,d0			;error ?
ble BootblockCheckEnde		;Yes, end the BootblockCheck
clr.l d7			;No, clear d7
move.l d0,d7			;get Signalbit

move.l ExecBase,a6		;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #1000,d0			;want 1000 bytes
jsr AllocMem(a6)		;call subroutine
tst.l d0			;error ?
beq FreeSignalIt		;Yes, deallocate Signal
move.l d0,MsgPortMem		;No, get MemPtr

move.l ExecBase,a6		;get ExecBase
lea MsgPortStructure(pc),a0	;get MsgPort-structure
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
move.l #34,d0			;get size
jsr CopyMem(a6)			;call subroutine
move.l MsgPortMem(pc),a0	;get MsgPortMemPtr
move.l AntiCicloTask(pc),$10(a0);write TaskPtr into
				;MsgPort-structure
move.b d7,$F(a0)		;write Signalbit into
				;MsgPort-structure

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
jsr AddPort(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0			;need only $100 bytes
jsr AllocMem(a6)		;call subroutine
tst.l d0			;error ?
beq BootblockCheckEnde2		;Yes, end BootblockCheck
move.l d0,TrackdiskIOStdRequestMem;get MemPtr

move.l ExecBase,a6		;get ExecBase
lea TrackdiskIOStdRequest(pc),a0;get TDIOStdReq-structure
move.l TrackdiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.l #100,d0			;get size
jsr CopyMem(a6)			;call subroutine
move.l TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
move.l MsgPortMem(pc),$E(a0)	;enter MsgPort-Address
				;to TDIOStdReq-Structure
move.l Sectorbuffer(pc),$28(a0)	;enter Sectorbuffer-
				;Address to TDIOStd-
				;Req-Structure
move.l ExecBase,a6		;get ExecBase
lea $0000015E(a6),a0		;get DeviceList
lea DriveName(pc),a1		;get DriveName
jsr FindName(a6)		;call subroutine
move.l d0,a0
move.l 8(a0),Unit	

move.l ExecBase,a6		;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0			;need 100 bytes
jsr AllocMem(a6)		;call subroutine
tst.l d0			;error ?
beq BootBlockCheckEnde3		;Yes, end BootBlockCheck
move.l d0,DeviceMem		;get MemPtr

move.l ExecBase,a6		;get ExecBase
lea Device(pc),a0		;get Device-structure
move.l DeviceMem(pc),a1		;get MemPtr
move.l #40,d0			;get size
jsr CopyMem(a6)			;call subroutine

move.l TrackDiskIOStdRequestMem(pc),a0
move.l DeviceMem(pc),$14(a0)	;enter DeviceMem to
				;TrackDiskIOStdReqMem

move.l ExecBase,a6		;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0			;need 100 bytes
jsr AllocMem(a6)		;call subroutine
tst.l d0			;error ?
beq BootblockCheckEnde4		;Yes, end BootBlockCheck
move.l d0,UnitMem		;get MemPtr

move.l ExecBase,a6		;get ExecBase
lea Unit(pc),a0			;get Unit-structure
move.l UnitMem(pc),a1		;get MemPtr
move.l #8,d0			;get size
jsr CopyMem(a6)			;call subroutine

lea TrackDiskIOStdRequestMem(pc),a0
move.l UnitMem(pc),$18(a0)	;enter UnitMem to
				;TrackDiskIOStdReqMem

move.l ExecBase,a6		;get ExecBase
lea TrackName(PC),a0		;get TrackName
move.l #0,d0			;use drive unit 0
move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.l #0,d1			;no flags
jsr OpenDeviceRoutine(a6)	;call subroutine
tst.l d0			;error ?
bne BootblockCheckEnde5		;No, end BootblockCheck
rts				;return from subroutine

ReadBootBlock:
move.l TrackDiskIOStdRequestMem(pc),a1;Get TDIOStdReqMemPtr
move.w #02,28(a1)		;enter read-command to TDIOStdReqMemPtr
move.l #2048,$24(a1)		;enter 2048 bytes to TDIOStdReqMemPtr
bsr BootBlockCheck		;jump to subroutine
move.l TrackDiskIOStdRequestMem(pc),a1;Get TDIOStdReqMemPtr
move.w #09,28(a1)		;turn off motor
move.l #0,$24(a1)		;turn off motor
bsr BootBlockCheck		;jump to subroutine
bsr CheckBootMem		;jump to subroutine
rts				;return from subroutine

BootblockCheck:
move.l ExecBase,a6		;get ExecBase
move.l TrackdiskIOStdRequestMem(pc),a1;get IOStdReqMemPtr
jsr DoIORoutine(a6)		;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l TrackdiskIOStdRequestMem(pc),a1;get IOStdReqMemPtr
jsr WaitIO(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a0	;get MsgPortMemPtr
jsr GetMsg(a6)			;call subroutine
move.l d0,TrackDiskMessage	
rts				;return from subroutine

WriteBootBlock:
move.l ExecBase,a6		;get ExecBase
lea Bootblock(pc),a0		;get Bootblockprg-Address
move.l Sectorbuffer(pc),a1	;get Sectorbuffer
move.l #1024,d0			;get size
jsr CopyMem(a6)			;call subroutine

move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.w #03,28(a1)		;enter write-command
move.l #1024,$24(a1)		;enter 1024 bytes to write
bsr BootBlockCheck		;jump to subroutine

move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.w #04,28(a1)		;enter update-command
bsr BootblockCheck		;jump to subroutine

move.l TrackDiskMessage(pc),a1
cmp.b #0,$1F(a1)		;Disk writeprotected ?
bne DiskWriteProtected		;Yes, DiskWriteProtected
move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.w #09,28(a1)		;turn off motor
move.l #0,$24(a1)		;turn off motor
bsr BootBlockCheck		;jump to subroutine
rts				;return from subroutine

DiskWriteProtected:
clr.b $1F(a1)			;clear error-flag
move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.w #09,28(a1)		;turn off motor
move.l #0,$24(a1)		;turn off motor
bsr BootBlockCheck		;jump to subroutine
Requester #DiskWriteProtectedText,#ContinueText,#ContinueText,#610,#70
rts				;return from subroutine

BootblockEnde:
move.l ExecBase,a6		;get ExecBase
move.l TrackDiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
jsr CloseDevice(a6)		;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
jsr RemPort(a6)			;call subroutine

move.l MsgPortMem(pc),a0	;get MsgPortMemPtr
move.b #$FF,$8(a0)		;remove listtype
move.l #-1,$14(a0)		;remove flag

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
move.l #1000,d0			;get size
jsr FreeMem(a6)			;call subroutine

move.l TrackdiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
move.b #$FF,$8(a0)		;remove listtype
move.l #$FFFFFFFF,$14(a0)	;remove DevicePtr
move.l #$FFFFFFFF,$18(a0)	;remove UnitPtr
move.l ExecBase,a6		;get ExecBase
move.l TrackDiskIOStdRequestMem(pc),a1;get IOStdReqMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l DeviceMem(pc),a1		;get DeviceMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l UnitMem(pc),a1		;get UnitMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l d7,d0			;get Signalbit
jsr FreeSignal(a6)		;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l Sectorbuffer(pc),a1	;get Sectorbuffer
move.l #$2048,d0		;get size
jsr FreeMem(a6)			;call subroutine
rts				;return from subroutine

CheckBootMem:
move.l #185,d0
lea BootblockVirusOffsetlist(pc),a0
lea BootblockVirusTestbytesList(pc),a1
lea BootblockVirusNameList(pc),a3

CompareBootblockLoop:
move.l (a0)+,d1			;get offset
add.l Sectorbuffer(pc),d1	;add offset to Sectorbuffer
move.l d1,a2			;write d1 to a2
move.l (a2),d1			;write longword from sectorbuffer to d1
cmp.l (a1)+,d1			;is this longword = testbytes ?
beq BootblockVirus		;Yes, go to BootBlockVirus
cmp.l #0,(a3)+			;count BootblockVirusNameList
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne CompareBootblockLoop	;No, continue the loop !
rts				;return from subroutine

BootblockVirus:
lea BootblockVirusName(pc),a0	;get BootblockVirusNamebuffer
move.l #40,d0			;get counter

ClearBootblockVirusNameLoop:
move.b #00,(a0)+		;clear the buffer
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne ClearBootblockVirusNameLoop	;No, continue the loop !

lea BootblockVirusName(pc),a0	;get BootblockVirusNamebuffer
move.l (a3),a1			;get VirusText-Address

BootblockVirusNameLoop:
move.b (a1)+,(a0)+		;write VirusName to BootblockVirusNamebuffer
cmp.b #0,(a1)			;Zero ?
bne BootblockVirusNameLoop	;No, continue the loop !

BootRequester:
Requesterold BootReqText,Install,Continuetext2,#610,#70
cmp.l #1,d0			;was Gadget touched ?
beq WriteBootblock		;Yes, WriteBootblock
rts				;return from subroutine

BootblockCheckEnde:
bsr NoMemAlert			;jump to subroutine
move.b #$FF,TrackdiskFlag	;set TrackDiskFlag
rts				;return from subroutine

BootblockCheckEnde5:
move.l ExecBase,a6		;get ExecBase
move.l UnitMem(pc),a1		;get UnitMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine

BootblockCheckEnde4:
move.l ExecBase,a6		;get ExecBase
move.l DeviceMem(pc),a1		;get DeviceMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine

BootblockCheckEnde3:

move.l TrackdiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
move.b #$FF,$8(a0)		;remove listtype
move.l #$FFFFFFFF,$14(a0)	;remove Devicestructure
move.l #$FFFFFFFF,$18(a0)	;remove UnitStructure
move.l ExecBase,a6		;get ExecBase
move.l TrackdiskIOStdRequestMem(pc),a1;get TDIOStdReqMemPtr
move.l #100,d0			;get size
jsr FreeMem(a6)			;call subroutine


BootblockCheckEnde2:

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
jsr RemPort(a6)			;call subroutine

move.l MsgPortMem(pc),a0	;get MsgPortMemPtr
move.b #$FF,$8(a0)		;remove listtype
move.l #-1,$14(a0)		;remove flags

move.l ExecBase,a6		;get ExecBase
move.l MsgPortMem(pc),a1	;get MsgPortMemPtr
move.l #1000,d0			;get size
jsr FreeMem(a6)			;call subroutine

FreeSignalIt:

move.l ExecBase,a6		;get ExecBase
move.l Sectorbuffer(pc),a1	;get Sectorbuffer
move.l #$2048,d0		;get size
jsr FreeMem(a6)			;call subroutine

move.l ExecBase,a6		;get ExecBase
move.l d7,d0			;get Signalbit
jsr FreeSignal(a6)		;call subroutine
bsr NoMemAlert			;jump to subroutine
move.b #$FF,TrackdiskFlag	;set TrackDiskFlag
rts				;return from subroutine

VirusCheck:
move.l DiskValMem(pc),a5	;get DiskValMemPtr
move.l #SADDAM,d4		;get pathname
move.l Dosbase(pc),a6		;get DosBase
move.l #SADDAM,d1		;get filename
move.l #1005,d2			;mode old
jsr Open(a6)			;call subroutine

cmp.l #0,d0			;Error ?
beq VirusCheckEnde		;Yes, go to VirusCheckEnde
move.l d0,DiskValHandle		;No, get DiskValHandle

move.l Dosbase(pc),a6		;get DosBase
move.l DiskValHandle(pc),d1	;get DiskValHandle
move.l a5,d2			;get filebuffer
move.l #1848,d3			;get size
jsr Read(a6)			;call subroutine

move.l Dosbase(pc),a6		;get DosBase
move.l DiskValHandle(pc),d1	;get DiskValHandle
jsr Close(a6)			;call subroutine

cmp.l #"BitM",$00000702(a5)	;SADDAM-Virus ?
beq SADDAMRequest		;Yes !
cmp.l #$60040000,$00000024(a5)	;RoLE-Virus ?
beq ReturnRequest		;Yes !
cmp.l #"trac",$000006C0(a5)	;DiskVal1234-Virus ?
beq DiskVal1234Request		;Yes !

VirusCheckEnde:
bsr ReadBootBlock		;Jump to subroutine
bra IntuiWait			;Go to IntuiWait


SADDAMRequest:
Requester #SADDAMReq,#ContinueText,#ContinueText,#610,#70
bsr KillFileVirus2		;jump to subroutine
bra VirusCheckEnde		;end VirusCheck

ReturnRequest:
Requester #ReturnReq,#ContinueText,#ContinueText,#610,#70
move.l #SADDAM,d4		;get pathname
bsr KillFileVirus3		;jump to subroutine
bra VirusCheckEnde		;end VirusCheck

DiskVal1234Request:
Requester #DiskVal1234Req,#ContinueText,#ContinueText,#610,#70
bsr KillFileVirus2		;jump to subroutine
bra VirusCheckEnde		;end VirusCheck

Hochofen:
lea HochofenText(pc),a0		;get HochofenTextaddress
move.l a0,(a3)			
bra AMIGAMemoryVirus		;jump to subroutine

ModemChecker:
lea ModemCheckerText(pc),a0	;get ModemCheckerTextaddress
move.l a0,(a3)
bra AMIGAMemoryVirus		;jump to subroutine


AMIGAMemoryVirus:
move.l Intuibase(pc),a6		;get Intuibase
lea NewWindow(pc),a0		;get NewWindow-structure
jsr OpenWindow(a6)		;call subroutine
move.l d0,Winhandle		;get Winhandle

move.l #40,d0			;get counter
lea VirusName(pc),a0		;get VirusNamebuffer

ClearVirusNameLoop:
move.b #00,(a0)+		;clear the buffer
sub.l #1,d0			;count down
cmp.l #0,d0			;Zero ?
bne ClearVirusNameLoop		;No, continue the loop !

lea VirusName(pc),a0		;get VirusNameBuffer
move.l (a3),a1			;get VirusNameText-Address

AMIGAMemoryVirusNameLoop:
move.b (a1)+,(a0)+		;write VirusNameText to
				;VirusNameBuffer
cmp.b #0,(a1)			;Zero ?
bne AMIGAMemoryVirusNameLoop	;No, continue the loop !

AMIGAMemoryVirusRequest:
Requester #MemoryText,#ContinueText,#ContinueText,#610,#70

move.l Winhandle(pc),a0		;get Winhandle
move.l Intuibase(pc),a6		;get Intuibase
jsr CloseWindow(a6)		;call subroutine
bra KillMem			;jump to subroutine

Even
NewWindow:
dc.w 100
dc.w 0
dc.w 400
dc.w 10
dc.b 0
dc.b 1
dc.l $200!$8000
dc.l $1000!1!2!4!8
dc.l 0
dc.l 0
dc.l Windowtitle
dc.l 0
dc.l 0
dc.w 300
dc.w 10
dc.w 300
dc.w 10
dc.w 1

even
AutoRequestText:
dc.b 0,2
dc.b 0
even
dc.w 20,20
dc.l 0
AutoRequestTextPtr:
dc.l 0
dc.l 0


even
AColdText:
dc.b `Shall I restore ColdCapture ?`,0

even
ACoolText:
dc.b `Shall I restore CoolCapture ?`,0

even
AKickText:
dc.b `Shall I restore KickTagPtr ?`,0

even
KillFileTexten:
dc.b `Shall I delete this File ?`,0

even
KillSpecialVirusText:
dc.b `Shall I delete the filevirus `
SpecialVirusName: blk.b 40,0

even
SpecialVirusOrigText:
dc.b `Shall I rename the original file ?`,0

even
RenameFileTexten:
dc.b `Shall I rename the Disk-Validator ?`,0

even
SADDAMReq:
dc.b `Disk-Validator: SADDAM Virus !!!`,0

even
ReturnReq:
dc.b `Disk-Validator: Return of the Lamer Exterminator virus !!!`,0

even
DiskVal1234Req:
dc.b `Disk-Validator: DiskVal1234 virus !!!`,0

even
RenameInvisibleFileText:
dc.b `Shall I rename this file ?`,0

even
DiskWriteProtectedText:
dc.b `Your Disk in Drive df0: is write-protected !!!`,0

even
GadgetText:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
GadgetTextPtr:
dc.l 0
dc.l 0

even
GadgetText2:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
GadgetText2Ptr:
dc.l 0
dc.l 0

even
Yes:
dc.b `Yes !`,0

even
No:
dc.b `No !`,0

even
ContinueText:
dc.b ` OK `,0

even
BootReqText:
dc.b 0,2
dc.b 0
even
dc.w 20,20
dc.l 0
dc.l BootText
dc.l 0

even
ContinueText2:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
dc.l ContinueText
dc.l 0
dc.l 0

even
Install:
dc.b 0,2
dc.b 0
even
dc.w 12,4
dc.l 0
dc.l InstallText
dc.l 0

InstallText:
dc.b ` Install `,0
 
even
MsgPortStructure:		
dc.l 0				
dc.l 0				
dc.b 4				
dc.b 0				
dc.l PortName                          
dc.b 0				
dc.b 0           		
dc.l AntiCicloTask		
dc.l 0
dc.l 0
dc.l 0
dc.b 5
dc.b 0

even
TrackdiskIOStdRequest:		;IOStdRequest-structure
dc.l 0				;Ptr of successor
dc.l 0				;Ptr of predecessor
dc.b 6				;messagetype
dc.b 0				;priority
dc.l MessageName                ;Ptr of Messagename
dc.l MsgPortMem			;Ptr of MsgPort
dc.w 56				;messagelength
dc.l Device          		;Ptr to Device-structure
dc.l Unit                  	;Ptr to Unit-structure
dc.w 2				;Command
dc.b 0				;Flags
dc.b 0				;Errorbyte
dc.l 0				;Actualbyte
dc.l 2048			;Number of Bytes
dc.l SectorBuffer     		;Buffer-address
dc.l 0				;Sector-Nr.
dc.l 0				;DiskChangeCount
dc.l 0				;SecLabelBuffer

even
Device:
dc.l 0
dc.l 0
dc.b 3
dc.b 0
dc.l TrackName
dc.b 0
dc.b 0
dc.w 0
dc.w 0
dc.w 0
dc.w 0
dc.l TrackName
dc.l 0
dc.w 0

even
Unit:
dc.l 0
dc.b 0
dc.b 0
dc.w 0

AntiCicloTask:
dc.l 0

even
string:
dc.b 0,200,10,`      NOT ENOUGH MEMORY !`,0
dc.b 0,0,0,0

even
Dosname:
dc.b `dos.library`,0

even
Intuiname:
dc.b `intuition.library`,0

even
TrackName:
dc.b `trackdisk.device`,0

even
KeyName:
dc.b `keyboard.device`,0

even
DriveName:
dc.b `DF0:`,0

even
WindowTitle:
dc.b `AntiCicloVir V2.3 by Matthias Gutt`,0

even
Dosbase:
dc.l 0

Intuibase:
dc.l 0

Winhandle:
dc.l 0

Handle:
dc.l 0

DateiHandle:
dc.l 0

vectorshandle:
dc.l 0

LockHandle:
dc.l 0

FileLockHandle:
dc.l 0

DiskValHandle:
dc.l 0

OldLock:
dc.l 0

FileInfoBlockMem:
dc.l 0

FileMem:
dc.l 0

HunkPos:
dc.l 0

Paramaddress:
dc.l 0

ParamLength:
dc.l 0

MsgPortMem:
dc.l 0

TrackdiskIOStdRequestMem:
dc.l 0

DeviceMem:
dc.l 0

UnitMem:
dc.l 0

TrackDiskMessage:
dc.l 0

Sectorbuffer:
dc.l 0

Directory:
blk.b 500,0

Sign:
dc.b 0

fastcheck:
dc.b 0

StartupFlag:
dc.b 0

TrackdiskFlag:
dc.b 0

FileFlag:
dc.b 0

even
MemoryPos:
dc.l 0

DiskValMem:
dc.l 0

MessageName:
dc.b `AntiCicloVir.message`,0

even
PortName:
dc.b `AntiCicloVir.port`,0

even
Hochofenname:
dc.b `Greetings to Hochofen`,0

even
ModemCheckerName:
dc.b `Diskdriver.proc`,0

even
SADDAM:
dc.b `:l/Disk-Validator`,0

even
RETURN:
dc.b `:L/LAMER-Virus`,0

even
CRITICAL:
dc.b `:CRITICAL-Virus`,0

even
SpecialVirusNameList:
dc.l BGS9Text
dc.l BGS9IIText
dc.l TerroristsText
dc.l NaSTText

even
SpecialVirusTestbytesList:
dc.l `TTV1`
dc.l `TTV1`
dc.l `TTV1`
dc.l `NaST`

even
SpecialVirusOffsetlist:
dc.l $00000A04
dc.l $00000A04
dc.l $00000620
dc.l $0000007A

even
SpecialVirusInvisibleNameList:
dc.l BGS9Invisible
dc.l BGS9Invisible2
dc.l TerroristsInvisible
dc.l NaSTInvisible

even
BGS9Invisible:
dc.b `:DEVS/           `,0

even
BGS9Invisible2:
dc.b `:DEVS/ é         `,0

even
TerroristsInvisible:
dc.b `:           `,0

even
NaSTInvisible:
dc.b `:c/              `,0

even
DOSWin:
dc.b `*`,0

even
Table:
dc.b `CON:0/0/600/200/System-Vectors-Table:`,0

even
ExecVectorsNameList:
dc.l ColdCapture
dc.l CoolCapture
dc.l WarmCapture
dc.l CHKSumVec
dc.l KickCheckSum
dc.l DoIO
dc.l KickMemPtr
dc.l KickTagPtr
dc.l RasterBeamVec
dc.l OldOpenLibrary
dc.l OpenLib
dc.l SKD
dc.l AlertVec
dc.l AllocMemVec
dc.l FreeMemVec
dc.l PutMsgVec
dc.l OpenDeviceVec

even
ExecVectorsList:
dc.l 42
dc.l 46
dc.l 50
dc.l 82
dc.l 554
dc.l -454
dc.l 546
dc.l 550
dc.l $90
dc.l -406
dc.l -550
dc.l -610
dc.l -106
dc.l -196
dc.l -208
dc.l -364
dc.l -442

even
TrackDiskVectorsNameList:
dc.l BeginIO
dc.l CloseVec

even
TrackDiskVectorsList:
dc.l -$0000001C
dc.l -$0000000A

even
DOSVectorsNameList:
dc.l OP
dc.l LoadSeg
dc.l WriteVec
dc.l LockVec

even
DOSVectorsList:
dc.l -28
dc.l -148
dc.l -46
dc.l -82

even
IntuitionVectorsNameList:
dc.l WindowOpen
dc.l DisplayAlertVec

even
IntuitionVectorsList:
dc.l -202
dc.l -88
 
even
Systemvectorstabletext:
dc.b `     ExecBase:`,10
dc.b `     ColdCapture:    $`
ColdCapture: dc.b `00000000`,0
dc.b ` CoolCapture:   $`
CoolCapture: dc.b `00000000`,10
dc.b `     WarmCapture:    $`
WarmCapture: dc.b `00000000`,0
dc.b ` ChkSum:        $`
CHKSumVec: dc.b `00000000`,10
dc.b `     KickMemPtr:     $`
KickMemPtr: dc.b `00000000`,0
dc.b ` KickTagPtr:    $`
KickTagPtr: dc.b `00000000`,10
dc.b `     KickCheckSum:   $`
KickCheckSum: dc.b `00000000`,0
dc.b ` RasterBeam Int.$`
RasterBeamVec: dc.b `00000000`,10
dc.b `     exec.library:`,10
dc.b `     Alert:          $`
AlertVec: dc.b `00000000`,0
dc.b ` AllocMem:      $`
AllocMemVec: dc.b `00000000`,10
dc.b `     FreeMem:        $`
FreeMemVec: dc.b `00000000`,0
dc.b ` PutMsg:        $`
PutMsgVec: dc.b `00000000`,10
dc.b `     OldOpenLibrary: $`
OldOpenLibrary: dc.b `00000000`,0
dc.b ` OpenDevice:    $`
OpenDeviceVec: dc.b `00000000`,10
dc.b `     DoIO:           $`
DoIO: dc.b `00000000`,0
dc.b ` OpenLibrary:   $`
OpenLib: dc.b `00000000`,10
dc.b `     SumKickData:    $`
SKD: dc.b `00000000`,10
dc.b `     dos.library:`,10
dc.b `     Open:           $`
OP: dc.b `00000000`,0
dc.b ` Write:         $`
WriteVec: dc.b `00000000`,10
dc.b `     Lock:           $`
LockVec: dc.b `00000000`,0
dc.b ` LoadSeg:       $`
LoadSeg: dc.b `00000000`,10
dc.b `     intuition.library:`,10
dc.b `     DisplayAlert:   $`
DisplayAlertVec: dc.b `00000000`,0
dc.b ` OpenWindow:    $`
WindowOpen: dc.b `00000000`,10
dc.b `     trackdisk.device:`,10
dc.b `     BeginIO:        $`
BeginIO: dc.b `00000000`,0
dc.b ` Close:         $`
CloseVec: dc.b `00000000`,10
dc.b `     keyboard.device:`,10
dc.b `     BeginIO:        $`
BeginIOVec: dc.b `00000000`,10
Systemvectorstableend:

even
FileNameText: dc.b `                              `,0
FileNameTextende:

even
SizeText:
dc.b ` : $`
Length: dc.b `00000000  `,0
SizeTextende:

even
ExecutableText:
dc.b ` :EXECUTABLE   `,0
ExecutableTextende:

even
PBits:
dc.b `rwed`,0

even
ProtectText:
dc.b `       `,0
ProtectTextende:

even
Text:
dc.b ` `,10
dc.b $9b,`1;31m`
dc.b `               AntiCicloVir `
dc.b $9b,`3;31m`
dc.b `- Virus-Statikum Version 2.3`,10
dc.b `       (C) 1992-1994 by Matthias Gutt, Kantstr.16 , 21335 Lüneburg , Germany`,10
dc.b ` `,10
dc.b $9b,`0;33m`
dc.b `KNOWN VIRUSES COUNT:`,10
dc.b `Bootblock-Viruses     : 188`,10
dc.b `Linkviruses           :  15`,10
dc.b `Fileviruses           :  28`,10
dc.b `Disk-Validator-Viruses:   7`,10
dc.b `Trojans               :  11`,10
dc.b `Bombs                 :  17`,10
dc.b `---------------------------`,10
dc.b `ENEMIES (TOTAL)       : 266`,10

dc.b `Usage: AntiCicloVir [pathname]/[-c]/[-m]`,10
dc.b `OPTIONS TABLE:`,10
dc.b `-c = fast memorycheck`,10
dc.b `-m = memorycheck + installing background task for looking`,10
dc.b `     on every inserted disk for Bootblock- + Disk-Validator-viruses`,10
dc.b ` `,10
dc.b $9b,`0;31m`
Textende:

even
FileText2:
dc.b `: OK`,10
FileText2ende:

even
DirText:
dc.b `      <DIR>   `,0
DirTextende:

even
HQCruncherText:
dc.b ` uses H&Q-Cruncher !`,0
HQCruncherTextende:

even
PowerPackerText:
dc.b ` uses powerpacker-Cruncher !`,0
PowerPackerTextende:

even
ImploderText:
dc.b ` uses implode.library !`,0
ImploderTextende:

even
InvisibleFileText:
dc.b $9b,`1;33m`
dc.b ` : ... filename contains invisible signs ! Possibility: FILEVIRUS !!!`,10
dc.b $9b,`0;31m`
InvisibleFileTextende:

even
FileText:
dc.b $9b,`1;33m`
dc.b ` : ... contains `
FileVirusname: blk.b 40,0
dc.b ` Filevirus !!!`,10
dc.b $9b,`0;31m`
FileTextende:

even
LinkText:
dc.b $9b,`1;33m`
dc.b ` : ... includes `
LinkVirusname: blk.b 40,0
dc.b ` Linkvirus !!!`,10
dc.b $9b,`0;31m`
LinkTextende:

even
MemoryText:
dc.b `VIRUS IS STILL in memory: `
Virusname: blk.b 40,0

even
BootText:
dc.b `VIRUS in Bootsectors:  `
Bootblockvirusname: blk.b 40,0

even
notenoughText:
dc.b ` `,10
dc.b `                            Not enough memory !`,10

notenoughTextende:


even
LinkvirusNameList:
dc.l AntiChristText
dc.l BestialDevastationText
dc.l CCCPText
dc.l GotchaLamerText
dc.l HochofenText
dc.l IRQText
dc.l QRDLText
dc.l RedOctoberText
dc.l SmilyCancerText
dc.l TravelingJackText
dc.l TravelingJack2Text
dc.l XenoText

even
LinkvirusTestbytesList:
dc.l $00000250
dc.l `VAST`
dc.l `CCCP`
dc.l `tcha`
dc.l `hofe`
dc.l $000003EC
dc.l $60000342
dc.l `devi`
dc.l $60026068
dc.l $48E7FFFE
dc.l $48E7FFFE
dc.l `Nudo`

even
LinkvirusOffsetList:
dc.l $00000788
dc.l $00000070
dc.l $0000004C
dc.l $0000013C
dc.l $00000B90
dc.l $000000A4
dc.l $00000008
dc.l $00000484
dc.l $00000004
dc.l $00000010
dc.l $00000014
dc.l $00000414
 
even
FilevirusNameList:
dc.l AmigaKnightText
dc.l AntiChristTextText
dc.l BeethovenText
dc.l BlueboxText
dc.l BretHawnesText
dc.l ColorText
dc.l CommodoreText
dc.l CompuPhagozyteText
dc.l CompuPhagozyte2Text
dc.l CompuPhagozyteIIText
dc.l CompuPhagozyteIIIText
dc.l CompuPhagozyteIIIBCText
dc.l CompuPhagozyteIVText
dc.l DStructureText
dc.l DAGCreatorText
dc.l DarthVaderText
dc.l DisasterMasterText
dc.l DiskKillerText
dc.l DisktroyerV10Text
dc.l DisktroyerV20Text
dc.l DiskVal1234Text
dc.l DMTrashText
dc.l DriveInfoText
dc.l ExcrementCreatorText
dc.l FreedomText
dc.l GotchaLamerCreatorText
dc.l GZUSText
dc.l INTELText
dc.l JeffBUTONICV131Text
dc.l JeffBUTONICV300Text
dc.l LamerLoadWBText
dc.l LamerVirusXText
dc.l Liberatorv121Text
dc.l Liberatorv30Text
dc.l Liberatorv501Text
dc.l ModemCheckerText
dc.l ModemCheckerloadWBText
dc.l NANOoldText
dc.l NanonewText
dc.l NoGuruv20Text
dc.l PPBombText
dc.l RevengeOfTheLAMERExterminatorText
dc.l SADDAMText
dc.l SEPULTURAText
dc.l ShowSysopText
dc.l SmilyCancerLoadWBText
dc.l SnoopDosText
dc.l TelecomText
dc.l TFCRevengeLoadWBText
dc.l TimeBombV09Text
dc.l TravelingJackTextText
dc.l VirusConstructionSetText
dc.l xprzspeedV32Text

even
FilevirusTestbytesList:
dc.l `STAR`
dc.l `ntic`
dc.l `Beet`
dc.l `inpu`
dc.l `BRET`
dc.l `TURK`
dc.l `COMM`
dc.l ` Com`
dc.l `The `
dc.l `COMP`
dc.l `agoz`
dc.l `gozy`
dc.l `agoz`
dc.l `Stru`
dc.l $00000510
dc.l `DART`
dc.l $610002FA
dc.l `DISK`
dc.l `iskt`
dc.l `iskt`
dc.l `trac`
dc.l `user`
dc.l $4EAEFF3A
dc.l `EXCR`
dc.l `Free`
dc.l ` LAM`
dc.l `-Zus`
dc.l `oadw`
dc.l `DASA`
dc.l $4E714E71
dc.l `LAME`
dc.l `MER `
dc.l `erat`
dc.l `Libe`
dc.l `Libe`
dc.l `HECK`
dc.l `FUCK`
dc.l `N A `
dc.l `Nano`
dc.l `FNNF`
dc.l `egam`
dc.l $60040000
dc.l `BitM`
dc.l $4E716100
dc.l `SPOS`
dc.l `=WO/`
dc.l `oopD`
dc.l `brar`
dc.l `Fana`
dc.l `VIRU`
dc.l ` Jac`
dc.l `Star`
dc.l `Spee`

even
FilevirusOffsetList:
dc.l $00000342
dc.l $00000008
dc.l $00000044
dc.l $000001A0
dc.l $00000028
dc.l $00000260
dc.l $0000010E
dc.l $00000460
dc.l $00000380
dc.l $000001B0
dc.l $0000035C
dc.l $00000030
dc.l $00000030
dc.l $00000168
dc.l $00000710
dc.l $00000300
dc.l $00000028
dc.l $00000162
dc.l $00000220
dc.l $00000224
dc.l $000006C0
dc.l $000004C2
dc.l $0000002C
dc.l $000000C8
dc.l $0000054E
dc.l $000002F0
dc.l $0000361C
dc.l $0000027C
dc.l $00000206
dc.l $00000088
dc.l $00000448
dc.l $00000460
dc.l $0000129C
dc.l $00002784
dc.l $00003E80
dc.l $000033F0
dc.l $0000054C
dc.l $00000492
dc.l $0000003A
dc.l $000002F0
dc.l $00000410
dc.l $00000020
dc.l $00000702
dc.l $00000180
dc.l $000003D0
dc.l $00000C00
dc.l $000006B0
dc.l $00000290
dc.l $00000050
dc.l $000007C0
dc.l $00000010
dc.l $00000050
dc.l $000023F0

even
BootblockvirusNameList:
dc.l The16BitCrewText
dc.l The2001Text
dc.l AEKText
dc.l AHCText
dc.l AIDSText
dc.l AIDS2Text
dc.l AlienNewBeatText
dc.l AmigaFreakText
dc.l AmigaMasterText
dc.l AngelText
dc.l ASSText
dc.l ASVText
dc.l AsylantText
dc.l AustralianParasiteText
dc.l BadBytesText
dc.l BamigaSectorOneText
dc.l BBProtText
dc.l BigBossText
dc.l BlackflashText
dc.l BladeRunnersText
dc.l BLFText
dc.l BlizzProV31Text
dc.l BlizzProV33Text
dc.l BlowJobText
dc.l BootXText
dc.l ButonicText
dc.l ByteBanditText
dc.l ByteBanditPlusText
dc.l ByteBandit2Text
dc.l ByteBanditturboText
dc.l ByteVoyagerText
dc.l ByteVoyagerIIText
dc.l ByteWarriorText
dc.l CascadeText
dc.l CCCPText
dc.l ClaasAbrahamText
dc.l ClonkText
dc.l CobraText
dc.l CodersNightmareText
dc.l CopyLockText
dc.l CrackerExterminatorText
dc.l DAGText
dc.l DAT89Text
dc.l DatacrimeText
dc.l DestructorText
dc.l DetlefText
dc.l DigitalEmotionsText
dc.l DisgustText
dc.l DiskDoktorsText
dc.l DISKFurunkelText
dc.l DiskGuardText
dc.l DiskHerpesText
dc.l DiskTerminatorText
dc.l DivinaExterminatorText
dc.l DottyText
dc.l DUMDUMText
dc.l ElectroVisionText
dc.l EuropeanText
dc.l ExcrementText
dc.l ExecutorsText
dc.l ExtremeText
dc.l FASTText
dc.l FastEddieText
dc.l FICAText
dc.l ForpibText
dc.l FrityText
dc.l fuckdeviceText
dc.l GadaffiText
dc.l GermanyText
dc.l GlasnostText
dc.l GraffitiText
dc.l GremlinText
dc.l GuardiansBootAidsText
dc.l GXTeamText
dc.l GyrosText
dc.l HaukeText
dc.l HCSText
dc.l HCSIIText
dc.l HighlanderText
dc.l HillyText
dc.l HODENText
dc.l IceText
dc.l IncognitoText
dc.l IndianaJonesText
dc.l InfectorText
dc.l InfluenzaText
dc.l IngerIQText
dc.l IngoText
dc.l JITRText
dc.l JoshuaText
dc.l JulieText
dc.l KaukiText
dc.l KefrensText
dc.l KilledText
dc.l LADSText
dc.l LameBlameText
dc.l LamerExterminatoroldText
dc.l LamerExterminatornewText
dc.l LamerExterminatorIText
dc.l LamerExterminatorIIText
dc.l LamerExterminatorIIIText
dc.l LamerExterminatorIVText
dc.l LamerExterminatorVText
dc.l LamerExterminatorVIText
dc.l LoverboySexmachineText
dc.l LSDText
dc.l MADText
dc.l MADIIText
dc.l MallanderText
dc.l MEXXText
dc.l MGM89Text
dc.l MICROSYSTEMSText
dc.l MOSHText
dc.l MOSH2Text
dc.l MutilatorText
dc.l NastyNastyText
dc.l NorthStarText
dc.l NorthStarIIText
dc.l ObeliskText
dc.l Obelisk2Text
dc.l OPAPAText
dc.l OverkillText
dc.l PARATAXIText
dc.l PARATAXIIText
dc.l PARATAXIIIText
dc.l PayDayText
dc.l PentagonSlayerText
dc.l PentagonSlayer2Text
dc.l PentagonSlayer3Text
dc.l PlastiqueText
dc.l REPText
dc.l RevengeBootloaderText
dc.l REVENGEText
dc.l SachsenText
dc.l SADDAMHUSSEINText
dc.l SaoPauloText
dc.l SATANText
dc.l SCAText
dc.l ScarfaceText
dc.l SendarionText
dc.l SherlockText
dc.l ShitText
dc.l SSText
dc.l SSIIText
dc.l SuicideMachineText
dc.l SuperboyText
dc.l SupplyTeamText
dc.l SystemZV30Text
dc.l SystemZV40Text
dc.l SystemZV50Text
dc.l SystemZV51Text
dc.l SystemZV53Text
dc.l SystemZV54Text
dc.l SystemZV61Text
dc.l SystemZV64Text
dc.l SystemZV65Text
dc.l TargetText
dc.l TelstarText
dc.l TermigatorText
dc.l TFCRevengeText
dc.l TimeBombText
dc.l TNKText
dc.l TomatesGentechnic10Text
dc.l TomatesGentechnic20Text
dc.l TURKText
dc.l UltrafoxText
dc.l UKLamerStyleText
dc.l USSR492Text
dc.l VCCofTNTText
dc.l VIPHSText
dc.l VirusConstructionSetBootblockText
dc.l VirusSlayerText
dc.l VirusV1Text
dc.l WAFTText
dc.l WahnfriedText
dc.l WARHAWKText
dc.l WarsawAvengerText
dc.l ZACCESSV10Text
dc.l ZACCESSV20Text
dc.l ZACCESSV30Text
dc.l ZenkerText
dc.l ZESTText
dc.l ZLXText
dc.l ZombiText

even
BootblockvirusTestbytesList:
dc.l `Crew`
dc.l `0012`
dc.l ` AEK`
dc.l `A.H.`
dc.l `HIV!`
dc.l ` Ken`
dc.l `ALIE`
dc.l `AMIG`
dc.l `Mast`
dc.l $4EAEFF3A
dc.l ` PRO`
dc.l `SV!A`
dc.l `ASYL`
dc.l `Aust`
dc.l `BOUT`
dc.l `BS1!`
dc.l `B-Pr`
dc.l `_BOS`
dc.l `blac`
dc.l `lade`
dc.l `dos.`
dc.l $332E3100
dc.l $332E3300
dc.l `Allo`
dc.l `Viru`
dc.l `BAHA`
dc.l `Band`
dc.l `NqNq`
dc.l `os.l`
dc.l `trac`
dc.l $61000336
dc.l $600002E6
dc.l `DASA`
dc.l `Casc`
dc.l `CCCP`
dc.l $B18536B7
dc.l `CLON`
dc.l ` COB`
dc.l `CODE`
dc.l $0007F000
dc.l `CRAC`
dc.l ` DAG`
dc.l `T '8`
dc.l `DATA`
dc.l `estr`
dc.l $41FA001A
dc.l `EMOT`
dc.l `Viru`
dc.l ` Dis`
dc.l `DISK`
dc.l `DISK`
dc.l ` H e`
dc.l `DISK`
dc.l `dos.`
dc.l `Dott`
dc.l `MDUM`
dc.l `ELEC`
dc.l `Euro`
dc.l `EXCR`
dc.l `XECU`
dc.l `XTRE`
dc.l $0007F000
dc.l $6000FC38
dc.l `F.I.`
dc.l `FORP`
dc.l `rity`
dc.l `fuck`
dc.l `GADA`
dc.l `Germ`
dc.l `Glas`
dc.l `fiti`
dc.l `grap`
dc.l `-aid`
dc.l `intu`
dc.l `GYRO`
dc.l `Hauk`
dc.l `H.C.`
dc.l `H.C.`
dc.l `HIGH`
dc.l $0007FF00
dc.l `HODE`
dc.l `INC!`
dc.l $2C790000
dc.l `iana`
dc.l $6000FC38
dc.l `FUCK`
dc.l `nger`
dc.l `INGO`
dc.l `JITR`
dc.l $00BFE001
dc.l $E0014E75
dc.l `dos.`
dc.l `efre`
dc.l `Kill`
dc.l `LADS`
dc.l $6100FFDE
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $FEDC0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l ` Sex`
dc.l `LSD!`
dc.l `Infe`
dc.l `cker`
dc.l `DERK`
dc.l `MEXX`
dc.l `MGM8`
dc.l `MICR`
dc.l `MOSH`
dc.l `MOSH`
dc.l `dos.`
dc.l `Nast`
dc.l `Nort`
dc.l `Nort`
dc.l `GURU`
dc.l ` OBE`
dc.l ` OPA`
dc.l $4BF90007
dc.l `TAX `
dc.l `ATAX`
dc.l `ATAX`
dc.l `PayD`
dc.l `enta`
dc.l `Circ`
dc.l `enta`
dc.l ` P L`
dc.l `REP!`
dc.l `Reve`
dc.l `Reve`
dc.l $00078400
dc.l `2000`
dc.l `PAUL`
dc.l `SATA`
dc.l `SCA!`
dc.l `SCAR`
dc.l `Send`
dc.l `ORSI`
dc.l $6100000A
dc.l `!SS!`
dc.l `HEIL`
dc.l $2C790000
dc.l `Supe`
dc.l ` Sup`
dc.l `3.0 `
dc.l `4.0 `
dc.l `5.0 `
dc.l `5.1 `
dc.l `V5.3`
dc.l `V5.4`
dc.l `V6.1`
dc.l `V6.4`
dc.l `V6.5`
dc.l $43524E00
dc.l `6.0 `
dc.l `intu`
dc.l ` 199`
dc.l `IME `
dc.l `TNK!`
dc.l `OMAT`
dc.l `Toma`
dc.l `TURK`
dc.l $4EF900FC
dc.l $61000338
dc.l `Sent`
dc.l `grap`
dc.l `VIPH`
dc.l $00BFE001
dc.l `VIRU`
dc.l `sind`
dc.l $2C780004
dc.l `AHNF`
dc.l `WARH`
dc.l `Wars`
dc.l `ZACC`
dc.l `ZACC`
dc.l `ACCE`
dc.l `ZENK`
dc.l `Z.E.`
dc.l `ZLX!`
dc.l $075A6F6D

even
BootblockvirusOffsetList:
dc.l $000001E0
dc.l $000003F0
dc.l $000003D0
dc.l $000002FC
dc.l $000003F0
dc.l $000002D0
dc.l $00000240
dc.l $0000001E
dc.l $0000037A
dc.l $00000054
dc.l $00000344
dc.l $000002F0
dc.l $00000330
dc.l $0000036C
dc.l $000003A0
dc.l $000003F0
dc.l $00000338
dc.l $000003F0
dc.l $00000010
dc.l $00000330
dc.l $0000030E
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000028E
dc.l $0000032C
dc.l $00000020
dc.l $000002A8
dc.l $000003C2
dc.l $00000320
dc.l $00000010
dc.l $0000000C
dc.l $000000C0
dc.l $000003E2
dc.l $00000054
dc.l $00000004
dc.l $000003B8
dc.l $00000306
dc.l $0000005A
dc.l $00000018
dc.l $00000014
dc.l $000003BA
dc.l $000002C0
dc.l $000001C6
dc.l $000001F4
dc.l $00000010
dc.l $00000280
dc.l $000001B8
dc.l $000003E8
dc.l $000003B2
dc.l $000002F4
dc.l $00000390
dc.l $000003C6
dc.l $00000096
dc.l $00000018
dc.l $00000010
dc.l $00000010
dc.l $00000010
dc.l $00000054
dc.l $00000348
dc.l $00000274
dc.l $00000044
dc.l $000003F8
dc.l $000003F2
dc.l $0000001A
dc.l $00000018
dc.l $000002DA
dc.l $00000040
dc.l $00000010
dc.l $00000730
dc.l $00000390
dc.l $00000360
dc.l $00000394
dc.l $000001E0
dc.l $0000023E
dc.l $00000010
dc.l $00000328
dc.l $0000034E
dc.l $0000025C
dc.l $0000009C
dc.l $000002D4
dc.l $000003F0
dc.l $00000120
dc.l $00000320
dc.l $000003F8
dc.l $00000066
dc.l $00000014
dc.l $00000008
dc.l $00000008
dc.l $000001F4
dc.l $00000334
dc.l $00000298
dc.l $000003AC
dc.l $00000264
dc.l $00000008
dc.l $00000058
dc.l $000003A6
dc.l $00000396
dc.l $00000342
dc.l $00000392
dc.l $000003F4
dc.l $000003AE
dc.l $000003AA
dc.l $00000396
dc.l $000001E0
dc.l $000003F0
dc.l $00000010
dc.l $000000A0
dc.l $00000008
dc.l $000003F0
dc.l $00000282
dc.l $000003F4
dc.l $00000016
dc.l $00000016
dc.l $000002A0
dc.l $000001D6
dc.l $00000010
dc.l $00000012
dc.l $00000038
dc.l $00000370
dc.l $00000368
dc.l $00000014
dc.l $000003F0
dc.l $000003B0
dc.l $00000220
dc.l $00000010
dc.l $00000286
dc.l $00000370
dc.l $000002DA
dc.l $00000210
dc.l $000003F0
dc.l $00000010
dc.l $000003E2
dc.l $00000038
dc.l $00000012
dc.l $000002F0
dc.l $00000280
dc.l $000003F0
dc.l $00000308
dc.l $000003E2
dc.l $000002F6
dc.l $00000010
dc.l $00000012
dc.l $0000001A
dc.l $0000032C
dc.l $000002E2
dc.l $00000324
dc.l $0000002C
dc.l $0000002C
dc.l $0000002C
dc.l $0000002C
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000019C
dc.l $00000024
dc.l $000003EC
dc.l $0000002C
dc.l $00000342
dc.l $000003F0
dc.l $00000182
dc.l $00000040
dc.l $00000066
dc.l $00000036
dc.l $00000368
dc.l $00000054
dc.l $00000168
dc.l $00000022
dc.l $00000146
dc.l $00000010
dc.l $00000322
dc.l $00000050
dc.l $00000312
dc.l $00000366
dc.l $00000386
dc.l $000001D6
dc.l $00000016
dc.l $0000027A
dc.l $00000252
dc.l $00000332
dc.l $000003F0
dc.l $00000184

even
AbsoluteMemoryPositionVirusNameList:
dc.l The16BitCrewText
dc.l The2001Text
dc.l AEKText
dc.l AIDSText
dc.l AlienNewBeatText
dc.l AmigaMasterText
dc.l ASSText
dc.l ASVText
dc.l AsylantText
dc.l BamigaSectorOneText
dc.l BBProtText
dc.l BeethovenText
dc.l BigBossText
dc.l BlackflashText
dc.l BladeRunnersText
dc.l BLFText
dc.l BlowJobText
dc.l BretHawnesText
dc.l ButonicText
dc.l ByteVoyagerText
dc.l ByteVoyagerIIText
dc.l CascadeText
dc.l ClonkText
dc.l CodersNightmareText
dc.l ColorText
dc.l CompuPhagozyteText
dc.l CompuPhagozyte2Text
dc.l CompuPhagozyteIIText
dc.l CompuPhagozyteIIIText
dc.l CompuPhagozyteIIIBCText
dc.l CompuPhagozyteIVText
dc.l DStructureText
dc.l DAGText
dc.l DAT89Text
dc.l DATACRIMEText
dc.l DigitalEmotionsText
dc.l DisgustText
dc.l DiskguardText
dc.l DiskHerpesText
dc.l DiskTerminatorText
dc.l DottyText
dc.l DUMDUMText
dc.l ExcrementText
dc.l ExecutorsText
dc.l FASTText
dc.l FastEddieText
dc.l GadaffiText
dc.l GlasnostText
dc.l GoldenRiderText
dc.l GraffitiText
dc.l GremlinText
dc.l GXTeamText
dc.l GyrosText
dc.l HCSText
dc.l HCSIIText
dc.l HillyText
dc.l HODENText
dc.l IceText
dc.l IndianaJonesText
dc.l InfectorText
dc.l InfluenzaText
dc.l INGOText
dc.l JITRText
dc.l JulieText
dc.l KaukiText
dc.l KefrensText
dc.l KilledText
dc.l LADSText
dc.l LoverboySexmachineText
dc.l LSDText
dc.l MADIIText
dc.l MEXXText
dc.l MGM89Text
dc.l MOSHText
dc.l MOSH2Text
dc.l MutilatorText
dc.l NANOoldText
dc.l NANOnewText
dc.l NastyNastyText
dc.l NorthStarText
dc.l NorthStarIIText
dc.l OverkillText
dc.l PARATAXIText
dc.l PARATAXIIIText
dc.l PayDayText
dc.l PentagonSlayerText
dc.l PentagonSlayer2Text
dc.l PentagonSlayer3Text
dc.l PlastiqueText
dc.l REPText
dc.l REVENGEText
dc.l SachsenText
dc.l SADDAMHUSSEINText
dc.l SaoPauloText
dc.l SATANText
dc.l SCAText
dc.l SendarionText
dc.l SherlockText
dc.l SmilyCancerText
dc.l SSText
dc.l SSIIText
dc.l SuicideMachineText
dc.l SuperboyText
dc.l SupplyTeamText
dc.l SystemZV30Text
dc.l SystemZV40Text
dc.l SystemZV50Text
dc.l SystemZV51Text
dc.l SystemZV53Text
dc.l SystemZV54Text
dc.l SystemZV61Text
dc.l TargetText
dc.l TelStarText
dc.l TermigatorText
dc.l TIMEBOMBText
dc.l TNKText
dc.l TomatesGentechnic10Text
dc.l TomatesGentechnic20text
dc.l TURKText
dc.l UltrafoxText
dc.l USSR492Text
dc.l VirusConstructionSetBootblockText
dc.l VirusSlayerText
dc.l VirusV1Text
dc.l WahnfriedText
dc.l WARHAWKText
dc.l ZaccessV10Text
dc.l ZLXText
dc.l ZombiText

even
AbsoluteMemoryPositionVirusTestbytesList:
dc.l $43726577
dc.l $30303132
dc.l ` AEK`
dc.l $48495621
dc.l `ALIE`
dc.l `Mast`
dc.l `ROTE`
dc.l `SV!A`
dc.l `ASYL`
dc.l `BS1!`
dc.l `B-Pr`
dc.l `BETH`
dc.l `A!BI`
dc.l `blac`
dc.l `lade`
dc.l `trac`
dc.l `cato`
dc.l `BRET`
dc.l `BAHA`
dc.l `VOYA`
dc.l `oyag`
dc.l `Casc`
dc.l `LONK`
dc.l `oder`
dc.l `TURK`
dc.l `gozy`
dc.l `The `
dc.l `COMP`
dc.l `agoz`
dc.l `gozy`
dc.l `agoz`
dc.l `Stru`
dc.l `from`
dc.l `T '8`
dc.l `DATA`
dc.l `EMOT`
dc.l `Viru`
dc.l `DISK`
dc.l ` H e`
dc.l `isk-`
dc.l `Dott`
dc.l `MDUM`
dc.l `EXCR`
dc.l `XECU`
dc.l `ains`
dc.l `EDDI`
dc.l $47414441
dc.l `Glas`
dc.l `Gold`
dc.l `fiti`
dc.l `grap`
dc.l `libr`
dc.l `GYRO`
dc.l $482E432E
dc.l `H.C.`
dc.l `dos.`
dc.l `HODE`
dc.l `INC!`
dc.l `ndia`
dc.l `INFE`
dc.l `I N `
dc.l `INGO`
dc.l `JITR`
dc.l `dos.`
dc.l `dos.`
dc.l `efre`
dc.l `Kill`
dc.l `LADS`
dc.l `Love`
dc.l $4C534421
dc.l $004D4144
dc.l `MEXX`
dc.l `MGM8`
dc.l `MOSH`
dc.l `MOSH`
dc.l `grap`
dc.l `N A `
dc.l `Nano`
dc.l `Nast`
dc.l $4E4F5254
dc.l $57726974
dc.l `Over`
dc.l `PARA`
dc.l `PARA`
dc.l `PayD`
dc.l $656E7461
dc.l `enta`
dc.l `enta`
dc.l ` L A`
dc.l `REP!`
dc.l $52657665
dc.l `ACHS`
dc.l `2000`
dc.l `PAUL`
dc.l `ATAN`
dc.l $53434121
dc.l `Send`
dc.l `ORSI`
dc.l $52494F4E
dc.l `!SS!`
dc.l `HEIL`
dc.l `uici`
dc.l `Supe`
dc.l `uppl`
dc.l ` V3.`
dc.l ` V4.`
dc.l ` V5.`
dc.l `5.1 `
dc.l `V5.3`
dc.l `V5.4`
dc.l `V6.1`
dc.l $43524E00
dc.l `grap`
dc.l `NsAx`
dc.l $424F4D42
dc.l `TNK!`
dc.l `OMAT`
dc.l `Toma`
dc.l `TURK`
dc.l `NuNu`
dc.l `Sent`
dc.l $00BFE001
dc.l `VIRU`
dc.l `sind`
dc.l `AHNF`
dc.l `WARH`
dc.l `ZACC`
dc.l `ZLX!`
dc.l `bi I`

even
AbsoluteMemorypositionVirusOffsetList:
dc.l $0007EDE0
dc.l $0007EFE8
dc.l $0007EFD0
dc.l $0007EFF0
dc.l $00020240
dc.l $0007EF30
dc.l $0007F4B2
dc.l $0007DF00
dc.l $0007EF30
dc.l $0007EFE8
dc.l $0007A338
dc.l $0007F008
dc.l $0007EFE2
dc.l $0007F010
dc.l $0007EF30
dc.l $0007F31A
dc.l $0007F02E
dc.l $0007F004
dc.l $0007EF2C
dc.l $0007F330
dc.l $0007F2E2
dc.l $0007E3E2
dc.l $0007D398
dc.l $0007FA5C
dc.l $00070260
dc.l $0007C400
dc.l $0007C380
dc.l $0007C1B0
dc.l $0007C35C
dc.l $0007C030
dc.l $0007C030
dc.l $0007C168
dc.l $0007EFB6
dc.l $0007FAC0
dc.l $0007DDC6
dc.l $0007EE80
dc.l $0007EDB8
dc.l $0007FCF4
dc.l $0007EF90
dc.l $0007EF24
dc.l $0007F018
dc.l $0007FA10
dc.l $0007F454
dc.l $0007EF48
dc.l $0007F240
dc.l $0007F3D4
dc.l $0007FB40
dc.l $0007F730
dc.l $0007C34C
dc.l $0007EF90
dc.l $0007F760
dc.l $0007F8C0
dc.l $0007EE3E
dc.l $0007EF44
dc.l $0007EF4E
dc.l $0007F440
dc.l $0007F2D4
dc.l $0007EFE4
dc.l $0007E91E
dc.l $0007F310
dc.l $0007F3D2
dc.l $0007F408
dc.l $0007EC18
dc.l $0007F826
dc.l $0007EE98
dc.l $0007EFAC
dc.l $0007EE64
dc.l $0007F408
dc.l $0007EDD6
dc.l $0007EFE4
dc.l $0007FB72
dc.l $0007EFE4
dc.l $0007E582
dc.l $0007C016
dc.l $0007C016
dc.l $0007CD4C
dc.l $0007C492
dc.l $0007C03A
dc.l $0007F1D6
dc.l $0007EF84
dc.l $0007EF9A
dc.l $0007F722
dc.l $0007EFCC
dc.l $0007EE82
dc.l $0007EC10
dc.l $0007FD86
dc.l $0007F368
dc.l $0007E2DA
dc.l $0007EE12
dc.l $0007EFE4
dc.l $0007E3E2
dc.l $000782D8
dc.l $0007F012
dc.l $0007FEF0
dc.l $0007CF26
dc.l $0007EFE8
dc.l $0007E3E2
dc.l $0007FCF6
dc.l $0007FB00
dc.l $0007C012
dc.l $0007C01A
dc.l $0007E424
dc.l $0007EEE2
dc.l $0007F2C8
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42C
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007ED9C
dc.l $0007FED4
dc.l $0007F712
dc.l $00070346
dc.l $0007EFE4
dc.l $00070182
dc.l $0007F640
dc.l $0007F066
dc.l $0007EDB0
dc.l $0007F454
dc.l $0007F146
dc.l $0007FA10
dc.l $0007EF22
dc.l $0007F312
dc.l $0007E966
dc.l $0007EDD6
dc.l $0007EFE4
dc.l $0007A18C


even
ColdRelativeMemoryPositionVirusNameList:
dc.l DestructorText
dc.l DiskVal1234Text
dc.l HARDEXText
dc.l Joshua2Text
dc.l LAMEText
dc.l LOOMText
dc.l RISCText
dc.l SADDAMText

even
ColdRelativeMemoryPositionVirusTestbytesList:
dc.l `estr`
dc.l $0C681234
dc.l `RDEX`
dc.l `trac`
dc.l `LAME`
dc.l `LOOO`
dc.l `ISC `
dc.l `libr`

even
ColdRelativeMemoryPositionVirusOffsetList:
dc.l $00000180
dc.l $00000148
dc.l $0000057E
dc.l $00000242
dc.l $0000014A
dc.l $0000057C
dc.l $0000057E
dc.l $00000560

even
CoolRelativeMemoryPositionVirusNameList:
dc.l AIDS2Text
dc.l AngelText
dc.l AustralianParasiteText
dc.l BadBytesText
dc.l BlizzProV31Text
dc.l BlizzProV33Text
dc.l CCCPText
dc.l CrackerExterminatorText
dc.l Crime2Text
dc.l CrimePlusText
dc.l DarthVaderText
dc.l DiskDoktorsText
dc.l DISKFurunkelText
dc.l DivinaExterminatorText
dc.l ExcrementText
dc.l LameBlameText
dc.l MICROSYSTEMSText
dc.l MOSH2Text
dc.l ObeliskText
dc.l PARATAXIIText
dc.l QRDLText
dc.l USSR492Text
dc.l WAFTText

even
CoolRelativeMemoryPositionVirusTestbytesList:
dc.l `A'e*`
dc.l `Ange`
dc.l `Aust`
dc.b `TTS `
dc.l `Bliz`
dc.l `Bliz`
dc.l `CCCP`
dc.l `CRAC`
dc.l `Crim`
dc.l `rime`
dc.l `DART`
dc.l `Dokt`
dc.l `DISK`
dc.l `IVIN`
dc.l `EXCR`
dc.l `ameB`
dc.l `MICR`
dc.l `MOSH`
dc.l `GURU`
dc.l `ARAT`
dc.l `QRDL`
dc.l `Sent`
dc.l `est-`

even
CoolRelativeMemoryPositionVirusOffsetList:
dc.l $0000033E
dc.l $00000262
dc.l $000002DE
dc.l $00000310
dc.l -$00000222
dc.l -$00000238
dc.l -$00000030
dc.l -$00000096
dc.l $00000346
dc.l $000002B8
dc.l $00000268
dc.l $0000017C
dc.l $0000035C
dc.l $000002EA
dc.l -$00000026
dc.l $00000050
dc.l $0000032C
dc.l -$00000072
dc.l -$00000034
dc.l $0000013C
dc.l $00000190
dc.l -$00000026
dc.l $000002DE

even
KickTagRelativeMemoryPositionVirusNameList:
dc.l AmigaFreakText
dc.l AmigaKnightText
dc.l BGS9Text
dc.l BootXText
dc.l ByteBanditText
dc.l ByteBanditPlusText
dc.l ByteBandit2Text
dc.l ByteBanditturboText
dc.l ByteWarriorText
dc.l CobraText
dc.l DetlefText
dc.l DisasterMasterText
dc.l ElectroVisionText
dc.l EuropeanText
dc.l ExtremeText
dc.l FICAText
dc.l ForpibText
dc.l FrityText
dc.l GermanyText
dc.l GuardiansBootAidsText
dc.l HaukeText
dc.l IncognitoText
dc.l IngerIQText
dc.l IngosReturnText
dc.l IRQText
dc.l JeffBUTONICV131Text
dc.l JeffBUTONICV300Text
dc.l JoshuaText
dc.l LamerExterminatoroldIIIText
dc.l LamerExterminatornewText
dc.l LamerExterminatorIText
dc.l LamerExterminatorIIText
dc.l LamerExterminatorIVVText
dc.l LamerExterminatorVIText
dc.l LamerExterminatorVIIText
dc.l LamerExterminatorVIIIText
dc.l NaSTText
dc.l ObeliskText
dc.l OPAPAText
dc.l ReturnoftheLamerExterminatorText
dc.l RevengeBootloaderText
dc.l RevengeOfTheLAMERExterminatorText
dc.l RevengeOfTheLAMERExterminatorText
dc.l SCARFACEText
dc.l SEPULTURAText
dc.l ShitText
dc.l SonjaText
dc.l SystemZV64Text
dc.l SystemZV65Text
dc.l TerroristsText
dc.l TFCRevengeText
dc.l UKLamerStyleText
dc.l VIPHSText
dc.l WarsawAvengerText
dc.l ZaccessV20Text
dc.l ZaccessV30Text

even
KickTagRelativeMemoryPositionVirusTestbytesList:
dc.l `AMIG`
dc.l `STAR`
dc.l `TTV1`
dc.l `Boot`
dc.l $42616E64
dc.l `NqNq`
dc.l `dos.`
dc.l `trac`
dc.l `Viru`
dc.l `OBRA`
dc.l `intu`
dc.l `-seq`
dc.l `ELEC`
dc.l `Euro`
dc.l `XTRE`
dc.l `F.I.`
dc.l `FORP`
dc.l `rity`
dc.l `Germ`
dc.l `-aid`
dc.l `Hauk`
dc.l `dos.`
dc.l `nger`
dc.l `INGO`
dc.l `RQ-T`
dc.l `JEFF`
dc.l `DASA`
dc.l `trac`
dc.l `LAME`
dc.l `LAME`
dc.l `AMER`
dc.l `LAME`
dc.l `AMER`
dc.l `AMER`
dc.l `LAME`
dc.l `LAME`
dc.l `NaST`
dc.l `BELI`
dc.l `PARA`
dc.l `amer`
dc.l `Reve`
dc.l $38204F63
dc.l `1986`
dc.l `SCAR`
dc.l `brar`
dc.l `SHIT`
dc.l `onja`
dc.l `V6.4`
dc.l `V6.5`
dc.l `TTV1`
dc.l `anat`
dc.l `devi`
dc.l `VIPH`
dc.l `rsaw`
dc.l `ZACC`
dc.l `ACCE`

even
KickTagRelativeMemoryPositionVirusOffsetList:
dc.l -$000003C4
dc.l $00000242
dc.l $00000A26
dc.l -$00000184
dc.l -$000003C2
dc.l -$0000013C
dc.l -$000003BC
dc.l -$0000002A
dc.l $000002B4
dc.l -$00000052
dc.l $00000218
dc.l $00000562
dc.l -$000003D2
dc.l -$000003D2
dc.l -$000001A2
dc.l $000004CA
dc.l -$000003C8
dc.l -$000003CA
dc.l -$000003D2
dc.l -$00000024
dc.l -$000003D2
dc.l -$000003BE
dc.l -$000003CE
dc.l -$0000002A
dc.l -$00000348
dc.l $0000099C
dc.l $000001A6
dc.l $000000EA
dc.l -$0000002E
dc.l -$00000028
dc.l -$00000022
dc.l -$0000002A
dc.l -$00000026
dc.l -$00000028
dc.l -$00000090
dc.l -$00000064
dc.l $0000009C
dc.l -$0000009C
dc.l -$00000098
dc.l -$000000DC
dc.l -$000003B8
dc.l -$00000834
dc.l -$0000082A
dc.l -$0000003E
dc.l $00000698
dc.l -$0000017C
dc.l -$0000001E
dc.l -$000003DA
dc.l -$000003DA
dc.l $0000007A
dc.l -$00000126 
dc.l -$000000E0
dc.l -$00000398
dc.l -$00000370
dc.l -$000003CC
dc.l -$0000019C

even
VirusNameList:
The16BitCrewText:
dc.b `16 Bit Crew`,0

even
The2001Text:
dc.b `2001`,0

even
AEKText:
dc.b `AEK`,0

even
AHCText:
dc.b `A.H.C.`,0

even
AIDSText:
dc.b `AIDS (SCA)`,0

even
AIDS2Text:
dc.b `AIDS (VKill)`,0

even
AlienNewBeatText:
dc.b `Alien New Beat V1.0`,0

even
AmigaFreakText:
dc.b `AMIGA Freak`,0

even
AmigaKnightText:
dc.b `AMIGA Knight`,0

even
AmigaMasterText:
dc.b `AMIGA Master`,0

even
AngelText:
dc.b `Angel`,0

even
AntiChristText:
dc.b `AntiChrist`,0

even
AntiChristTextText:
dc.b `AntiChrist-Text`,0

even
ASSText:
dc.b `ASS Virusprotector V1.0`,0

even
ASVText:
dc.b `ASV V0.000123`,0

even
AsylantText:
dc.b `Asylant`,0

even
AustralianParasiteText:
dc.b `Australian Parasite`,0

even
BadBytesText:
dc.b `Bad Bytes`,0

even
BamigaSectorOneText:
dc.b `Bamiga Sector One`,0

even
BBProtText:
dc.b `BB-Prot`,0

even
BeethovenText:
dc.b `Beethoven`,0

even
BestialDevastationText:
dc.b `Bestial Devastation`,0

even
BGS9Text:
dc.b `BGS 9`,0

even
BGS9IIText:
dc.b `BGS 9 II`,0

even
BigBossText:
dc.b `Big Boss`,0

even
BlackflashText:
dc.b `Blackflash V2.0`,0

even
BladeRunnersText:
dc.b `Blade Runners`,0

even
BLFText:
dc.b `BLF`,0

even
BlizzProV31Text:
dc.b `Blizz Pro V3.1`,0

even
BlizzProV33Text:
dc.b `Blizz Pro V3.3`,0

even
BlowJobText:
dc.b `BlowJob`,0

even
BlueboxText:
dc.b `BlueBox.icon.library`,0

even
BootXText:
dc.b `BootX`,0

even
BretHawnesText:
dc.b `Bret Hawnes`,0

even
ButonicText:
dc.b `Butonic 1.1`,0

even
ByteBanditText:
dc.b `Byte Bandit`,0

even
ByteBanditPlusText:
dc.b `Byte Bandit +`,0

even
ByteBandit2Text:
dc.b `Byte Bandit 2`,0

even
ByteBanditturboText:
dc.b `Byte Bandit turbo`,0

even
ByteVoyagerText:
dc.b `BYTE VOYAGER`,0

even
ByteVoyagerIIText:
dc.b `Byte Voyager II`,0

even
ByteWarriorText:
dc.b `Byte Warrior`,0

even
CascadeText:
dc.b `Cascade`,0

even
CCCPText:
dc.b `CCCP`,0

even
ClaasAbrahamText:
dc.b `Claas Abraham`,0

even
ClonkText:
dc.b `CLONK`,0

even
COBRAText:
dc.b `COBRA`,0

even
CodersNightmareText:
dc.b `Coders Nightmare`,0

even
CommodoreText:
dc.b `Commodore`,0

even
CopyLockText:
dc.b `CopyLock`,0

even
ColorText:
dc.b `Color (TURK V1.3)`,0

even
CompuPhagozyteText:
dc.b `CompuPhagozyte`,0

even
CompuPhagozyte2Text:
dc.b `CompuPhagozyte 2`,0

even
CompuPhagozyteIIText:
dc.b `COMPUPhagozyte II`,0

even
CompuPhagozyteIIIText:
dc.b `CompuPhagozyte III A`,0

even
CompuPhagozyteIIIBCText:
dc.b `CompuPhagozyte III B/C`,0

even
CompuPhagozyteIVText:
dc.b `CompuPhagozyte IV`,0

even
CrackerExterminatorText:
dc.b `Cracker Exterminator`,0

even
Crime2Text:
dc.b `Crime 2`,0

even
CrimePlusText:
dc.b `Crime!++`,0

even
DStructureText:
dc.b `D-Structure`,0

even
DAGText:
dc.b `DAG`,0

even
DAGCreatorText:
dc.b `DAG-Creator`,0

even
DarthVaderText:
dc.b `DARTH VADER 1.1`,0

even
DAT89Text:
dc.b `DAT '89`,0

even
DatacrimeText:
dc.b `Datacrime`,0

even
DestructorText:
dc.b `Destructor V1.2`,0

even
DetlefText:
dc.b `Detlef`,0

even
DigitalEmotionsText:
dc.b `DIGITAL EMOTIONS`,0

even
DisasterMasterText:
dc.b `DISASTER-MASTER V2`,0

even
DisgustText:
dc.b `Disgust`,0

even
DiskDoktorsText:
dc.b `Disk-Doktors`,0

even
DISKFurunkelText:
dc.b `DISK-Furunkel`,0

even
DiskguardText:
dc.b `DISK GUARD V1.0`,0

even
DiskHerpesText:
dc.b `Disk-Herpes`,0

even
DiskKillerText:
dc.b `DISK-KILLER V1.0`,0

even
DiskTerminatorText:
dc.b `Disk-Terminator`,0

even
DisktroyerV10Text:
dc.b `Disktroyer V1.0`,0

even
DisktroyerV20Text:
dc.b `Disktroyer V2.0`,0

even
DiskVal1234Text:
dc.b `Disk-Val1234`,0

even
DivinaExterminatorText:
dc.b `Divina Exterminator`,0

even
DMTrashText:
dc.b `DM-Trash`,0

even
DottyText:
dc.b `Dotty`,0

even
DriveInfoText:
dc.b `Drive Info(Crime!Linkvirus)`,0

even
DUMDUMText:
dc.b `DUMDUM`,0

even
ElectroVisionText:
dc.b `ELECTRO.VISION`,0

even
EuropeanText:
dc.b `European`,0

even
ExcrementText:
dc.b `EXCREMENT`,0

even
ExcrementCreatorText:
dc.b `EXCREMENT Creator`,0

even
ExecutorsText:
dc.b `EXECUTORS`,0

even
ExtremeText:
dc.b `EXTREME`,0

even
FASTText:
dc.b `F.A.S.T`,0

even
FastEddieText:
dc.b `Fast Eddie`,0

even
FICAText:
dc.b `FICA`,0

even
ForpibText:
dc.b `FORPIB`,0

even
FreedomText:
dc.b `Freedom!`,0

even
FrityText:
dc.b `Frity`,0

even
fuckdeviceText:
dc.b `fuck.device`,0

even
GadaffiText:
dc.b `GADAFFI`,0

even
GermanyText:
dc.b `Germany`,0

even
GlasnostText:
dc.b `GLASNOST`,0

even
GoldenRiderText:
dc.b `Golden Rider`,0

even
GotchaLamerText:
dc.b `Gotcha Lamer`,0

even
GotchaLamerCreatorText:
dc.b `Gotcha Lamer Creator`,0

even
GraffitiText:
dc.b `Graffiti`,0

even
GremlinText:
dc.b `Gremlin`,0

even
GuardiansBootAidsText:
dc.b `Guardians BootAids`,0

even
GXTeamText:
dc.b `GX.Team`,0

even
GyrosText:
dc.b `GYROS`,0

even
GZUSText:
dc.b `G-Zus`,0

even
HARDEXText:
dc.b `HARDEX`,0

even
HaukeText:
dc.b `Hauke`,0

even
HCSText:
dc.b `H.C.S`,0

even
HCSIIText:
dc.b `H.C.S II`,0

even
HighlanderText:
dc.b `HIGHLANDER`,0

even
HillyText:
dc.b `Hilly`,0

even
HochofenText:
dc.b `Hochofen`,0

even
HODENText:
dc.b `HODEN V33.17`,0

even
IceText:
dc.b `ICE`,0

even
IncognitoText:
dc.b `Incognito`,0

even
IndianaJonesText:
dc.b `Indiana Jones`,0

even
InfectorText:
dc.b `Infector`,0

even
InfluenzaText:
dc.b `INFLUENZA`,0

even
IngerIQText:
dc.b `Inger IQ`,0

even
IngoText:
dc.b `INGO`,0

even
IngosReturnText:
dc.b `INGOs Return`,0

even
IntelText:
dc.b `INTEL`,0

even
IRQText:
dc.b `IRQ`,0

even
JeffBUTONICV131Text:
dc.b `Jeff BUTONIC V1.31`,0

even
JeffBUTONICV300Text:
dc.b `Jeff BUTONIC V3.00`,0

even
JITRText:
dc.b `JITR`,0

even
JoshuaText:
dc.b `Joshua`,0

even
Joshua2Text:
dc.b `Joshua 2`,0

even
JulieText:
dc.b `Julie`,0

even
KaukiText:
dc.b `Kauki`,0

even
KefrensText:
dc.b `Kefrens`,0

even
KilledText:
dc.b `Killed`,0

even
LADSText:
dc.b `LADS`,0

even
LAMEText:
dc.b `LAME`,0

even
LameBlameText:
dc.b `Lame Blame!`,0

even
LamerExterminatoroldText:
dc.b `old LAMER Exterminator`,0

even
LamerExterminatoroldIIIText:
dc.b `(old) LAMER Exterminator (III)`,0

even
LamerExterminatornewText:
dc.b `new Lamer Exterminator`,0

even
LamerExterminatorIText:
dc.b `LAMER Exterminator I`,0

even
LamerExterminatorIIText:
dc.b `LAMER Exterminator II`,0

LamerExterminatorIIIText:
dc.b `LAMER Exterminator III`,0

even
LamerExterminatorIVText:
dc.b `LAMER Exterminator IV`,0

even
LamerExterminatorIVVText:
dc.b `LAMER Exterminator IV or V`,0

even
LamerExterminatorVText:
dc.b `LAMER Exterminator V`,0

even
LamerExterminatorVIText:
dc.b `LAMER Exterminator VI`,0

even
LamerExterminatorVIItext:
dc.b `LAMER Exterminator VII`,0

even
LamerExterminatorVIIIText:
dc.b `LAMER Exterminator VIII`,0

even
LamerLoadWBText:
dc.b `LAMER LoadWB`,0

even
LamerVirusXText:
dc.b `LAMER VirusX`,0

even
Liberatorv121Text:
dc.b `Liberator v1.21`,0

even
Liberatorv30Text:
dc.b `Liberator v3.0`,0

even
Liberatorv501Text:
dc.b `Liberator v5.01`,0

even
LOOMText:
dc.b `LOOM`,0

even
LoverboySexmachineText:
dc.b `Loverboy & Sexmachine`,0

even
LSDText:
dc.b `LSD`,0

even
MADText:
dc.b `MAD`,0

even
MADIIText:
dc.b `MAD II`,0

even
MallanderText:
dc.b `MALLANDER V1.0`,0

even
MENEMSREVENGEText:
dc.b `MENEMs REVENGE`,0

even
MEXXText:
dc.b `MEXX`,0

even
MGM89Text:
dc.b `MGM 89`,0

even
MICROSYSTEMSText:
dc.b `MICROSYSTEMS`,0

even
ModemCheckerText:
dc.b `MODEMCHECKER`,0

even
ModemCheckerLoadWBText:
dc.b `MODEMCHECKER LoadWB`,0

even
MOSHText:
dc.b `MOSH`,0

even
MOSH2Text:
dc.b `MOSH 2`,0

even
MutilatorText:
dc.b `Mutilator`,0

even
NANOoldText:
dc.b `old NANO`,0

even
NanonewText:
dc.b `Nano (new)`,0

even
NaSTText:
dc.b `NaST`,0

even
NastyNastyText:
dc.b `Nasty-nasty`,0

even
NoGuruV20Text:
dc.b `No Guru V2.0`,0

even
NorthStarText:
dc.b `NORTH STAR`,0

even
NorthStarIIText:
dc.b `NORTH STAR II`,0

even
ObeliskText:
dc.b `OBELISK`,0

even
Obelisk2Text:
dc.b `OBELISK 2`,0

even
OPAPAText:
dc.b `OPAPA`,0

even
OverkillText:
dc.b `Overkill`,0

even
PARATAXIText:
dc.b `PARATAX I`,0

even
PARATAXIIText:
dc.b `PARATAX II`,0

even
PARATAXIIIText:
dc.b `PARATAX III`,0

even
PayDayText:
dc.b `PayDay`,0

even
PentagonSlayerText:
dc.b `Pentagon-Slayer`,0

even
PentagonSlayer2Text:
dc.b `Pentagon-Slayer 2`,0

even
PentagonSlayer3Text:
dc.b `Pentagon-Slayer 3`,0

even
PlastiqueText:
dc.b `Plastique`,0

even
PPBombText:
dc.b `PP-Bomb`,0

even
QRDLText:
dc.b `QRDL 1.1`,0

even
RedOctoberText:
dc.b `Red October 1.7`,0

even
REPText:
dc.b `REP!`,0

even
ReturnoftheLamerExterminatorText:
dc.b `Return of the Lamer Exterminator`,0

even
RevengeBootloaderText:
dc.b `Revenge Bootloader`,0

even
RevengeOfTheLamerExterminatorText:
dc.b `Revenge Of The LAMER Exterminator`,0

even
RevengeOfTheLamerExterminator2Text:
dc.b `Revenge Of The LAMER Exterminator 2`,0

even
REVENGEText:
dc.b `REVENGE V1.2`,0

even
RISCText:
dc.b `RISC`,0

even
SachsenText:
dc.b `SACHSEN No.1`,0

even
SADDAMText:
dc.b `SADDAM`,0

even
SADDAMHUSSEINText:
dc.b `SADDAM HUSSEIN`,0

even
SaoPauloText:
dc.b `Sao Paulo`,0

even
SATANText:
dc.b `SATAN`,0

even
SCAText:
dc.b `SCA`,0

even
SCARFACEText:
dc.b `SCARFACE`,0

even
SendarionText:
dc.b `Sendarion #1`,0

even
SEPULTURAText:
dc.b `SEPULTURA`,0

even
SherlockText:
dc.b `Sherlock2.0`,0

even
ShitText:
dc.b `Shit`,0

even
ShowSysopText:
dc.b `ShowSysop`,0

even
SmilyCancerText:
dc.b `Smily Cancer`,0

even
SmilyCancerLoadWBText:
dc.b `Smily Cancer LoadWB`,0

even
SnoopDosText:
dc.b `SnoopDos 1.6`,0

even
SonjaText:
dc.b `Sonja`,0

even
SSText:
dc.b `SS`,0

even
SSIIText:
dc.b `SS II`,0

even
SuicideMachineText:
dc.b `Suicide Machine`,0

even
SuperboyText:
dc.b `Superboy`,0

even
SupplyTeamText:
dc.b `Supply Team`,0

even
SystemZV30Text:
dc.b `System Z V3.0`,0

even
systemZV40Text:
dc.b `System Z V4.0`,0

even
SystemZV50Text:
dc.b `System Z V5.0`,0

even
SystemZV51Text:
dc.b `System Z V5.1`,0

even
SystemZV53Text:
dc.b `System Z V5.3`,0

even
SystemZV54Text:
dc.b `System Z V5.4`,0

even
SystemZV61Text:
dc.b `System Z V6.1`,0

even
SystemZV64Text:
dc.b `System Z V6.4`,0

even
SystemZV65Text:
dc.b `System Z V6.5`,0

even
TargetText:
dc.b `TARGET`,0

even
TelecomText:
dc.b `Telecom`,0

even
TelStarText:
dc.b `TelStar`,0

even
TermigatorText:
dc.b `Termigator`,0

even
TerroristsText:
dc.b `Terrorists`,0

even
TFCRevengeText:
dc.b `T.F.C. Revenge`,0

even
TFCRevengeLoadWBText:
dc.b `T.F.C. Revenge LoadWB`,0

even
TimeBombText:
dc.b `TIME BOMB 1.0`,0

even
TimeBombV09Text:
dc.b `TIME BOMB V0.9`,0

even
TNKText:
dc.b `TNK!`,0

even
TomatesGentechnic10Text:
dc.b `TOMATES GENTECHNIC 1.0`,0

even
TomatesGentechnic20Text:
dc.b `TOMATES GENTECHNIC 2.0`,0

even
TravelingJackText:
dc.b `Traveling Jack`,0

even
TravelingJack2Text:
dc.b `Traveling Jack 2`,0

even
TravelingJackTextText:
dc.b `Traveling Jack-Text`,0

even
TURKText:
dc.b `TURK V1.3`,0

even
UltrafoxText:
dc.b `Ultrafox`,0

even
UKLamerStyleText:
dc.b `UK Lamer Style`,0

USSR492Text:
dc.b `USSR 492`,0

even
VCCofTNTText:
dc.b `VCC of TNT`,0

even
VIPHSText:
dc.b `VIPHS`,0

even
VirusConstructionSetText:
dc.b `Virus Construction Set`,0

even
VirusConstructionSetBootblockText:
dc.b `Virus Construction Set-Bootblock`,0

even
VirusSlayerText:
dc.b `Virus Slayer`,0

even
VirusV1Text:
dc.b `Virus V1`,0

even
WAFTText:
dc.b `WAFT`,0

even
WahnfriedText:
dc.b `WAHNFRIED`,0

even
WARHAWKText:
dc.b `WARHAWK`,0

even
WarsawAvengerText:
dc.b `Warsaw Avenger`,0

even
XenoText:
dc.b `Xeno`,0

even
xprzspeedV32Text:
dc.b `xprzspeed V3.2`,0

even
ZaccessV10Text:
dc.b `ZACCESS V1.0`,0

even
ZaccessV20Text:
dc.b `ZACCESS V2.0`,0

even
ZaccessV30Text:
dc.b `ZACCESS V3.0`,0

even
ZenkerText:
dc.b `ZENKER`,0

even
ZESTText:
dc.b `Z.E.S.T`,0

even
ZLXText:
dc.b `ZLX!`,0

even
ZombiText:
dc.b `Zombi I`,0

even
BootBlock:
	start:	dc.b	'DOS',0
	dc.l	$DD486BA1
	dc.l	880
main:	lea	dosname2(PC),a1
	jsr	-96(a6)
	tst.l	d0
	beq.S	error
	move.l	d0,a0
	move.l	$16(a0),a0
	moveq	#0,d0
halt:	rts
error:	moveq	#-1,d0
	bra.S	halt
dosname2:	dc.b	'dos.library',0
	
dc.b `Disk installed by AntiCicloVir V2.3`,0
dc.b `-> Der Beste im Norden !!!`,0,0,0,0,0,0,0,0,0
dc.b `Send new viruses to Matthias Gutt * Kantstr. 16 `,0
dc.b `* 21335 Lueneburg * Germany`,0
blk.b 900,0

